fix(测试计划): 解决多个节点执行测试计划任务出现死锁问题

This commit is contained in:
fit2-zhao 2022-02-16 14:05:52 +08:00 committed by fit2-zhao
parent 4548559992
commit f5466429a3
4 changed files with 12 additions and 16 deletions

View File

@ -159,12 +159,14 @@ public class MsScenario extends MsTestElement {
if (CollectionUtils.isNotEmpty(hashTree)) {
for (MsTestElement el : hashTree) {
el.setParent(this);
el.setMockEnvironment(this.isMockEnvironment());
if (this.isEnvironmentEnable()) {
el.toHashTree(scenarioTree, el.getHashTree(), newConfig);
} else {
el.toHashTree(scenarioTree, el.getHashTree(), config);
if (el != null) {
el.setParent(this);
el.setMockEnvironment(this.isMockEnvironment());
if (this.isEnvironmentEnable()) {
el.toHashTree(scenarioTree, el.getHashTree(), newConfig);
} else {
el.toHashTree(scenarioTree, el.getHashTree(), config);
}
}
}
}

View File

@ -4,7 +4,6 @@ package io.metersphere.api.jmeter;
import io.metersphere.api.exec.queue.PoolExecBlockingQueueUtil;
import io.metersphere.api.service.ApiExecutionQueueService;
import io.metersphere.api.service.TestResultService;
import io.metersphere.commons.constants.ApiRunMode;
import io.metersphere.commons.utils.CommonBeanFactory;
import io.metersphere.dto.ResultDTO;
import io.metersphere.jmeter.MsExecListener;
@ -22,13 +21,6 @@ public class APISingleResultListener extends MsExecListener {
LoggerUtil.info("处理单条执行结果报告【" + dto.getReportId() + " 】,资源【 " + dto.getTestId() + "");
dto.setConsole(FixedCapacityUtils.getJmeterLogger(dto.getReportId()));
CommonBeanFactory.getBean(TestResultService.class).saveResults(dto);
// 更新报告最后接收到请求的时间
if (StringUtils.equalsAny(dto.getRunMode(), ApiRunMode.SCENARIO.name(),
ApiRunMode.SCENARIO_PLAN.name(), ApiRunMode.SCHEDULE_SCENARIO_PLAN.name(),
ApiRunMode.SCHEDULE_SCENARIO.name(), ApiRunMode.JENKINS_SCENARIO_PLAN.name())) {
CommonBeanFactory.getBean(TestResultService.class).editReportTime(dto);
}
}
@Override

View File

@ -610,8 +610,9 @@ public class TestPlanReportService {
try {
//更新TestPlan状态为完成
TestPlanWithBLOBs testPlan = testPlanMapper.selectByPrimaryKey(report.getTestPlanId());
if (testPlan != null) {
testPlanService.checkStatus(testPlan);
if (testPlan != null && !StringUtils.equals(testPlan.getStatus(), TestPlanStatus.Completed.name())) {
testPlan.setStatus(TestPlanStatus.Completed.name());
testPlanService.editTestPlan(testPlan);
}
if (testPlan != null && StringUtils.equalsAny(report.getTriggerMode(),
ReportTriggerMode.MANUAL.name(),

View File

@ -0,0 +1 @@
alter table api_execution_queue_detail add index queue_id_test_id_index(queue_id,test_id);