feat(接口测试): 初始化任务和报告的中间表
This commit is contained in:
parent
710d51a0bc
commit
d6c94f3986
|
@ -102,7 +102,7 @@ public class ApiScenarioScheduleJob extends BaseScheduleJob {
|
|||
scenarioReport.setEnvironmentId(parseParam.getEnvironmentId());
|
||||
scenarioReport.setWaitingTime(apiScenarioRunService.getGlobalWaitTime(parseParam.getScenarioConfig()));
|
||||
|
||||
apiScenarioRunService.initApiReport(apiScenarioDetail, scenarioReport);
|
||||
apiScenarioRunService.initApiReport(taskItem.getId(), apiScenarioDetail, scenarioReport);
|
||||
|
||||
// 初始化报告步骤
|
||||
apiScenarioRunService.initScenarioReportSteps(apiScenarioDetail.getSteps(), taskItem.getReportId());
|
||||
|
|
|
@ -65,14 +65,27 @@ public class ApiReportService {
|
|||
private EnvironmentGroupMapper environmentGroupMapper;
|
||||
@Resource
|
||||
private ApiReportNoticeService apiReportNoticeService;
|
||||
@Resource
|
||||
private ApiReportRelateTaskMapper apiReportRelateTaskMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiReport(ApiReport report) {
|
||||
apiReportMapper.insertSelective(report);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiReport(ApiReport report, ApiReportRelateTask taskRelation) {
|
||||
apiReportMapper.insertSelective(report);
|
||||
apiReportRelateTaskMapper.insertSelective(taskRelation);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiReport(List<ApiReport> reports, List<ApiTestCaseRecord> records) {
|
||||
this.insertApiReport(reports, records, null);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiReport(List<ApiReport> reports, List<ApiTestCaseRecord> records, List<ApiReportRelateTask> taskRelations) {
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
if (CollectionUtils.isNotEmpty(reports)) {
|
||||
ApiReportMapper reportMapper = sqlSession.getMapper(ApiReportMapper.class);
|
||||
|
@ -86,6 +99,13 @@ public class ApiReportService {
|
|||
subList.forEach(detailMapper::insertSelective);
|
||||
});
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskRelations)) {
|
||||
ApiReportRelateTaskMapper taskRelationMapper = sqlSession.getMapper(ApiReportRelateTaskMapper.class);
|
||||
SubListUtils.dealForSubList(taskRelations, 1000, subList -> {
|
||||
subList.forEach(taskRelationMapper::insertSelective);
|
||||
});
|
||||
}
|
||||
sqlSession.flushStatements();
|
||||
if (sqlSessionFactory != null) {
|
||||
SqlSessionUtils.closeSqlSession(sqlSession, sqlSessionFactory);
|
||||
|
|
|
@ -107,7 +107,7 @@ public class ApiTestCaseBatchRunService {
|
|||
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 初始化集成报告
|
||||
initIntegratedReport(runModeConfig, userId, request.getProjectId());
|
||||
initIntegratedReport(execTask.getId(), runModeConfig, userId, request.getProjectId());
|
||||
}
|
||||
|
||||
// 先初始化集成报告,设置好报告ID,再初始化执行队列
|
||||
|
@ -178,16 +178,16 @@ public class ApiTestCaseBatchRunService {
|
|||
|
||||
ApiRunModeConfigDTO runModeConfig = getRunModeConfig(request);
|
||||
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 初始化集成报告
|
||||
initIntegratedReport(runModeConfig, ids, userId, request.getProjectId());
|
||||
}
|
||||
|
||||
Project project = projectMapper.selectByPrimaryKey(request.getProjectId());
|
||||
|
||||
// 初始化任务
|
||||
ExecTask execTask = initExecTask(ids, runModeConfig, project, userId);
|
||||
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 初始化集成报告
|
||||
initIntegratedReport(execTask.getId(), runModeConfig, ids, userId, request.getProjectId());
|
||||
}
|
||||
|
||||
// 分批查询
|
||||
SubListUtils.dealForSubList(ids, TASK_BATCH_SIZE, subIds -> {
|
||||
List<ApiTestCase> apiTestCases = getOrderApiTestCases(subIds, runModeConfig);
|
||||
|
@ -197,7 +197,7 @@ public class ApiTestCaseBatchRunService {
|
|||
.collect(Collectors.toMap(ExecTaskItem::getResourceId, ExecTaskItem::getId));
|
||||
|
||||
// 初始化报告,返回用例和报告的 map
|
||||
Map<String, String> caseReportMap = initParallelReport(runModeConfig, apiTestCases, userId);
|
||||
Map<String, String> caseReportMap = initParallelReport(resourceExecTaskItemMap, runModeConfig, apiTestCases, userId);
|
||||
|
||||
List<TaskItem> taskItems = new ArrayList<>(subIds.size());
|
||||
|
||||
|
@ -254,7 +254,7 @@ public class ApiTestCaseBatchRunService {
|
|||
return apiTestCases;
|
||||
}
|
||||
|
||||
private Map<String, String> initParallelReport(ApiRunModeConfigDTO runModeConfig, List<ApiTestCase> apiTestCases, String userId) {
|
||||
private Map<String, String> initParallelReport(Map<String, String> resourceExecTaskItemMap, ApiRunModeConfigDTO runModeConfig, List<ApiTestCase> apiTestCases, String userId) {
|
||||
// 先初始化所有报告
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 获取集成报告ID
|
||||
|
@ -263,7 +263,7 @@ public class ApiTestCaseBatchRunService {
|
|||
return null;
|
||||
} else {
|
||||
// 初始化非集成报告
|
||||
List<ApiTestCaseRecord> apiTestCaseRecords = initApiReport(runModeConfig, apiTestCases, userId);
|
||||
List<ApiTestCaseRecord> apiTestCaseRecords = initApiReport(resourceExecTaskItemMap, runModeConfig, apiTestCases, userId);
|
||||
return apiTestCaseRecords.stream()
|
||||
.collect(Collectors.toMap(ApiTestCaseRecord::getApiTestCaseId, ApiTestCaseRecord::getApiReportId));
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ public class ApiTestCaseBatchRunService {
|
|||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
private ApiReport initIntegratedReport(ApiRunModeConfigDTO runModeConfig, List<String> ids, String userId, String projectId) {
|
||||
private ApiReport initIntegratedReport(String taskId, ApiRunModeConfigDTO runModeConfig, List<String> ids, String userId, String projectId) {
|
||||
ApiReport apiReport = getApiReport(runModeConfig, userId);
|
||||
apiReport.setName(runModeConfig.getCollectionReport().getReportName() + "_" + DateUtils.getTimeString(System.currentTimeMillis()));
|
||||
apiReport.setIntegrated(true);
|
||||
|
@ -320,7 +320,13 @@ public class ApiTestCaseBatchRunService {
|
|||
record.setApiTestCaseId(id);
|
||||
return record;
|
||||
}).toList();
|
||||
apiReportService.insertApiReport(List.of(apiReport), records);
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskId);
|
||||
|
||||
apiReportService.insertApiReport(List.of(apiReport), records, List.of(apiReportRelateTask));
|
||||
// 设置集成报告执行参数
|
||||
runModeConfig.getCollectionReport().setReportId(apiReport.getId());
|
||||
return apiReport;
|
||||
|
@ -332,12 +338,18 @@ public class ApiTestCaseBatchRunService {
|
|||
* @param runModeConfig
|
||||
* @return
|
||||
*/
|
||||
private ApiReport initIntegratedReport(ApiRunModeConfigDTO runModeConfig, String userId, String projectId) {
|
||||
private ApiReport initIntegratedReport(String taskId, ApiRunModeConfigDTO runModeConfig, String userId, String projectId) {
|
||||
ApiReport apiReport = getApiReport(runModeConfig, userId);
|
||||
apiReport.setName(runModeConfig.getCollectionReport().getReportName() + "_" + DateUtils.getTimeString(System.currentTimeMillis()));
|
||||
apiReport.setIntegrated(true);
|
||||
apiReport.setProjectId(projectId);
|
||||
apiReportService.insertApiReport(apiReport);
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskId);
|
||||
|
||||
apiReportService.insertApiReport(apiReport, apiReportRelateTask);
|
||||
// 设置集成报告执行参数
|
||||
runModeConfig.getCollectionReport().setReportId(apiReport.getId());
|
||||
return apiReport;
|
||||
|
@ -381,7 +393,7 @@ public class ApiTestCaseBatchRunService {
|
|||
reportId = runModeConfig.getCollectionReport().getReportId() + IDGenerator.nextStr();
|
||||
} else {
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
reportId = initApiReport(runModeConfig, List.of(apiTestCase), queue.getUserId()).getFirst().getApiReportId();
|
||||
reportId = initApiReport(Map.of(apiTestCase.getId(), taskItemId), runModeConfig, List.of(apiTestCase), queue.getUserId()).getFirst().getApiReportId();
|
||||
}
|
||||
|
||||
if (apiTestCase == null) {
|
||||
|
@ -428,10 +440,12 @@ public class ApiTestCaseBatchRunService {
|
|||
* @param apiTestCases
|
||||
* @return
|
||||
*/
|
||||
public List<ApiTestCaseRecord> initApiReport(ApiRunModeConfigDTO runModeConfig, List<ApiTestCase> apiTestCases, String userId) {
|
||||
public List<ApiTestCaseRecord> initApiReport(Map<String, String> resourceExecTaskItemMap,
|
||||
ApiRunModeConfigDTO runModeConfig, List<ApiTestCase> apiTestCases, String userId) {
|
||||
List<ApiReport> apiReports = new ArrayList<>();
|
||||
List<ApiTestCaseRecord> apiTestCaseRecords = new ArrayList<>();
|
||||
List<ApiReportStep> apiReportSteps = new ArrayList<>();
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>();
|
||||
for (ApiTestCase apiTestCase : apiTestCases) {
|
||||
// 初始化报告
|
||||
ApiReport apiReport = getApiReport(runModeConfig, apiTestCase, userId);
|
||||
|
@ -440,8 +454,15 @@ public class ApiTestCaseBatchRunService {
|
|||
ApiTestCaseRecord apiTestCaseRecord = apiTestCaseService.getApiTestCaseRecord(apiTestCase, apiReport);
|
||||
apiTestCaseRecords.add(apiTestCaseRecord);
|
||||
apiReportSteps.add(getApiReportStep(apiTestCase, apiReport.getId(), 1));
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiTestCase.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords);
|
||||
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords, apiReportRelateTasks);
|
||||
apiReportService.insertApiReportStep(apiReportSteps);
|
||||
return apiTestCaseRecords;
|
||||
}
|
||||
|
|
|
@ -760,7 +760,7 @@ public class ApiTestCaseService extends MoveNodeService {
|
|||
}
|
||||
|
||||
// 初始化报告
|
||||
initApiReport(apiTestCase, reportId, poolId, userId);
|
||||
initApiReport(taskItem.getId(), apiTestCase, reportId, poolId, userId);
|
||||
|
||||
return doExecute(taskRequest, runRequest, apiTestCase.getApiDefinitionId(), apiTestCase.getEnvironmentId());
|
||||
}
|
||||
|
@ -861,7 +861,7 @@ public class ApiTestCaseService extends MoveNodeService {
|
|||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
public ApiTestCaseRecord initApiReport(ApiTestCase apiTestCase, String reportId, String poolId, String userId) {
|
||||
public ApiTestCaseRecord initApiReport(String taskItemId, ApiTestCase apiTestCase, String reportId, String poolId, String userId) {
|
||||
|
||||
// 初始化报告
|
||||
ApiReport apiReport = getApiReport(apiTestCase, reportId, poolId, userId);
|
||||
|
@ -869,9 +869,15 @@ public class ApiTestCaseService extends MoveNodeService {
|
|||
// 创建报告和用例的关联关系
|
||||
ApiTestCaseRecord apiTestCaseRecord = getApiTestCaseRecord(apiTestCase, apiReport);
|
||||
|
||||
apiReportService.insertApiReport(List.of(apiReport), List.of(apiTestCaseRecord));
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(reportId);
|
||||
apiReportRelateTask.setTaskResourceId(taskItemId);
|
||||
|
||||
apiReportService.insertApiReport(List.of(apiReport), List.of(apiTestCaseRecord), List.of(apiReportRelateTask));
|
||||
//初始化步骤
|
||||
apiReportService.insertApiReportStep(List.of(getApiReportStep(apiTestCase.getId(), apiTestCase.getName(), reportId, 1L)));
|
||||
|
||||
return apiTestCaseRecord;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package io.metersphere.api.service.scenario;
|
||||
|
||||
import io.metersphere.api.domain.ApiScenario;
|
||||
import io.metersphere.api.domain.ApiScenarioRecord;
|
||||
import io.metersphere.api.domain.ApiScenarioReport;
|
||||
import io.metersphere.api.domain.ApiScenarioReportStep;
|
||||
import io.metersphere.api.domain.*;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioBatchRunRequest;
|
||||
import io.metersphere.api.dto.scenario.ApiScenarioDetail;
|
||||
import io.metersphere.api.mapper.ApiScenarioMapper;
|
||||
|
@ -115,7 +112,7 @@ public class ApiScenarioBatchRunService {
|
|||
|
||||
// 初始化集成报告
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
initIntegratedReport(runModeConfig, userId, request.getProjectId());
|
||||
initIntegratedReport(execTask.getId(), runModeConfig, userId, request.getProjectId());
|
||||
}
|
||||
|
||||
// 先初始化集成报告,设置好报告ID,再初始化执行队列
|
||||
|
@ -136,8 +133,12 @@ public class ApiScenarioBatchRunService {
|
|||
// 集合报告初始化一级步骤
|
||||
initApiScenarioReportStep(apiScenarios, reportId);
|
||||
} else {
|
||||
// 初始化任务项
|
||||
Map<String, String> resourceExecTaskItemMap = execTaskItems
|
||||
.stream()
|
||||
.collect(Collectors.toMap(ExecTaskItem::getResourceId, ExecTaskItem::getId));
|
||||
// 非集合报告,初始化独立报告,执行时初始化步骤
|
||||
initScenarioReport(runModeConfig, apiScenarios, userId);
|
||||
initScenarioReport(resourceExecTaskItemMap, runModeConfig, apiScenarios, userId);
|
||||
}
|
||||
// 初始化队列项
|
||||
apiBatchRunBaseService.initExecutionQueueDetails(queue.getQueueId(), execTaskItems);
|
||||
|
@ -165,26 +166,27 @@ public class ApiScenarioBatchRunService {
|
|||
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 初始化集成报告
|
||||
initIntegratedReport(runModeConfig, userId, request.getProjectId());
|
||||
initIntegratedReport(execTask.getId(), runModeConfig, userId, request.getProjectId());
|
||||
}
|
||||
|
||||
// 分批查询
|
||||
SubListUtils.dealForSubList(ids, TASK_BATCH_SIZE, subIds -> {
|
||||
List<ApiScenario> apiScenarios = getOrderScenarios(subIds, runModeConfig);
|
||||
Map<String, String> caseReportMap = null;
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 集合报告初始化一级步骤
|
||||
initApiScenarioReportStep(apiScenarios, runModeConfig.getCollectionReport().getReportId());
|
||||
} else {
|
||||
// 非集合报告,初始化独立报告,执行时初始化步骤
|
||||
caseReportMap = initScenarioReport(runModeConfig, apiScenarios, userId);
|
||||
}
|
||||
|
||||
// 初始化任务项
|
||||
Map<String, String> resourceExecTaskItemMap = initExecTaskItem(subIds, apiScenarios, userId, project, execTask)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(ExecTaskItem::getResourceId, ExecTaskItem::getId));
|
||||
|
||||
if (runModeConfig.isIntegratedReport()) {
|
||||
// 集合报告初始化一级步骤
|
||||
initApiScenarioReportStep(apiScenarios, runModeConfig.getCollectionReport().getReportId());
|
||||
} else {
|
||||
// 非集合报告,初始化独立报告,执行时初始化步骤
|
||||
caseReportMap = initScenarioReport(resourceExecTaskItemMap, runModeConfig, apiScenarios, userId);
|
||||
}
|
||||
|
||||
List<TaskItem> taskItems = new ArrayList<>(ids.size());
|
||||
|
||||
for (ApiScenario apiScenario : apiScenarios) {
|
||||
|
@ -302,12 +304,18 @@ public class ApiScenarioBatchRunService {
|
|||
* @param runModeConfig
|
||||
* @return
|
||||
*/
|
||||
private ApiScenarioReport initIntegratedReport(ApiRunModeConfigDTO runModeConfig, String userId, String projectId) {
|
||||
private ApiScenarioReport initIntegratedReport(String taskId, ApiRunModeConfigDTO runModeConfig, String userId, String projectId) {
|
||||
ApiScenarioReport apiScenarioReport = getScenarioReport(runModeConfig, userId);
|
||||
apiScenarioReport.setName(runModeConfig.getCollectionReport().getReportName() + "_" + DateUtils.getTimeString(System.currentTimeMillis()));
|
||||
apiScenarioReport.setIntegrated(true);
|
||||
apiScenarioReport.setProjectId(projectId);
|
||||
apiScenarioReportMapper.insertSelective(apiScenarioReport);
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskId);
|
||||
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReport, apiReportRelateTask);
|
||||
// 设置集成报告执行参数
|
||||
runModeConfig.getCollectionReport().setReportId(apiScenarioReport.getId());
|
||||
return apiScenarioReport;
|
||||
|
@ -345,7 +353,7 @@ public class ApiScenarioBatchRunService {
|
|||
reportId = runModeConfig.getCollectionReport().getReportId() + IDGenerator.nextStr();
|
||||
} else {
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
reportId = initScenarioReport(runModeConfig, apiScenario, queue.getUserId()).getApiScenarioReportId();
|
||||
reportId = initScenarioReport(queueDetail.getTaskItemId(), runModeConfig, apiScenario, queue.getUserId()).getApiScenarioReportId();
|
||||
}
|
||||
|
||||
TaskRequestDTO taskRequest = getTaskRequestDTO(apiScenario.getProjectId(), queue.getRunModeConfig());
|
||||
|
@ -379,9 +387,11 @@ public class ApiScenarioBatchRunService {
|
|||
return apiBatchRunBaseService.setBatchRunTaskInfoParam(runModeConfig, taskInfo);
|
||||
}
|
||||
|
||||
public Map<String, String> initScenarioReport(ApiRunModeConfigDTO runModeConfig, List<ApiScenario> apiScenarios, String userId) {
|
||||
public Map<String, String> initScenarioReport(Map<String, String> resourceExecTaskItemMap, ApiRunModeConfigDTO runModeConfig,
|
||||
List<ApiScenario> apiScenarios, String userId) {
|
||||
List<ApiScenarioReport> apiScenarioReports = new ArrayList<>(apiScenarios.size());
|
||||
List<ApiScenarioRecord> apiScenarioRecords = new ArrayList<>(apiScenarios.size());
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>();
|
||||
for (ApiScenario apiScenario : apiScenarios) {
|
||||
// 初始化报告
|
||||
ApiScenarioReport apiScenarioReport = getScenarioReport(runModeConfig, apiScenario, userId);
|
||||
|
@ -390,8 +400,13 @@ public class ApiScenarioBatchRunService {
|
|||
// 创建报告和用例的关联关系
|
||||
ApiScenarioRecord apiScenarioRecord = apiScenarioRunService.getApiScenarioRecord(apiScenario, apiScenarioReport);
|
||||
apiScenarioRecords.add(apiScenarioRecord);
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiScenario.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords);
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords, apiReportRelateTasks);
|
||||
return apiScenarioRecords.stream().collect(Collectors.toMap(ApiScenarioRecord::getApiScenarioId, ApiScenarioRecord::getApiScenarioReportId));
|
||||
}
|
||||
|
||||
|
@ -402,13 +417,19 @@ public class ApiScenarioBatchRunService {
|
|||
* @param apiScenario
|
||||
* @return
|
||||
*/
|
||||
public ApiScenarioRecord initScenarioReport(ApiRunModeConfigDTO runModeConfig, ApiScenario apiScenario, String userId) {
|
||||
public ApiScenarioRecord initScenarioReport(String taskItemId, ApiRunModeConfigDTO runModeConfig, ApiScenario apiScenario, String userId) {
|
||||
// 初始化报告
|
||||
ApiScenarioReport apiScenarioReport = getScenarioReport(runModeConfig, apiScenario, userId);
|
||||
apiScenarioReport.setId(IDGenerator.nextStr());
|
||||
// 创建报告和用例的关联关系
|
||||
ApiScenarioRecord apiScenarioRecord = apiScenarioRunService.getApiScenarioRecord(apiScenario, apiScenarioReport);
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(apiScenarioReport), List.of(apiScenarioRecord));
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskItemId);
|
||||
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(apiScenarioReport), List.of(apiScenarioRecord), List.of(apiReportRelateTask));
|
||||
return apiScenarioRecord;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ public class ApiScenarioReportService {
|
|||
@Resource
|
||||
private ApiScenarioReportMapper apiScenarioReportMapper;
|
||||
@Resource
|
||||
private ApiReportRelateTaskMapper apiReportRelateTaskMapper;
|
||||
@Resource
|
||||
private ApiScenarioReportLogService apiScenarioReportLogService;
|
||||
@Resource
|
||||
private ExtApiScenarioReportDetailBlobMapper extApiScenarioReportDetailBlobMapper;
|
||||
|
@ -72,8 +74,19 @@ public class ApiScenarioReportService {
|
|||
private static final int MAX = 50000;
|
||||
private static final int BATCH_SIZE = 1000;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiScenarioReport(ApiScenarioReport report, ApiReportRelateTask taskRelation) {
|
||||
apiScenarioReportMapper.insertSelective(report);
|
||||
apiReportRelateTaskMapper.insertSelective(taskRelation);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiScenarioReport(List<ApiScenarioReport> reports, List<ApiScenarioRecord> records) {
|
||||
this.insertApiScenarioReport(reports, records, null);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public void insertApiScenarioReport(List<ApiScenarioReport> reports, List<ApiScenarioRecord> records, List<ApiReportRelateTask> taskRelations) {
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
if (CollectionUtils.isNotEmpty(reports)) {
|
||||
ApiScenarioReportMapper reportMapper = sqlSession.getMapper(ApiScenarioReportMapper.class);
|
||||
|
@ -87,6 +100,12 @@ public class ApiScenarioReportService {
|
|||
subList.forEach(detailMapper::insertSelective);
|
||||
});
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(taskRelations)) {
|
||||
ApiReportRelateTaskMapper taskRelationMapper = sqlSession.getMapper(ApiReportRelateTaskMapper.class);
|
||||
SubListUtils.dealForSubList(taskRelations, 1000, subList -> {
|
||||
subList.forEach(taskRelationMapper::insertSelective);
|
||||
});
|
||||
}
|
||||
sqlSession.flushStatements();
|
||||
if (sqlSessionFactory != null) {
|
||||
SqlSessionUtils.closeSqlSession(sqlSession, sqlSessionFactory);
|
||||
|
|
|
@ -247,7 +247,7 @@ public class ApiScenarioRunService {
|
|||
scenarioReport.setEnvironmentId(parseParam.getEnvironmentId());
|
||||
scenarioReport.setWaitingTime(getGlobalWaitTime(parseParam.getScenarioConfig()));
|
||||
|
||||
initApiReport(apiScenario, scenarioReport);
|
||||
initApiReport(taskItem.getId(), apiScenario, scenarioReport);
|
||||
|
||||
// 初始化报告步骤
|
||||
initScenarioReportSteps(steps, taskItem.getReportId());
|
||||
|
@ -476,7 +476,7 @@ public class ApiScenarioRunService {
|
|||
* @param apiScenario
|
||||
* @return
|
||||
*/
|
||||
public ApiScenarioRecord initApiReport(ApiScenario apiScenario, ApiScenarioReport scenarioReport) {
|
||||
public ApiScenarioRecord initApiReport(String taskItemId, ApiScenario apiScenario, ApiScenarioReport scenarioReport) {
|
||||
// 初始化报告
|
||||
scenarioReport.setName(apiScenario.getName() + "_" + DateUtils.getTimeString(System.currentTimeMillis()));
|
||||
scenarioReport.setProjectId(apiScenario.getProjectId());
|
||||
|
@ -484,7 +484,12 @@ public class ApiScenarioRunService {
|
|||
// 创建报告和用例的关联关系
|
||||
ApiScenarioRecord scenarioRecord = getApiScenarioRecord(apiScenario, scenarioReport);
|
||||
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(scenarioReport), List.of(scenarioRecord));
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(scenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskItemId);
|
||||
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(scenarioReport), List.of(scenarioRecord), List.of(apiReportRelateTask));
|
||||
return scenarioRecord;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package io.metersphere.plan.service;
|
||||
|
||||
import io.metersphere.api.domain.ApiReport;
|
||||
import io.metersphere.api.domain.ApiReportStep;
|
||||
import io.metersphere.api.domain.ApiTestCase;
|
||||
import io.metersphere.api.domain.ApiTestCaseRecord;
|
||||
import io.metersphere.api.domain.*;
|
||||
import io.metersphere.api.mapper.ApiTestCaseMapper;
|
||||
import io.metersphere.api.mapper.ExtApiTestCaseMapper;
|
||||
import io.metersphere.api.service.ApiBatchRunBaseService;
|
||||
|
@ -146,7 +143,7 @@ public class PlanRunTestPlanApiCaseService {
|
|||
|
||||
ApiRunModeConfigDTO runModeConfig = testPlanApiBatchRunBaseService.getApiRunModeConfig(collection);
|
||||
// 初始化报告,返回用例和报告的 map
|
||||
Map<String, String> caseReportMap = initApiReport(runModeConfig, testPlanReportApiCases, apiCaseMap, userId);
|
||||
Map<String, String> caseReportMap = initApiReport(resourceTaskItemMap, runModeConfig, testPlanReportApiCases, apiCaseMap, userId);
|
||||
|
||||
List<TaskItem> taskItems = new ArrayList<>(testPlanReportApiCases.size());
|
||||
|
||||
|
@ -210,7 +207,7 @@ public class PlanRunTestPlanApiCaseService {
|
|||
ApiTestCase apiTestCase = apiTestCaseMapper.selectByPrimaryKey(testPlanReportApiCase.getApiCaseId());
|
||||
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
String reportId = initApiReport(runModeConfig, List.of(testPlanReportApiCase), Map.of(apiTestCase.getId(), apiTestCase), queue.getUserId()).get(resourceId);
|
||||
String reportId = initApiReport(Map.of(apiTestCase.getId(), queueDetail.getTaskItemId()), runModeConfig, List.of(testPlanReportApiCase), Map.of(apiTestCase.getId(), apiTestCase), queue.getUserId()).get(resourceId);
|
||||
TaskRequestDTO taskRequest = testPlanApiCaseBatchRunService.getTaskRequestDTO(reportId, testPlanReportApiCase.getId(), apiTestCase, runModeConfig);
|
||||
taskRequest.getTaskInfo().setTaskId(queue.getTaskId());
|
||||
taskRequest.getTaskInfo().setResourceType(ApiExecuteResourceType.PLAN_RUN_API_CASE.name());
|
||||
|
@ -229,13 +226,15 @@ public class PlanRunTestPlanApiCaseService {
|
|||
* @param runModeConfig
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> initApiReport(ApiRunModeConfigDTO runModeConfig, List<TestPlanReportApiCase> testPlanReportApiCases,
|
||||
public Map<String, String> initApiReport(Map<String, String> resourceExecTaskItemMap,
|
||||
ApiRunModeConfigDTO runModeConfig, List<TestPlanReportApiCase> testPlanReportApiCases,
|
||||
Map<String, ApiTestCase> caseMap, String userId) {
|
||||
|
||||
Map<String, String> resourceReportMap = new HashMap<>();
|
||||
List<ApiReport> apiReports = new ArrayList<>();
|
||||
List<ApiTestCaseRecord> apiTestCaseRecords = new ArrayList<>();
|
||||
List<ApiReportStep> apiReportSteps = new ArrayList<>();
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>();
|
||||
|
||||
for (TestPlanReportApiCase testPlanReportApiCase : testPlanReportApiCases) {
|
||||
ApiTestCase apiTestCase = caseMap.get(testPlanReportApiCase.getApiCaseId());
|
||||
|
@ -253,8 +252,14 @@ public class PlanRunTestPlanApiCaseService {
|
|||
apiTestCaseRecords.add(apiTestCaseRecord);
|
||||
apiReportSteps.add(testPlanApiCaseBatchRunService.getApiReportStep(testPlanReportApiCase.getId(), apiTestCase.getName(), apiReport.getId(), 1));
|
||||
resourceReportMap.put(testPlanReportApiCase.getId(), apiReport.getId());
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiReport.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords);
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords, apiReportRelateTasks);
|
||||
apiReportService.insertApiReportStep(apiReportSteps);
|
||||
return resourceReportMap;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package io.metersphere.plan.service;
|
||||
|
||||
import io.metersphere.api.domain.ApiReportRelateTask;
|
||||
import io.metersphere.api.domain.ApiScenario;
|
||||
import io.metersphere.api.domain.ApiScenarioRecord;
|
||||
import io.metersphere.api.domain.ApiScenarioReport;
|
||||
|
@ -135,7 +136,7 @@ public class PlanRunTestPlanApiScenarioService {
|
|||
.forEach(execTaskItem -> resourceTaskItemMap.put(execTaskItem.getResourceId(), execTaskItem.getId()));
|
||||
});
|
||||
|
||||
Map<String, String> scenarioReportMap = initReport(testPlanReportApiScenarios, runModeConfig, userId);
|
||||
Map<String, String> scenarioReportMap = initReport(resourceTaskItemMap, testPlanReportApiScenarios, runModeConfig, userId);
|
||||
List<TaskItem> taskItems = testPlanReportApiScenarios.stream()
|
||||
.map(item -> {
|
||||
TaskItem taskItem = apiExecuteService.getTaskItem(scenarioReportMap.get(item.getId()), item.getId());
|
||||
|
@ -152,7 +153,9 @@ public class PlanRunTestPlanApiScenarioService {
|
|||
return false;
|
||||
}
|
||||
|
||||
private Map<String, String> initReport(List<TestPlanReportApiScenario> testPlanReportApiScenarios, ApiRunModeConfigDTO runModeConfig, String userId) {
|
||||
private Map<String, String> initReport(Map<String, String> resourceExecTaskItemMap,
|
||||
List<TestPlanReportApiScenario> testPlanReportApiScenarios,
|
||||
ApiRunModeConfigDTO runModeConfig, String userId) {
|
||||
|
||||
List<ApiScenario> apiScenarios = new ArrayList<>(testPlanReportApiScenarios.size());
|
||||
|
||||
|
@ -165,13 +168,17 @@ public class PlanRunTestPlanApiScenarioService {
|
|||
.collect(Collectors.toMap(ApiScenario::getId, Function.identity()));
|
||||
|
||||
// 初始化独立报告,执行时初始化步骤
|
||||
return initScenarioReport(runModeConfig, testPlanReportApiScenarios, apiScenarioMap, userId);
|
||||
return initScenarioReport(resourceExecTaskItemMap, runModeConfig, testPlanReportApiScenarios, apiScenarioMap, userId);
|
||||
}
|
||||
|
||||
public Map<String, String> initScenarioReport(ApiRunModeConfigDTO runModeConfig, List<TestPlanReportApiScenario> testPlanReportApiScenarios,
|
||||
public Map<String, String> initScenarioReport(Map<String, String> resourceExecTaskItemMap,
|
||||
ApiRunModeConfigDTO runModeConfig,
|
||||
List<TestPlanReportApiScenario> testPlanReportApiScenarios,
|
||||
Map<String, ApiScenario> apiScenarioMap, String userId) {
|
||||
List<ApiScenarioReport> apiScenarioReports = new ArrayList<>(testPlanReportApiScenarios.size());
|
||||
List<ApiScenarioRecord> apiScenarioRecords = new ArrayList<>(testPlanReportApiScenarios.size());
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>();
|
||||
|
||||
Map<String, String> resourceReportMap = new HashMap<>();
|
||||
String projectId = "";
|
||||
for (TestPlanReportApiScenario testPlanReportApiScenario : testPlanReportApiScenarios) {
|
||||
|
@ -191,8 +198,14 @@ public class PlanRunTestPlanApiScenarioService {
|
|||
scenarioRecord.setApiScenarioReportId(apiScenarioReport.getId());
|
||||
apiScenarioRecords.add(scenarioRecord);
|
||||
resourceReportMap.put(testPlanReportApiScenario.getId(), apiScenarioReport.getId());
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenario.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiScenario.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords);
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords, apiReportRelateTasks);
|
||||
return resourceReportMap;
|
||||
}
|
||||
|
||||
|
@ -239,7 +252,7 @@ public class PlanRunTestPlanApiScenarioService {
|
|||
ApiScenario apiScenario = apiScenarioMapper.selectByPrimaryKey(testPlanReportApiScenario.getApiScenarioId());
|
||||
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
String reportId = initScenarioReport(runModeConfig, List.of(testPlanReportApiScenario), Map.of(apiScenario.getId(), apiScenario), queue.getUserId()).get(resourceId);
|
||||
String reportId = initScenarioReport(Map.of(testPlanReportApiScenario.getId(), queueDetail.getTaskItemId()), runModeConfig, List.of(testPlanReportApiScenario), Map.of(apiScenario.getId(), apiScenario), queue.getUserId()).get(resourceId);
|
||||
TaskRequestDTO taskRequest = testPlanApiScenarioBatchRunService.getTaskRequestDTO(apiScenario.getProjectId(), queue.getRunModeConfig());
|
||||
TaskItem taskItem = apiExecuteService.getTaskItem(reportId, queueDetail.getResourceId());
|
||||
taskItem.setId(queueDetail.getTaskItemId());
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package io.metersphere.plan.service;
|
||||
|
||||
import io.metersphere.api.domain.ApiReport;
|
||||
import io.metersphere.api.domain.ApiReportStep;
|
||||
import io.metersphere.api.domain.ApiTestCase;
|
||||
import io.metersphere.api.domain.ApiTestCaseRecord;
|
||||
import io.metersphere.api.domain.*;
|
||||
import io.metersphere.api.mapper.ApiTestCaseMapper;
|
||||
import io.metersphere.api.mapper.ExtApiTestCaseMapper;
|
||||
import io.metersphere.api.service.ApiBatchRunBaseService;
|
||||
|
@ -259,11 +256,11 @@ public class TestPlanApiCaseBatchRunService {
|
|||
Project project,
|
||||
String userId) {
|
||||
|
||||
// 初始化报告,返回用例和报告的 map
|
||||
Map<String, String> caseReportMap = initApiReport(runModeConfig, testPlanApiCases, project.getId(), userId);
|
||||
|
||||
Map<String, String> resourceTaskItemMap = getResourceTaskItemMap(taskId, testPlanApiCases);
|
||||
|
||||
// 初始化报告,返回用例和报告的 map
|
||||
Map<String, String> caseReportMap = initApiReport(resourceTaskItemMap, runModeConfig, testPlanApiCases, project.getId(), userId);
|
||||
|
||||
List<TaskItem> taskItems = new ArrayList<>(testPlanApiCases.size());
|
||||
|
||||
// 这里ID顺序和队列的ID顺序保持一致
|
||||
|
@ -403,7 +400,7 @@ public class TestPlanApiCaseBatchRunService {
|
|||
TestPlan testPlan = testPlanMapper.selectByPrimaryKey(testPlanId);
|
||||
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
String reportId = initApiReport(runModeConfig, List.of(BeanUtils.copyBean(new TestPlanApiCaseBatchRunDTO(), testPlanApiCase)),
|
||||
String reportId = initApiReport(Map.of(apiTestCase.getId(), queueDetail.getTaskItemId()), runModeConfig, List.of(BeanUtils.copyBean(new TestPlanApiCaseBatchRunDTO(), testPlanApiCase)),
|
||||
testPlan.getProjectId(), queue.getUserId()).get(testPlanApiCase.getId());
|
||||
TaskRequestDTO taskRequest = getTaskRequestDTO(reportId, testPlanApiCase.getId(), apiTestCase, runModeConfig);
|
||||
taskRequest.getTaskInfo().setTaskId(queue.getTaskId());
|
||||
|
@ -446,10 +443,11 @@ public class TestPlanApiCaseBatchRunService {
|
|||
* @param runModeConfig
|
||||
* @return
|
||||
*/
|
||||
public Map<String, String> initApiReport(ApiRunModeConfigDTO runModeConfig, List<TestPlanApiCaseBatchRunDTO> testPlanApiCases,
|
||||
public Map<String, String> initApiReport(Map<String, String> resourceExecTaskItemMap, ApiRunModeConfigDTO runModeConfig, List<TestPlanApiCaseBatchRunDTO> testPlanApiCases,
|
||||
String projectId, String userId) {
|
||||
List<ApiReport> apiReports = new ArrayList<>();
|
||||
List<ApiTestCaseRecord> apiTestCaseRecords = new ArrayList<>();
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>();
|
||||
List<ApiReportStep> apiReportSteps = new ArrayList<>();
|
||||
Map<String, String> resourceReportMap = new HashMap<>();
|
||||
|
||||
|
@ -462,8 +460,14 @@ public class TestPlanApiCaseBatchRunService {
|
|||
apiTestCaseRecords.add(apiTestCaseRecord);
|
||||
apiReportSteps.add(getApiReportStep(testPlanApiCase.getId(), testPlanApiCase.getName(), apiReport.getId(), 1));
|
||||
resourceReportMap.put(testPlanApiCase.getId(), apiReport.getId());
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiReport.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords);
|
||||
apiReportService.insertApiReport(apiReports, apiTestCaseRecords, apiReportRelateTasks);
|
||||
apiReportService.insertApiReportStep(apiReportSteps);
|
||||
return resourceReportMap;
|
||||
}
|
||||
|
|
|
@ -786,7 +786,7 @@ public class TestPlanApiCaseService extends TestPlanResourceService {
|
|||
}
|
||||
|
||||
// 初始化报告
|
||||
initApiReport(apiTestCase, testPlanApiCase, reportId, runModeConfig, userId);
|
||||
initApiReport(taskItem.getId(), apiTestCase, testPlanApiCase, reportId, runModeConfig, userId);
|
||||
|
||||
return apiExecuteService.execute(taskRequest);
|
||||
}
|
||||
|
@ -811,7 +811,7 @@ public class TestPlanApiCaseService extends TestPlanResourceService {
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
public ApiTestCaseRecord initApiReport(ApiTestCase apiTestCase, TestPlanApiCase testPlanApiCase, String reportId, ApiRunModeConfigDTO runModeConfig, String userId) {
|
||||
public ApiTestCaseRecord initApiReport(String taskItemId, ApiTestCase apiTestCase, TestPlanApiCase testPlanApiCase, String reportId, ApiRunModeConfigDTO runModeConfig, String userId) {
|
||||
// 初始化报告
|
||||
ApiReport apiReport = apiTestCaseService.getApiReport(apiTestCase, reportId, runModeConfig.getPoolId(), userId);
|
||||
apiReport.setEnvironmentId(runModeConfig.getEnvironmentId());
|
||||
|
@ -820,7 +820,12 @@ public class TestPlanApiCaseService extends TestPlanResourceService {
|
|||
// 创建报告和用例的关联关系
|
||||
ApiTestCaseRecord apiTestCaseRecord = apiTestCaseService.getApiTestCaseRecord(apiTestCase, apiReport);
|
||||
|
||||
apiReportService.insertApiReport(List.of(apiReport), List.of(apiTestCaseRecord));
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskItemId);
|
||||
|
||||
apiReportService.insertApiReport(List.of(apiReport), List.of(apiTestCaseRecord), List.of(apiReportRelateTask));
|
||||
|
||||
//初始化步骤
|
||||
apiReportService.insertApiReportStep(List.of(getApiReportStep(testPlanApiCase, apiTestCase, reportId)));
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package io.metersphere.plan.service;
|
||||
|
||||
import io.metersphere.api.domain.ApiReportRelateTask;
|
||||
import io.metersphere.api.domain.ApiScenario;
|
||||
import io.metersphere.api.domain.ApiScenarioRecord;
|
||||
import io.metersphere.api.domain.ApiScenarioReport;
|
||||
|
@ -265,10 +266,10 @@ public class TestPlanApiScenarioBatchRunService {
|
|||
Project project,
|
||||
String userId) {
|
||||
|
||||
Map<String, String> scenarioReportMap = initReport(testPlanApiScenarios, runModeConfig, project.getId(), userId);
|
||||
|
||||
Map<String, String> resourceTaskItemMap = getResourceTaskItemMap(taskId, testPlanApiScenarios);
|
||||
|
||||
Map<String, String> scenarioReportMap = initReport(resourceTaskItemMap, testPlanApiScenarios, runModeConfig, project.getId(), userId);
|
||||
|
||||
List<TaskItem> taskItems = testPlanApiScenarios.stream()
|
||||
.map(testPlanApiScenario -> {
|
||||
String id = testPlanApiScenario.getId();
|
||||
|
@ -329,10 +330,12 @@ public class TestPlanApiScenarioBatchRunService {
|
|||
return execTaskItems;
|
||||
}
|
||||
|
||||
public Map<String, String> initReport(List<TestPlanApiScenarioBatchRunDTO> testPlanApiScenarios,
|
||||
ApiRunModeConfigDTO runModeConfig, String projectId, String userId) {
|
||||
public Map<String, String> initReport(Map<String, String> resourceExecTaskItemMap,
|
||||
List<TestPlanApiScenarioBatchRunDTO> testPlanApiScenarios,
|
||||
ApiRunModeConfigDTO runModeConfig, String projectId, String userId) {
|
||||
List<ApiScenarioReport> apiScenarioReports = new ArrayList<>(testPlanApiScenarios.size());
|
||||
List<ApiScenarioRecord> apiScenarioRecords = new ArrayList<>(testPlanApiScenarios.size());
|
||||
List<ApiReportRelateTask> apiReportRelateTasks = new ArrayList<>(testPlanApiScenarios.size());
|
||||
Map<String, String> resourceReportMap = new HashMap<>();
|
||||
for (TestPlanApiScenarioBatchRunDTO testPlanApiScenario : testPlanApiScenarios) {
|
||||
// 初始化报告
|
||||
|
@ -343,8 +346,14 @@ public class TestPlanApiScenarioBatchRunService {
|
|||
ApiScenarioRecord apiScenarioRecord = apiScenarioRunService.getApiScenarioRecord(testPlanApiScenario.getApiScenarioId(), apiScenarioReport);
|
||||
apiScenarioRecords.add(apiScenarioRecord);
|
||||
resourceReportMap.put(testPlanApiScenario.getId(), apiScenarioReport.getId());
|
||||
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(resourceExecTaskItemMap.get(apiScenarioReport.getId()));
|
||||
apiReportRelateTasks.add(apiReportRelateTask);
|
||||
}
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords);
|
||||
apiScenarioReportService.insertApiScenarioReport(apiScenarioReports, apiScenarioRecords, apiReportRelateTasks);
|
||||
return resourceReportMap;
|
||||
}
|
||||
|
||||
|
@ -362,7 +371,7 @@ public class TestPlanApiScenarioBatchRunService {
|
|||
TestPlan testPlan = testPlanMapper.selectByPrimaryKey(testPlanId);
|
||||
|
||||
// 独立报告,执行到当前任务时初始化报告
|
||||
String reportId = initScenarioReport(runModeConfig, BeanUtils.copyBean(new TestPlanApiScenarioBatchRunDTO(), testPlanApiScenario), testPlan.getId(), queue.getUserId())
|
||||
String reportId = initScenarioReport(queueDetail.getTaskItemId(), runModeConfig, BeanUtils.copyBean(new TestPlanApiScenarioBatchRunDTO(), testPlanApiScenario), testPlan.getId(), queue.getUserId())
|
||||
.getApiScenarioReportId();
|
||||
|
||||
TaskRequestDTO taskRequest = getTaskRequestDTO(apiScenario.getProjectId(), queue.getRunModeConfig());
|
||||
|
@ -444,13 +453,18 @@ public class TestPlanApiScenarioBatchRunService {
|
|||
* @param testPlanApiScenario
|
||||
* @return
|
||||
*/
|
||||
public ApiScenarioRecord initScenarioReport(ApiRunModeConfigDTO runModeConfig, TestPlanApiScenarioBatchRunDTO testPlanApiScenario, String projectId, String userId) {
|
||||
public ApiScenarioRecord initScenarioReport(String taskItemId, ApiRunModeConfigDTO runModeConfig, TestPlanApiScenarioBatchRunDTO testPlanApiScenario, String projectId, String userId) {
|
||||
// 初始化报告
|
||||
ApiScenarioReport apiScenarioReport = getScenarioReport(runModeConfig, testPlanApiScenario, projectId, userId);
|
||||
apiScenarioReport.setId(IDGenerator.nextStr());
|
||||
// 创建报告和用例的关联关系
|
||||
ApiScenarioRecord apiScenarioRecord = apiScenarioRunService.getApiScenarioRecord(testPlanApiScenario.getApiScenarioId(), apiScenarioReport);
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(apiScenarioReport), List.of(apiScenarioRecord));
|
||||
// 创建报告和任务的关联关系
|
||||
ApiReportRelateTask apiReportRelateTask = new ApiReportRelateTask();
|
||||
apiReportRelateTask.setReportId(apiScenarioReport.getId());
|
||||
apiReportRelateTask.setTaskResourceId(taskItemId);
|
||||
|
||||
apiScenarioReportService.insertApiScenarioReport(List.of(apiScenarioReport), List.of(apiScenarioRecord), List.of(apiReportRelateTask));
|
||||
return apiScenarioRecord;
|
||||
}
|
||||
|
||||
|
|
|
@ -379,7 +379,7 @@ public class TestPlanApiScenarioService extends TestPlanResourceService {
|
|||
scenarioReport.setPoolId(runModeConfig.getPoolId());
|
||||
scenarioReport.setEnvironmentId(runModeConfig.getEnvironmentId());
|
||||
scenarioReport.setTestPlanScenarioId(testPlanApiScenario.getId());
|
||||
apiScenarioRunService.initApiReport(apiScenario, scenarioReport);
|
||||
apiScenarioRunService.initApiReport(taskItem.getId(), apiScenario, scenarioReport);
|
||||
|
||||
return apiExecuteService.execute(taskRequest);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue