提交 c0080236 authored 作者: 黄夏豪's avatar 黄夏豪

fix(base): 修复了case执行器,如果前端不给detail会出现空指针的情况

上级 7ab813c0
......@@ -20,6 +20,7 @@ import org.matrix.socket.enums.SocketType;
import org.matrix.socket.pool.MonitorSocketPool;
import org.matrix.socket.vo.CaseExecuteVo;
import org.matrix.socket.vo.ExecuteMonitorVo;
import org.matrix.socket.vo.SocketResponseMessage;
import org.matrix.socket.vo.SocketVo;
import org.matrix.testNg.web.entity.DataBean;
import org.matrix.testNg.web.entity.DataBeans;
......@@ -89,23 +90,27 @@ public class ExecutionSocketHandler extends TextWebSocketHandler {
} else if (SocketType.TEST_JOB_EXECUTE.equals(socketVo.getSocketType())) {
CaseExecuteVo caseExecuteVo = JSON.parseObject(payload, CaseExecuteVo.class);
TestJob byId = testJobService.getById(caseExecuteVo.getJobId());
if (byId==null){
throw new GlobalException(String.format("执行错误,测试任务Id:%s 不存在",caseExecuteVo.getJobId()));
}
String sqlStatement = byId.getSqlStatement();
dataSourceService.switchMainDataSource();
List<Map<String, Object>> list = jdbcTemplate.queryForList(sqlStatement);
List<TestCase> testCaseList = new ArrayList<>();
for (Map<String, Object> objectMap : list) {
TestCase testCase = BeanUtil.mapToBean(objectMap, TestCase.class, false);
testCaseList.add(testCase);
}
for (TestCase testCase : testCaseList) {
List<TestData> testDataList = testDataService.list(Wrappers.lambdaQuery(TestData.class).eq(TestData::getTestCaseId, testCase.getId()));
if (testDataList.size()==0){
throw new GlobalException(String.format("执行错误,测试任务ID:%s 用例Id:%s 用例名:%s 中不存在需要测试的数据组",caseExecuteVo.getJobId(),testCase.getId(),testCase.getName()));
}
TestCaseListDataBto testCaseListDataBto = new TestCaseListDataBto();
testCaseListDataBto.setTestCase(testCase);
testCaseListDataBto.setTestDataList(testDataList);
//检查一下这些case里有没有东西,如果没有东西就不执行了
caseExecuteVo.getTestCaseListDataBtoList().add(testCaseListDataBto);
}
if (testCaseList.size() > 0) {
caseExecuteVo.setProjectId(testCaseList.get(0).getProjectId());
if (caseExecuteVo.getTestCaseListDataBtoList().size() > 0) {
caseExecuteVo.setProjectId(caseExecuteVo.getTestCaseListDataBtoList().get(0).getTestCase().getProjectId());
}
RunCaseResult runCaseResult = caseActuator.runTestCase(session, caseExecuteVo);
ReportMessage reportMessage = testNg.getReporterUrls(initTestNgData(runCaseResult, caseExecuteVo));
......@@ -125,7 +130,7 @@ public class ExecutionSocketHandler extends TextWebSocketHandler {
}
} catch (Exception e) {
e.printStackTrace();
session.sendMessage(new TextMessage(e.getMessage()));
session.sendMessage(new TextMessage(SocketResponseMessage.fail(e.getMessage())));
}
}
......
......@@ -139,19 +139,6 @@ public class LogQueueRuntime {
LogQueueRuntime.put(ThreadUtil.currentThreadId(), testExecuteLog);
}
public static Boolean checkJobIsInRun(Long jobId, Long userId, TestExecuteType type) {
TestExecuteLog testExecuteLog = new TestExecuteLog();
testExecuteLog.setTestJobId(jobId);
testExecuteLog.setUserId(userId);
testExecuteLog.setType(type);
for (TestExecuteLog value : LOG_MAP.values()) {
if (value.equals(testExecuteLog)) {
return true;
}
}
return false;
}
public static Boolean checkIsInRun(TestExecuteLog testExecuteLog) {
for (TestExecuteLog value : LOG_MAP.values()) {
if (value.equals(testExecuteLog)) {
......
package org.matrix.socket.vo;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* socket的返回标准版
* @author Administrator
*/
@Data
@AllArgsConstructor
public class SocketResponseMessage {
private int code;
private String message;
public static String success(String message){
return JSONObject.toJSONString(new SocketResponseMessage(HttpStatus.HTTP_OK,message));
}
public static String fail(String message){
return JSONObject.toJSONString(new SocketResponseMessage(HttpStatus.HTTP_INTERNAL_ERROR,message));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论