前端代码结构
├── 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 文件

扫一扫,关注我


↙↙↙阅读原文可查看相关链接,并与作者交流