diff --git a/backend/src/main/java/io/metersphere/performance/service/PerformanceReportService.java b/backend/src/main/java/io/metersphere/performance/service/PerformanceReportService.java index f0a834c648..bf702863cd 100644 --- a/backend/src/main/java/io/metersphere/performance/service/PerformanceReportService.java +++ b/backend/src/main/java/io/metersphere/performance/service/PerformanceReportService.java @@ -82,6 +82,8 @@ public class PerformanceReportService { private RedissonClient redissonClient; @Resource private ProjectMapper projectMapper; + @Resource + private LoadTestReportFileMapper loadTestReportFileMapper; public List getRecentReportList(ReportRequest request) { List orders = new ArrayList<>(); @@ -152,6 +154,11 @@ public class PerformanceReportService { example.createCriteria().andReportIdEqualTo(reportId); loadTestReportDetailMapper.deleteByExample(example); + // delete load_test_report_file + LoadTestReportFileExample loadTestReportFileExample = new LoadTestReportFileExample(); + loadTestReportFileExample.createCriteria().andReportIdEqualTo(reportId); + loadTestReportFileMapper.deleteByExample(loadTestReportFileExample); + // delete load_test_report_log LoadTestReportLogExample loadTestReportLogExample = new LoadTestReportLogExample(); loadTestReportLogExample.createCriteria().andReportIdEqualTo(reportId); diff --git a/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java b/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java index cbe8932445..e5408d63bd 100644 --- a/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java +++ b/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java @@ -130,6 +130,8 @@ public class PerformanceTestService { private ExtProjectVersionMapper extProjectVersionMapper; @Resource private RedissonClient redissonClient; + @Resource + private LoadTestReportFileMapper loadTestReportFileMapper; public List list(QueryTestPlanRequest request) { request.setOrders(ServiceUtils.getDefaultSortOrder(request.getOrders())); @@ -509,12 +511,14 @@ public class PerformanceTestService { reportResult.setReportValue("Ready"); // 初始化一个 result_status, 这个值用在data-streaming中 loadTestReportResultMapper.insertSelective(reportResult); // 保存标记 - LoadTestReportResult rr = new LoadTestReportResult(); + LoadTestReportResult rr = new LoadTestReportResult(); rr.setId(UUID.randomUUID().toString()); rr.setReportId(testReport.getId()); rr.setReportKey(ReportKeys.VumProcessedStatus.name()); rr.setReportValue(VumProcessedStatus.NOT_PROCESSED); // 避免测试运行出错时,对报告重复处理vum_used值 loadTestReportResultMapper.insertSelective(rr); + // 保存执行当时的file + saveLoadTestReportFiles(testReport); // 检查配额 this.checkLoadQuota(testReport, engine); return testReport.getId(); @@ -532,6 +536,19 @@ public class PerformanceTestService { } } + private void saveLoadTestReportFiles(LoadTestReport report) { + LoadTestFileExample example = new LoadTestFileExample(); + example.createCriteria().andTestIdEqualTo(report.getTestId()); + List files = loadTestFileMapper.selectByExample(example); + files.forEach(f -> { + LoadTestReportFile record = new LoadTestReportFile(); + record.setFileId(f.getFileId()); + record.setSort(f.getSort()); + record.setReportId(report.getId()); + loadTestReportFileMapper.insert(record); + }); + } + private void checkLoadQuota(LoadTestReportWithBLOBs testReport, Engine engine) { RunTestPlanRequest checkRequest = new RunTestPlanRequest(); QuotaService quotaService = CommonBeanFactory.getBean(QuotaService.class);