|
@@ -72,7 +72,6 @@ public class TaskManager {
|
|
RequestConfig requestConfig;
|
|
RequestConfig requestConfig;
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public boolean isProjectCompleted(String userId, String projectId, String taskId, String state, String podName, ClientSession session) {
|
|
public boolean isProjectCompleted(String userId, String projectId, String taskId, String state, String podName, ClientSession session) {
|
|
|
|
|
|
@@ -176,11 +175,10 @@ public class TaskManager {
|
|
ClusterPO clusterPO = clusterMapper.selectByUserId(userId);
|
|
ClusterPO clusterPO = clusterMapper.selectByUserId(userId);
|
|
String clusterId = clusterPO.getId();
|
|
String clusterId = clusterPO.getId();
|
|
stringRedisTemplate.delete(manualProjectTopic + ":cluster:" + clusterId + ":running" + projectId);
|
|
stringRedisTemplate.delete(manualProjectTopic + ":cluster:" + clusterId + ":running" + projectId);
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
- public void score(String userId, String projectId, ClientSession session){
|
|
|
|
|
|
+ public void score(String userId, String projectId, ClientSession session) {
|
|
// -------------------------------- 打分 --------------------------------
|
|
// -------------------------------- 打分 --------------------------------
|
|
ProjectPO projectPO = manualProjectMapper.selectById(projectId);
|
|
ProjectPO projectPO = manualProjectMapper.selectById(projectId);
|
|
String packageId = projectPO.getScenePackageId(); // 场景测试包 id,指标根 id
|
|
String packageId = projectPO.getScenePackageId(); // 场景测试包 id,指标根 id
|
|
@@ -217,19 +215,19 @@ public class TaskManager {
|
|
.filter(task -> indexId.equals(task.getLastTargetId()))
|
|
.filter(task -> indexId.equals(task.getLastTargetId()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
log.info("TaskService--state 叶子节点 " + indexId + " 包括 " + taskListOfLeafIndex.size() + " 个成功运行结束任务!");
|
|
log.info("TaskService--state 叶子节点 " + indexId + " 包括 " + taskListOfLeafIndex.size() + " 个成功运行结束任务!");
|
|
- log.info("TaskService--state 计算叶子节点 " + indexId + " 的得分:" + taskListOfLeafIndex);
|
|
|
|
|
|
+ // 计算叶子指标的得分
|
|
taskListOfLeafIndex.forEach(taskOfLeaf -> {
|
|
taskListOfLeafIndex.forEach(taskOfLeaf -> {
|
|
- String runState = taskOfLeaf.getRunState();
|
|
|
|
- if (DictConstants.TASK_ANALYSIS.equals(runState)) {
|
|
|
|
- String task2Id = taskOfLeaf.getId();
|
|
|
|
- taskMapper.updateSuccessStateWithStopTime(task2Id, DictConstants.TASK_ANALYSING, TimeUtil.getNowForMysql());
|
|
|
|
- // 计算每个任务的得分
|
|
|
|
- String runResultMinio = taskOfLeaf.getRunResultFilePath() + "/Ego.csv";
|
|
|
|
- String runResultLinux = linuxTempPath + runResultMinio;
|
|
|
|
- String scoreCommand = "python3 " + pyPath + "main.py " + runResultLinux + " " + taskOfLeaf.getSceneType() + " " + ruleName; // 指定打分脚本
|
|
|
|
- String scoreResult;
|
|
|
|
- ScoreTO score;
|
|
|
|
- try {
|
|
|
|
|
|
+ String task2Id = taskOfLeaf.getId();
|
|
|
|
+ try {
|
|
|
|
+ String runState = taskOfLeaf.getRunState();
|
|
|
|
+ if (DictConstants.TASK_ANALYSIS.equals(runState)) {
|
|
|
|
+ taskMapper.updateSuccessStateWithStopTime(task2Id, DictConstants.TASK_ANALYSING, TimeUtil.getNowForMysql());
|
|
|
|
+ // 计算每个任务的得分
|
|
|
|
+ String runResultMinio = taskOfLeaf.getRunResultFilePath() + "/Ego.csv";
|
|
|
|
+ String runResultLinux = linuxTempPath + runResultMinio;
|
|
|
|
+ String scoreCommand = "python3 " + pyPath + "main.py " + runResultLinux + " " + taskOfLeaf.getSceneType() + " " + ruleName; // 指定打分脚本
|
|
|
|
+ String scoreResult;
|
|
|
|
+ ScoreTO score;
|
|
try {
|
|
try {
|
|
log.info("TaskService--state 下载 minio 上的结果文件 " + runResultMinio + " 到本地:" + runResultLinux);
|
|
log.info("TaskService--state 下载 minio 上的结果文件 " + runResultMinio + " 到本地:" + runResultLinux);
|
|
MinioUtil.downloadToFile(minioClient, bucketName, runResultMinio, runResultLinux); // 也可改成下载到指定ip的服务器上,需要保证和打分脚本在一台机器上。
|
|
MinioUtil.downloadToFile(minioClient, bucketName, runResultMinio, runResultLinux); // 也可改成下载到指定ip的服务器上,需要保证和打分脚本在一台机器上。
|
|
@@ -245,27 +243,26 @@ public class TaskManager {
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("------- TaskService--state 项目" + projectId + "的任务" + task2Id + " 打分出错,命令为:" + scoreCommand + " 修改状态为:" + DictConstants.TASK_ABORTED + "\n" + e.getMessage());
|
|
throw new RuntimeException("------- TaskService--state 项目" + projectId + "的任务" + task2Id + " 打分出错,命令为:" + scoreCommand + " 修改状态为:" + DictConstants.TASK_ABORTED + "\n" + e.getMessage());
|
|
}
|
|
}
|
|
- } catch (Exception e) {
|
|
|
|
- taskOfLeaf.setRunState(DictConstants.TASK_ABORTED);
|
|
|
|
- taskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_5);
|
|
|
|
- log.error(e.getMessage());
|
|
|
|
- return; // 如果打分失败则开始下一个打分
|
|
|
|
|
|
+ taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
|
|
|
|
+ taskOfLeaf.setScore(score.getUnit_scene_score());
|
|
|
|
+ taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
|
|
|
|
+ taskOfLeaf.setScoreExplain(score.getScore_description());
|
|
|
|
+ taskOfLeaf.setModifyUserId(userId);
|
|
|
|
+ taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
+ scoreExplain.set(score.getScore_description());
|
|
|
|
+ taskOfLeaf.setRunState(DictConstants.TASK_COMPLETED);
|
|
|
|
+ taskMapper.updateSuccessStateAndScoreResultWithStopTime(
|
|
|
|
+ taskOfLeaf,
|
|
|
|
+ DictConstants.TASK_COMPLETED,
|
|
|
|
+ TimeUtil.getNowForMysql()
|
|
|
|
+ );
|
|
}
|
|
}
|
|
- assert score != null;
|
|
|
|
- taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
|
|
|
|
- taskOfLeaf.setScore(score.getUnit_scene_score());
|
|
|
|
- taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
|
|
|
|
- taskOfLeaf.setScoreExplain(score.getScore_description());
|
|
|
|
- taskOfLeaf.setModifyUserId(userId);
|
|
|
|
- taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
- scoreExplain.set(score.getScore_description());
|
|
|
|
-
|
|
|
|
- taskOfLeaf.setRunState(DictConstants.TASK_COMPLETED);
|
|
|
|
- taskMapper.updateSuccessStateAndScoreResultWithStopTime(
|
|
|
|
- taskOfLeaf,
|
|
|
|
- DictConstants.TASK_COMPLETED,
|
|
|
|
- TimeUtil.getNowForMysql()
|
|
|
|
- );
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ taskOfLeaf.setRunState(DictConstants.TASK_ABORTED);
|
|
|
|
+ taskOfLeaf.setScore(0.0);
|
|
|
|
+ taskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_5);
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
+ // 如果打分失败则开始下一个打分
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
@@ -398,9 +395,6 @@ public class TaskManager {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
public Boolean taskConfirm(String taskId) {
|
|
public Boolean taskConfirm(String taskId) {
|
|
// 查询 task 如果不是 pending 则不执行
|
|
// 查询 task 如果不是 pending 则不执行
|
|
String state = taskMapper.selectStateById(taskId);
|
|
String state = taskMapper.selectStateById(taskId);
|