perf(接口测试): 场景编辑依赖关系优化
This commit is contained in:
parent
989c59aaf2
commit
d7ada8904f
|
@ -40,6 +40,15 @@ public class ApiAutomationRelationshipEdgeService {
|
|||
beforeReferenceRelationships = this.contentAnalysis(preBlobs);
|
||||
}
|
||||
|
||||
// 如果有新增的关系,进行批量保存
|
||||
if (CollectionUtils.isNotEmpty(referenceRelationships)) {
|
||||
RelationshipEdgeRequest request = new RelationshipEdgeRequest();
|
||||
request.setId(scenarioWithBLOBs.getId());
|
||||
request.setTargetIds(referenceRelationships);
|
||||
request.setType("API_SCENARIO");
|
||||
relationshipEdgeService.saveBatch(request);
|
||||
}
|
||||
|
||||
// 比较并处理关系
|
||||
List<String> removedRelationships = new ArrayList<>(beforeReferenceRelationships);
|
||||
removedRelationships.removeAll(referenceRelationships);
|
||||
|
@ -48,16 +57,6 @@ public class ApiAutomationRelationshipEdgeService {
|
|||
if (CollectionUtils.isNotEmpty(removedRelationships)) {
|
||||
new Thread(() -> relationshipEdgeService.delete(scenarioWithBLOBs.getId(), removedRelationships)).start();
|
||||
}
|
||||
|
||||
// 如果有新增的关系,进行批量保存
|
||||
if (CollectionUtils.isNotEmpty(referenceRelationships)) {
|
||||
RelationshipEdgeRequest request = new RelationshipEdgeRequest();
|
||||
request.setId(scenarioWithBLOBs.getId());
|
||||
request.setTargetIds(referenceRelationships);
|
||||
request.setType("API_SCENARIO");
|
||||
|
||||
relationshipEdgeService.saveBatch(request);
|
||||
}
|
||||
}
|
||||
|
||||
private List<String> contentAnalysis(ApiScenarioWithBLOBs scenarioWithBLOBs) {
|
||||
|
|
|
@ -300,10 +300,19 @@ public class ApiScenarioService {
|
|||
scenario.setRefId(request.getId());
|
||||
scenario.setLatest(true);
|
||||
|
||||
apiScenarioMapper.insert(scenario);
|
||||
apiScenarioReferenceIdService.saveApiAndScenarioRelation(scenario);
|
||||
// 存储依赖关系
|
||||
LogUtil.info("initRelationshipEdge start");
|
||||
apiAutomationRelationshipEdgeService.initRelationshipEdge(null, scenario);
|
||||
LogUtil.info("initRelationshipEdge end");
|
||||
|
||||
apiScenarioMapper.insert(scenario);
|
||||
|
||||
// 依赖关系处理
|
||||
new Thread(() -> {
|
||||
apiScenarioReferenceIdService.saveApiAndScenarioRelation(scenario);
|
||||
uploadFiles(request, bodyFiles, scenarioFiles);
|
||||
}).start();
|
||||
|
||||
apiTestCaseService.checkAndSendReviewMessage(
|
||||
scenario.getId(),
|
||||
scenario.getName(),
|
||||
|
@ -315,7 +324,6 @@ public class ApiScenarioService {
|
|||
scenario.getPrincipal()
|
||||
);
|
||||
|
||||
uploadFiles(request, bodyFiles, scenarioFiles);
|
||||
return scenario;
|
||||
}
|
||||
|
||||
|
@ -373,6 +381,7 @@ public class ApiScenarioService {
|
|||
}
|
||||
|
||||
public ApiScenarioWithBLOBs update(SaveApiScenarioRequest request, List<MultipartFile> bodyFiles, List<MultipartFile> scenarioFiles) {
|
||||
LogUtil.info("update scenario start");
|
||||
checkNameExist(request, false);
|
||||
checkScenarioNum(request);
|
||||
//如果场景有TCP步骤的话,也要做参数计算处理
|
||||
|
@ -412,12 +421,26 @@ public class ApiScenarioService {
|
|||
apiScenarioMapper.updateByExampleSelective(apiScenarioWithBLOBs, example);
|
||||
}
|
||||
|
||||
// 存储依赖关系
|
||||
LogUtil.info("initRelationshipEdge start");
|
||||
apiAutomationRelationshipEdgeService.initRelationshipEdge(beforeScenario, scenario);
|
||||
LogUtil.info("initRelationshipEdge end");
|
||||
|
||||
new Thread(() -> {
|
||||
apiScenarioReferenceIdService.saveApiAndScenarioRelation(scenario);
|
||||
extScheduleMapper.updateNameByResourceID(request.getId(), request.getName());// 修改场景name,同步到修改首页定时任务
|
||||
uploadFiles(request, bodyFiles, scenarioFiles);
|
||||
|
||||
// 存储依赖关系
|
||||
apiAutomationRelationshipEdgeService.initRelationshipEdge(beforeScenario, scenario);
|
||||
String defaultVersion = baseProjectVersionMapper.getDefaultVersion(request.getProjectId());
|
||||
if (StringUtils.equalsIgnoreCase(request.getVersionId(), defaultVersion)) {
|
||||
checkAndSetLatestVersion(beforeScenario.getRefId());
|
||||
}
|
||||
//同步修改所有版本的模块路径
|
||||
updateOtherVersionModule(beforeScenario.getRefId(), scenario);
|
||||
// 存储附件关系
|
||||
extFileAssociationService.saveScenario(scenario.getId(), request.getScenarioDefinition());
|
||||
|
||||
}).start();
|
||||
|
||||
apiTestCaseService.checkAndSendReviewMessage(
|
||||
scenario.getId(),
|
||||
|
@ -430,14 +453,7 @@ public class ApiScenarioService {
|
|||
scenario.getPrincipal()
|
||||
);
|
||||
|
||||
String defaultVersion = baseProjectVersionMapper.getDefaultVersion(request.getProjectId());
|
||||
if (StringUtils.equalsIgnoreCase(request.getVersionId(), defaultVersion)) {
|
||||
checkAndSetLatestVersion(beforeScenario.getRefId());
|
||||
}
|
||||
//同步修改所有版本的模块路径
|
||||
updateOtherVersionModule(beforeScenario.getRefId(), scenario);
|
||||
// 存储附件关系
|
||||
extFileAssociationService.saveScenario(scenario.getId(), request.getScenarioDefinition());
|
||||
LogUtil.info("update scenario end");
|
||||
return scenario;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,19 +3,15 @@
|
|||
<mapper namespace="io.metersphere.base.mapper.ext.BaseRelationshipEdgeMapper">
|
||||
|
||||
<select id="getGraphIdsByNodeIds" resultType="java.lang.String">
|
||||
select graph_id
|
||||
select distinct graph_id
|
||||
from relationship_edge
|
||||
where source_id in
|
||||
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
union
|
||||
select graph_id
|
||||
from relationship_edge
|
||||
where target_id in
|
||||
or target_id in
|
||||
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -7,6 +7,7 @@ import io.metersphere.base.domain.RelationshipEdgeKey;
|
|||
import io.metersphere.base.mapper.RelationshipEdgeMapper;
|
||||
import io.metersphere.base.mapper.ext.BaseRelationshipEdgeMapper;
|
||||
import io.metersphere.commons.exception.MSException;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.commons.utils.SessionUtils;
|
||||
import io.metersphere.request.RelationshipEdgeRequest;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
|
@ -206,7 +207,10 @@ public class RelationshipEdgeService {
|
|||
*/
|
||||
public void saveBatch(RelationshipEdgeRequest request) {
|
||||
String graphId = UUID.randomUUID().toString();
|
||||
LogUtil.info("saveBatch graphId: " + graphId);
|
||||
List<RelationshipEdge> relationshipEdges = getEdgesBySaveRequest(request);
|
||||
|
||||
LogUtil.info("saveBatch relationshipEdges: " + relationshipEdges.size());
|
||||
Set<String> addEdgesIds = new HashSet<>();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(request.getTargetIds())) {
|
||||
|
@ -235,7 +239,8 @@ public class RelationshipEdgeService {
|
|||
MSException.throwException("关联后存在循环依赖,请检查依赖关系");
|
||||
}
|
||||
});
|
||||
// 合并图
|
||||
|
||||
LogUtil.info("开始合并图内容");
|
||||
new Thread(() -> {
|
||||
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
|
||||
RelationshipEdgeMapper batchMapper = sqlSession.getMapper(RelationshipEdgeMapper.class);
|
||||
|
@ -258,7 +263,6 @@ public class RelationshipEdgeService {
|
|||
if (sqlSessionFactory != null) {
|
||||
SqlSessionUtils.closeSqlSession(sqlSession, sqlSessionFactory);
|
||||
}
|
||||
|
||||
}).start();
|
||||
}
|
||||
|
||||
|
@ -293,11 +297,9 @@ public class RelationshipEdgeService {
|
|||
if (CollectionUtils.isEmpty(graphIds)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
RelationshipEdgeExample example = new RelationshipEdgeExample();
|
||||
example.createCriteria()
|
||||
.andGraphIdIn(graphIds.stream()
|
||||
.distinct().collect(Collectors.toList()));
|
||||
.andGraphIdIn(graphIds);
|
||||
|
||||
return relationshipEdgeMapper.selectByExample(example);
|
||||
}
|
||||
|
@ -321,7 +323,7 @@ public class RelationshipEdgeService {
|
|||
markSet.add(id);
|
||||
visitedSet.add(id);
|
||||
|
||||
ArrayList<String> nextLevelNodes = new ArrayList<>();
|
||||
ArrayList<String> nextLevelNodes = new ArrayList();
|
||||
for (RelationshipEdge relationshipEdge : edges) {
|
||||
if (id.equals(relationshipEdge.getSourceId())) {
|
||||
nextLevelNodes.add(relationshipEdge.getTargetId());
|
||||
|
|
Loading…
Reference in New Issue