fix(测试跟踪): 测试计划性能测试用例执行完成状态未更新

--bug=1024523 --user=李玉号 【测试跟踪】测试计划-性能测试用例-执行完成-执行状态仍显示为run
https://www.tapd.cn/55049933/s/1351482
This commit is contained in:
shiziyuan9527 2023-03-16 15:15:28 +08:00 committed by lyh
parent b408e5ac9f
commit f9a916f47f
5 changed files with 20 additions and 15 deletions

View File

@ -347,7 +347,7 @@ export default {
"the data you checked does not detect a scheduled task",
load_case: {
case: "Load Case",
execution_status: "Execution status",
execution_status: "Execution result",
report: "report",
view_report: "View report",
unlink_in_bulk: "Unlink in bulk",

View File

@ -313,7 +313,7 @@ export default {
no_check_schedule_enabled: "您勾选的数据没有检测到定时任务",
load_case: {
case: "性能用例",
execution_status: "执行状态",
execution_status: "执行结果",
report: "报告",
view_report: "查看报告",
unlink_in_bulk: "批量取消关联",

View File

@ -312,7 +312,7 @@ export default {
no_check_schedule_enabled: "您勾選的數據沒有檢測到定時任務",
load_case: {
case: "性能用例",
execution_status: "執行狀態",
execution_status: "執行結果",
report: "報告",
view_report: "查看報告",
unlink_in_bulk: "批量取消關聯",

View File

@ -1,9 +1,10 @@
package io.metersphere.plan.notice;
import io.metersphere.base.domain.LoadTestReport;
import io.metersphere.base.domain.TestPlanLoadCase;
import io.metersphere.base.domain.TestPlanLoadCaseExample;
import io.metersphere.base.domain.TestPlanLoadCaseWithBLOBs;
import io.metersphere.base.mapper.TestPlanLoadCaseMapper;
import io.metersphere.base.mapper.ext.ExtTestPlanLoadCaseMapper;
import io.metersphere.commons.constants.PerformanceTestStatus;
import io.metersphere.commons.constants.ReportTriggerMode;
import io.metersphere.commons.constants.TestPlanLoadCaseStatus;
@ -16,12 +17,16 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Component
@Transactional(rollbackFor = Exception.class)
public class LoadReportStatusEvent implements LoadTestFinishEvent {
@Resource
private TestPlanLoadCaseMapper testPlanLoadCaseMapper;
@Resource
private ExtTestPlanLoadCaseMapper extTestPlanLoadCaseMapper;
private void updateLoadCaseStatus(LoadTestReport loadTestReport) {
String reportId = loadTestReport.getId();
@ -37,17 +42,17 @@ public class LoadReportStatusEvent implements LoadTestFinishEvent {
LogUtil.info("update plan load case status: " + result);
// 更新测试计划关联数据状态
TestPlanLoadCaseExample example = new TestPlanLoadCaseExample();
example.createCriteria().andIdEqualTo(loadTestReport.getTestId());
example.createCriteria().andLoadReportIdEqualTo(reportId);
if (testPlanLoadCaseMapper.countByExample(example) > 0) {
TestPlanLoadCaseWithBLOBs loadCase = new TestPlanLoadCaseWithBLOBs();
loadCase.setId(loadTestReport.getTestId());
loadCase.setStatus(TestPlanLoadCaseStatus.success.name());
testPlanLoadCaseMapper.updateByPrimaryKeySelective(loadCase);
LogUtil.info("Execute test_plan_load_case OVER. Now send kafka to Test_Track. key:" + loadCase.getId());
PerfQueueService perfQueueService = CommonBeanFactory.getBean(PerfQueueService.class);
if (perfQueueService != null) {
perfQueueService.checkTestPlanLoadCaseExecOver(loadCase.getId(), null);
}
extTestPlanLoadCaseMapper.updateCaseStatus(reportId, result);
List<TestPlanLoadCase> testPlanLoadCaseList = testPlanLoadCaseMapper.selectByExample(example);
testPlanLoadCaseList.forEach(item ->{
LogUtil.info("Execute test_plan_load_case OVER. Now send kafka to Test_Track. key:" + item.getId());
PerfQueueService perfQueueService = CommonBeanFactory.getBean(PerfQueueService.class);
if (perfQueueService != null) {
perfQueueService.checkTestPlanLoadCaseExecOver(item.getId(), null);
}
});
}
}
}

View File

@ -239,7 +239,7 @@ public class TestCaseSyncStatusUtil {
errorStatus = execResult;
} else if (StringUtils.equalsIgnoreCase(ApiReportStatus.FAKE_ERROR.name(), execResult.getExecResult())) {
fakeErrorStatus = execResult;
} else if (StringUtils.equalsAnyIgnoreCase(execResult.getExecResult(), ApiReportStatus.FAKE_ERROR.name(), TestPlanStatus.Completed.name())) {
} else if (StringUtils.equalsAnyIgnoreCase(execResult.getExecResult(), ApiReportStatus.SUCCESS.name(), TestPlanStatus.Completed.name())) {
successStatus = execResult;
} else if (StringUtils.isEmpty(execResult.getExecResult())) {
hasNoneStatus = true;