测试平台MeterSphere源码入门

前端代码结构
├── package.json        #Vue的模块依赖定义
├── pom.xml				#Maven前后端打包的定义与依赖
├── public
├── src					#前端核心代码
│	├── assets			#静态图片资源
│	├── business
│	│   ├── App.vue			#根组件
│	│   ├── components		#功能页面目录
│	│		│	├── api		#接口测试
│	│		│	├── common	 #公共和主框架					
│	│		│	├── performance #性能测试
│	│		│	├── project     #项目管理
│	│		│	├── settings    #系统设置
│	│		│	├── track       #测试跟踪
│	│		│	└── xpack       #商业化功能
│	│   ├── index.html		   #主页,项目入口
│	│   ├── main.js				#入口文件
│	│   ├── permission.js
│	│   └── store.js
│	├── common    				#静态资源
│	│   ├── css
│	│   └── js
│	├── i18n  						#国际化
│	└── login						  #登录
│	    ├── Login.vue
│	    ├── login.html
│	    └── login.js
├── vue.config.js				#vue配置类

性能测试运行后端代码简析

  1. 前端点击【保存并运行】
frontend/src/business/components/performance/test/EditPerformanceTest.vue

    saveAndRun() {
      ......
      this.result = this.$request(options, (response) => {
        this.test.id = response.data;
        this.$success(this.$t('commons.save_success'));
        this.result = this.$post(this.runPath, {id: this.test.id, triggerMode: 'MANUAL'}, (response) => {
      ......
  1. 请求后端/performance/run
backend/src/main/java/io/metersphere/performance/controller/PerformanceTestController.java

image

# 启动前会检查kafka是否可用
PerformanceTestService.checkKafka()
# 守护进程等待压测任务完成,刷新数据库数据
PerformanceNoticeTask.registerNoticeTask(LoadTestReportWithBLOBs) 
  1. 请求node-controller
#使用jmeter容器发起压测请求,结果数据会保存到kafka
PerformanceTestService.startEngine(LoadTestWithBLOBs, Engine, String)
DockerTestEngine.start() 
    ......
    String uri = String.format(BASE_URL + "/jmeter/container/start", nodeIp, port);
    ......

image

  1. data-streaming项目消费kafka数据
生成测试结果数据 load_test_report_detail和load_test_report_result
修改数据库中testId的测试状态
registerNoticeTask轮休数据库状态变化完成压力测试

官方代码结构

├── Dockerfile                                      # 构建容器镜像使用的 dockerfile
├── LICENSE
├── README.md
├── ROADMAP.md
├── backend                                         # 后端项目主目录
│   ├── backend.iml
│   ├── pom.xml                                     # 后端 maven 项目使用的 pom 文件
│   └── src                                         # 后端代码目录
├── frontend                                        # 前端项目主目录
  ├── babel.config.js
│   ├── frontend.iml
│   ├── node
│   ├── node_modules
│   ├── package-lock.json
│   ├── package.json
│   ├── pom.xml                                     # 前端 maven 项目使用的 pom 文件
│   ├── public
│   └── src                                         # 前端代码目录
├── metersphere-server.iml
└── pom.xml                                         # 整体 maven 项目使用的 pom 文件

扫一扫,关注我

原文地址:https://www.cnblogs.com/hally/p/14186626.html