fix(Jenkins执行): 修复Jenkins调用接口执行时通知中心没数据的问题
修复Jenkins调用接口执行时通知中心没数据的问题
This commit is contained in:
parent
1770bd7a8e
commit
8b8392ddcf
|
@ -196,7 +196,7 @@ public class ApiTestCaseController {
|
||||||
@PostMapping(value = "/jenkins/run")
|
@PostMapping(value = "/jenkins/run")
|
||||||
@MsAuditLog(module = "api_definition_case", type = OperLogConstants.EXECUTE, content = "#msClass.getLogDetails(#request.caseId)", msClass = ApiTestCaseService.class)
|
@MsAuditLog(module = "api_definition_case", type = OperLogConstants.EXECUTE, content = "#msClass.getLogDetails(#request.caseId)", msClass = ApiTestCaseService.class)
|
||||||
public String jenkinsRun(@RequestBody RunCaseRequest request) {
|
public String jenkinsRun(@RequestBody RunCaseRequest request) {
|
||||||
return apiTestCaseService.run(request);
|
return apiTestCaseService.jenkinsRun(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping(value = "/jenkins/exec/result/{id}")
|
@GetMapping(value = "/jenkins/exec/result/{id}")
|
||||||
|
|
|
@ -736,16 +736,20 @@ public class ApiTestCaseService {
|
||||||
return ids;
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApiDefinitionExecResult addResult(String id, String status) {
|
private ApiDefinitionExecResult addResult(String resourceId, String status, String reportId) {
|
||||||
ApiDefinitionExecResult apiResult = new ApiDefinitionExecResult();
|
ApiDefinitionExecResult apiResult = new ApiDefinitionExecResult();
|
||||||
apiResult.setId(UUID.randomUUID().toString());
|
if (StringUtils.isEmpty(reportId)) {
|
||||||
|
apiResult.setId(UUID.randomUUID().toString());
|
||||||
|
} else {
|
||||||
|
apiResult.setId(reportId);
|
||||||
|
}
|
||||||
apiResult.setCreateTime(System.currentTimeMillis());
|
apiResult.setCreateTime(System.currentTimeMillis());
|
||||||
apiResult.setStartTime(System.currentTimeMillis());
|
apiResult.setStartTime(System.currentTimeMillis());
|
||||||
apiResult.setEndTime(System.currentTimeMillis());
|
apiResult.setEndTime(System.currentTimeMillis());
|
||||||
apiResult.setTriggerMode(TriggerMode.BATCH.name());
|
apiResult.setTriggerMode(TriggerMode.BATCH.name());
|
||||||
apiResult.setActuator("LOCAL");
|
apiResult.setActuator("LOCAL");
|
||||||
apiResult.setUserId(Objects.requireNonNull(SessionUtils.getUser()).getId());
|
apiResult.setUserId(Objects.requireNonNull(SessionUtils.getUser()).getId());
|
||||||
apiResult.setResourceId(id);
|
apiResult.setResourceId(resourceId);
|
||||||
apiResult.setStartTime(System.currentTimeMillis());
|
apiResult.setStartTime(System.currentTimeMillis());
|
||||||
apiResult.setType(ApiRunMode.DEFINITION.name());
|
apiResult.setType(ApiRunMode.DEFINITION.name());
|
||||||
apiResult.setStatus(status);
|
apiResult.setStatus(status);
|
||||||
|
@ -765,7 +769,7 @@ public class ApiTestCaseService {
|
||||||
|
|
||||||
ApiTestCaseMapper sqlSessionMapper = sqlSession.getMapper(ApiTestCaseMapper.class);
|
ApiTestCaseMapper sqlSessionMapper = sqlSession.getMapper(ApiTestCaseMapper.class);
|
||||||
for (ApiTestCaseWithBLOBs caseWithBLOBs : list) {
|
for (ApiTestCaseWithBLOBs caseWithBLOBs : list) {
|
||||||
ApiDefinitionExecResult report = addResult(caseWithBLOBs.getId(), APITestStatus.Running.name());
|
ApiDefinitionExecResult report = addResult(caseWithBLOBs.getId(), APITestStatus.Running.name(), null);
|
||||||
report.setName(caseWithBLOBs.getName());
|
report.setName(caseWithBLOBs.getName());
|
||||||
caseWithBLOBs.setLastResultId(report.getId());
|
caseWithBLOBs.setLastResultId(report.getId());
|
||||||
caseWithBLOBs.setUpdateTime(System.currentTimeMillis());
|
caseWithBLOBs.setUpdateTime(System.currentTimeMillis());
|
||||||
|
@ -792,6 +796,35 @@ public class ApiTestCaseService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String jenkinsRun(RunCaseRequest request) {
|
||||||
|
ApiTestCaseWithBLOBs caseWithBLOBs = null;
|
||||||
|
if (request.getBloBs() == null) {
|
||||||
|
caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(request.getCaseId());
|
||||||
|
if (caseWithBLOBs == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
request.setBloBs(caseWithBLOBs);
|
||||||
|
} else {
|
||||||
|
caseWithBLOBs = request.getBloBs();
|
||||||
|
}
|
||||||
|
if (caseWithBLOBs == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
//提前生成报告
|
||||||
|
ApiDefinitionExecResult report = addResult(caseWithBLOBs.getId(), APITestStatus.Running.name(), request.getReportId());
|
||||||
|
report.setName(caseWithBLOBs.getName());
|
||||||
|
report.setTriggerMode(ApiRunMode.API.name());
|
||||||
|
report.setType(ApiRunMode.JENKINS.name());
|
||||||
|
apiDefinitionExecResultMapper.insert(report);
|
||||||
|
//更新接口案例的最后执行状态等信息
|
||||||
|
caseWithBLOBs.setLastResultId(report.getId());
|
||||||
|
caseWithBLOBs.setUpdateTime(System.currentTimeMillis());
|
||||||
|
caseWithBLOBs.setStatus(APITestStatus.Running.name());
|
||||||
|
apiTestCaseMapper.updateByPrimaryKey(caseWithBLOBs);
|
||||||
|
request.setReport(report);
|
||||||
|
return this.run(request);
|
||||||
|
}
|
||||||
|
|
||||||
public String run(RunCaseRequest request) {
|
public String run(RunCaseRequest request) {
|
||||||
ApiTestCaseWithBLOBs testCaseWithBLOBs = request.getBloBs();
|
ApiTestCaseWithBLOBs testCaseWithBLOBs = request.getBloBs();
|
||||||
if (StringUtils.equals(request.getRunMode(), ApiRunMode.JENKINS_API_PLAN.name())) {
|
if (StringUtils.equals(request.getRunMode(), ApiRunMode.JENKINS_API_PLAN.name())) {
|
||||||
|
@ -801,17 +834,12 @@ public class ApiTestCaseService {
|
||||||
request.setReportId(request.getTestPlanId());
|
request.setReportId(request.getTestPlanId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.equals(request.getRunMode(), ApiRunMode.JENKINS.name())) {
|
|
||||||
testCaseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(request.getCaseId());
|
|
||||||
request.setReportId(request.getEnvironmentId());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 多态JSON普通转换会丢失内容,需要通过 ObjectMapper 获取
|
// 多态JSON普通转换会丢失内容,需要通过 ObjectMapper 获取
|
||||||
if (testCaseWithBLOBs != null && StringUtils.isNotEmpty(testCaseWithBLOBs.getRequest())) {
|
if (testCaseWithBLOBs != null && StringUtils.isNotEmpty(testCaseWithBLOBs.getRequest())) {
|
||||||
try {
|
try {
|
||||||
HashTree jmeterHashTree = this.generateHashTree(request, testCaseWithBLOBs);
|
HashTree jmeterHashTree = this.generateHashTree(request, testCaseWithBLOBs);
|
||||||
// 调用执行方法
|
// 调用执行方法
|
||||||
jMeterService.runLocal(request.getReportId(),null, jmeterHashTree, null, request.getRunMode());
|
jMeterService.runLocal(request.getReportId(), null, jmeterHashTree, null, request.getRunMode());
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ApiDefinitionExecResult result = MessageCache.caseExecResourceLock.get(request.getReportId());
|
ApiDefinitionExecResult result = MessageCache.caseExecResourceLock.get(request.getReportId());
|
||||||
|
@ -837,7 +865,7 @@ public class ApiTestCaseService {
|
||||||
request.setTestPlanId(testPlanID);
|
request.setTestPlanId(testPlanID);
|
||||||
HashTree jmeterHashTree = this.generateHashTree(request, apiCaseBolbs);
|
HashTree jmeterHashTree = this.generateHashTree(request, apiCaseBolbs);
|
||||||
// 调用执行方法
|
// 调用执行方法
|
||||||
jMeterService.runLocal(id,null, jmeterHashTree, debugReportId, runMode);
|
jMeterService.runLocal(id, null, jmeterHashTree, debugReportId, runMode);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LogUtil.error(ex);
|
LogUtil.error(ex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue