解决测试计划性能测试相关bug

This commit is contained in:
liangdaliang
2025-05-28 13:24:19 +08:00
parent 426ee6aae9
commit c71b9d8c63
5 changed files with 47 additions and 23 deletions

View File

@@ -283,6 +283,9 @@ public class JMeterGroupUtil {
threadGroup.setDelay(0);
if (executeType == 1) {
threadGroup.setDuration(pressureSecond);
threadGroup.setProperty(new TestElementProperty(ThreadGroup.MAIN_CONTROLLER, createLoopController(-1)));
threadGroup.setProperty(new StringProperty(ThreadGroup.SCHEDULER, "true"));
threadGroup.setProperty(new StringProperty(ThreadGroup.IS_SAME_USER_ON_NEXT_ITERATION, "true"));
} else {
threadGroup.setProperty(new TestElementProperty(ThreadGroup.MAIN_CONTROLLER, createLoopController(loops)));
}

View File

@@ -1,8 +1,12 @@
package com.test.test.controller;
import java.util.List;
import com.test.common.annotation.Log;
import com.test.common.core.controller.BaseController;
import com.test.common.core.domain.AjaxResult;
import com.test.common.core.page.TableDataInfo;
import com.test.common.enums.BusinessType;
import com.test.common.utils.StringUtils;
import com.test.common.utils.poi.ExcelUtil;
import com.test.test.domain.PerformanceTest;
import com.test.test.domain.TestCase;
import com.test.test.domain.qo.PerformanceTestQO;
@@ -13,16 +17,12 @@ import com.test.test.service.ITestCaseService;
import com.test.test.task.DynamicTaskManager;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import com.test.common.annotation.Log;
import com.test.common.core.controller.BaseController;
import com.test.common.core.domain.AjaxResult;
import com.test.common.enums.BusinessType;
import com.test.common.utils.poi.ExcelUtil;
import com.test.common.core.page.TableDataInfo;
import java.util.List;
import java.util.concurrent.CompletableFuture;
/**
* 性能测试Controller
@@ -134,8 +134,12 @@ public class PerformanceTestController extends BaseController {
}
// 执行性能测试
try {
Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
return success(l1);
CompletableFuture.runAsync(() -> {
performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
});
return toAjax(true);
// Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
// return success(l1);
} catch (Exception e) {
log.error("执行失败!", e);
return error("执行失败!");
@@ -195,8 +199,12 @@ public class PerformanceTestController extends BaseController {
dynamicTaskManager.updateTask(entity);
}
try {
Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
return success(l1);
CompletableFuture.runAsync(() -> {
performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
});
return toAjax(true);
// Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(l, jmeterHomePath, 2);
// return success(l1);
} catch (Exception e) {
log.error("执行失败!", e);
return error("执行失败!");
@@ -224,7 +232,11 @@ public class PerformanceTestController extends BaseController {
// @PreAuthorize("@ss.hasPermi('system:test:remove')")
@GetMapping("/executeNow")
public AjaxResult executeNow(@RequestParam Long id) {
Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(id, jmeterHomePath, 2);
return success(l1);
CompletableFuture.runAsync(() -> {
performanceTestCaseReportService.executePerformanceTestAndReport(id, jmeterHomePath, 2);
});
return toAjax(true);
// Long l1 = performanceTestCaseReportService.executePerformanceTestAndReport(id, jmeterHomePath, 2);
// return success(l1);
}
}

View File

@@ -74,6 +74,6 @@ export function editAndExecuteTest(data) {
export function executeTest(query) {
return request({
url: '/test/performanceTest/executeNow?id=' + query,
method: 'get',
method: 'get'
})
}

View File

@@ -5,7 +5,7 @@
<div class="name-wrap">测试名称</div>
<el-input v-model="addForm.performanceName" placeholder="请输入名称" maxlength="255" show-word-limit></el-input>
</div>
<div class="save">
<div class="save" v-loading="loading">
<el-button type="primary" plain @click="handleWithSave">保存</el-button>
<el-button type="primary" plain @click="handleWithSaveAndExecute">保存并执行</el-button>
<el-button type="primary" plain @click="handleWithExecute">立即执行</el-button>
@@ -166,6 +166,7 @@ export default {
crontabStatus: '0', // 定时任务状态0关闭1开启默认0
loopCount: '0', // 迭代次数默认0
},
loading: false,
activeName: 'first',
sceneList: [], // 场景列表
dialogVisible: false, // 场景列表
@@ -247,6 +248,7 @@ export default {
this.$message({ message: '请输入Crontab表达式', type: 'warning' })
return
}
this.loading = true;
editAndExecuteTest(this.addForm).then(res => {
if (res.code === 200) {
this.$message({ message: '编辑成功', type: 'success' })
@@ -254,17 +256,22 @@ export default {
} else {
this.$message({ message: '编辑失败', type: 'error' })
}
}).finally(() => {
this.loading = false;
})
},
// 立即执行
handleWithExecute() {
this.loading = true;
executeTest(this.$route.query.id).then(res => {
if (res.code === 200) {
this.$message({ message: '执行成功', type: 'success' })
this.$tab.closeOpenPage({ path: "/performance/performance" });
// this.$tab.closeOpenPage({ path: "/performance/performance" });
} else {
this.$message({ message: '执行失败', type: 'error' })
}
}).finally(() => {
this.loading = false;
})
},
// 取消

View File

@@ -145,9 +145,9 @@ export default {
this.getList();
},
relateCaseVue() {
this.open = true;
this.reset();
this.$refs.relateCase.getList()
// this.open = true;
// this.reset();
// this.$refs.relateCase.getList()
},
/** 查询列表 */
getList() {
@@ -176,7 +176,9 @@ export default {
return runTestPlanCase(queryParams);
}).then((res) => {
this.$modal.msgSuccess("提交执行成功");
this.open = true;
// this.open = true;
this.loading = false;
}).finally(() => {
this.loading = false;
});
},