代码到20250102
parent
c9fac180e6
commit
795a83a563
|
@ -919,7 +919,7 @@ public class DefaultExecThread implements AtuExecThread{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (task.getRetryStrategy() != null && AtuExecConstant.TASK_RETRY_STRATEGY_PACKAGE.equals(task.getRetryStrategy())) {
|
if (task.getRetryStrategy() != null && AtuExecConstant.TASK_RETRY_STRATEGY_PACKAGE.equals(task.getRetryStrategy())) { //
|
||||||
count = task.getCurrentRetryNum();
|
count = task.getCurrentRetryNum();
|
||||||
}
|
}
|
||||||
if(null==executeResult){
|
if(null==executeResult){
|
||||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
WORKDIR ${CCTP_HOME}
|
WORKDIR ${CCTP_HOME}
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} -Dloader.path=.,lib ${JAR_FILE}"]
|
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} ${JAR_FILE}"]
|
||||||
|
|
||||||
#CMD [""]
|
#CMD [""]
|
||||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
WORKDIR ${CCTP_HOME}
|
WORKDIR ${CCTP_HOME}
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} -Dloader.path=.,lib ${JAR_FILE}"]
|
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} ${JAR_FILE}"]
|
||||||
|
|
||||||
#CMD [""]
|
#CMD [""]
|
||||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
WORKDIR ${CCTP_HOME}
|
WORKDIR ${CCTP_HOME}
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} -Dloader.path=.,lib ${JAR_FILE}"]
|
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} ${JAR_FILE}"]
|
||||||
|
|
||||||
#CMD [""]
|
#CMD [""]
|
||||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
WORKDIR ${CCTP_HOME}
|
WORKDIR ${CCTP_HOME}
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} ${JACOCO_AGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} -Dloader.path=.,lib ${JAR_FILE}"]
|
ENTRYPOINT ["sh", "-c", "java -jar -Xms${XMX} -Xmx${XMX} ${TRACE_JAVAAGENT_OPTS} ${JACOCO_AGENT_OPTS} -Dfile.encoding=UTF-8 -DAPP_PROFILE=${APP_PROFILE} -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} ${JAR_FILE}"]
|
||||||
|
|
||||||
#CMD [""]
|
#CMD [""]
|
||||||
|
|
|
@ -32,10 +32,6 @@
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-dependency-plugin</artifactId>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
|
|
@ -10,7 +10,7 @@ APP_VERSION=3.0-SNAPSHOT
|
||||||
JAR_FILE=${APP_NAME}-${APP_VERSION}.ms.jar
|
JAR_FILE=${APP_NAME}-${APP_VERSION}.ms.jar
|
||||||
APP_PORT=8300
|
APP_PORT=8300
|
||||||
|
|
||||||
JAVA_OPTIONS="-Xmx256M -Dfile.encoding=UTF-8 -Dloader.path=.,lib"
|
JAVA_OPTIONS="-Xmx256M -Dfile.encoding=UTF-8 "
|
||||||
PORT_OPTIONS="--server.port=${APP_PORT}"
|
PORT_OPTIONS="--server.port=${APP_PORT}"
|
||||||
|
|
||||||
if [ 0"$NK_HOME" = "0" ]; then
|
if [ 0"$NK_HOME" = "0" ]; then
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package net.northking.cctp.executePlan.api;
|
package net.northking.cctp.executePlan.api;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.google.common.collect.HashBiMap;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
@ -9,12 +11,22 @@ import net.northking.cctp.executePlan.api.service.AtuPlanBatchApiService;
|
||||||
import net.northking.cctp.executePlan.api.service.AtuPlanInfoApiService;
|
import net.northking.cctp.executePlan.api.service.AtuPlanInfoApiService;
|
||||||
import net.northking.cctp.executePlan.api.service.AtuPlanTaskApiService;
|
import net.northking.cctp.executePlan.api.service.AtuPlanTaskApiService;
|
||||||
import net.northking.cctp.executePlan.dto.planBatch.AtuExceptionCase;
|
import net.northking.cctp.executePlan.dto.planBatch.AtuExceptionCase;
|
||||||
|
import org.redisson.client.RedisConnection;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisCallback;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.core.ValueOperations;
|
||||||
|
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||||
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -46,6 +58,9 @@ public class AtuPlanInfoPubCtrl {
|
||||||
@Autowired
|
@Autowired
|
||||||
private AtuPlanBatchApiService planBatchApiService;
|
private AtuPlanBatchApiService planBatchApiService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate redisTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新任务执行结果文件
|
* 更新任务执行结果文件
|
||||||
* @param params 参数 {“taskId”:"", "filePath": ""}
|
* @param params 参数 {“taskId”:"", "filePath": ""}
|
||||||
|
@ -105,4 +120,26 @@ public class AtuPlanInfoPubCtrl {
|
||||||
return responseVO;
|
return responseVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取redis指定Key的数据
|
||||||
|
*
|
||||||
|
* @return 引擎运行信息
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "获取redis指定Key的数据")
|
||||||
|
@GetMapping(value = "/getRedisKey/{key}")
|
||||||
|
public ResultWrapper<Object> getRedisKey(@PathVariable("key") String key)
|
||||||
|
{
|
||||||
|
ResultWrapper<Object> wrapper = new ResultWrapper<>();
|
||||||
|
Object info = redisTemplate.execute((RedisCallback<Map<String,Object>>) connection->{
|
||||||
|
byte[] bytes = connection.get(key.getBytes(StandardCharsets.UTF_8));
|
||||||
|
if (bytes==null) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
return JSON.parseObject(bytes, HashMap.class);
|
||||||
|
});
|
||||||
|
wrapper.success(info);
|
||||||
|
return wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 京北方信息技术股份有限公司 Corporation 2023 . All rights reserved.
|
* Copyright (c) 京北方信息技术股份有限公司 Corporation 2023 . All rights reserved.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.northking.cctp.executePlan.api.execplanTag;
|
package net.northking.cctp.executePlan.api.execplanTag;
|
||||||
|
|
||||||
|
import cn.gjing.tools.auth.annotation.RequiredPermissions;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.constants.BaseDefineDependencyConstants;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.constants.BaseDefineDependencyConstants;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.TagDto;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.TagDto;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
||||||
import cn.gjing.tools.auth.annotation.RequiredPermissions;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.northking.cctp.executePlan.api.execplanTag.service.AtuExecplanTagApiService;
|
import net.northking.cctp.executePlan.api.execplanTag.service.AtuExecplanTagApiService;
|
||||||
|
@ -15,44 +15,50 @@ import net.northking.cctp.executePlan.constants.MsgConstant;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.hzbank.testteam.autotest.dependencies.authDependency.constants.AuthDependencyConstants.REQUEST_HEADER_PROJECT_ID;
|
||||||
|
|
||||||
@Api(tags = "执行计划标签表")
|
@Api(tags = "执行计划标签表")
|
||||||
@RequestMapping("/v1")
|
@RequestMapping("/v1")
|
||||||
@RestController
|
@RestController
|
||||||
public class AtuExecplanTagQueryCtrl
|
public class AtuExecplanTagQueryCtrl {
|
||||||
{
|
/**
|
||||||
/**
|
* 日志
|
||||||
* 日志
|
*/
|
||||||
*/
|
private final static Logger logger = LoggerFactory.getLogger(AtuExecplanTagQueryCtrl.class);
|
||||||
private final static Logger logger = LoggerFactory.getLogger(AtuExecplanTagQueryCtrl.class);
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AtuExecplanTagApiService apiService;
|
private AtuExecplanTagApiService apiService;
|
||||||
|
|
||||||
|
|
||||||
@RequiredPermissions("ui-queryPlanTag")
|
@RequiredPermissions("ui-queryPlanTag")
|
||||||
@ApiOperation(value = "获取执行计划引用的标签列表")
|
@ApiOperation(value = "获取执行计划引用的标签列表")
|
||||||
@GetMapping("/queryExecplanTag/{execplanId}")
|
@GetMapping("/queryExecplanTag/{execplanId}")
|
||||||
public ResponseVO<List<TagDto>> queryExecplanTag(@PathVariable("execplanId") String execplanId)
|
public ResponseVO<List<TagDto>> queryExecplanTag(@PathVariable("execplanId") String execplanId) {
|
||||||
{
|
logger.debug("start queryExecplanTag, execplanId:{}", execplanId);
|
||||||
logger.debug("start queryExecplanTag, execplanId:{}", execplanId);
|
ResponseVO<List<TagDto>> responseVO = new ResponseVO<>();
|
||||||
ResponseVO<List<TagDto>> responseVO = new ResponseVO<>();
|
List<TagDto> tagDtos = apiService.queryExecplanTag(execplanId);
|
||||||
List<TagDto> tagDtos = apiService.queryExecplanTag(execplanId);
|
logger.debug("end queryExecplanTag");
|
||||||
logger.debug("end queryExecplanTag");
|
responseVO.setCode(BaseDefineDependencyConstants.SYSTEM_RESPONSE_CODE_SUCCESS);
|
||||||
responseVO.setCode(BaseDefineDependencyConstants.SYSTEM_RESPONSE_CODE_SUCCESS);
|
responseVO.setData(tagDtos);
|
||||||
responseVO.setData(tagDtos);
|
responseVO.setMessage(MsgConstant.RESPONSE_VO_GET_EXE_PLAN_LAB_SUCCESSFULLY);
|
||||||
responseVO.setMessage(MsgConstant.RESPONSE_VO_GET_EXE_PLAN_LAB_SUCCESSFULLY);
|
return responseVO;
|
||||||
return responseVO;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取UI计划类型标签列表")
|
||||||
|
@GetMapping("/queryUIPlanTagOptions")
|
||||||
|
public ResponseVO<List<String>> queryUIPlanTagOptions(@RequestHeader(value = REQUEST_HEADER_PROJECT_ID) Long projectId) {
|
||||||
|
logger.debug("start queryUIScriptTagOptions, projectId:{}", projectId);
|
||||||
|
ResponseVO<List<String>> responseVO = new ResponseVO<>();
|
||||||
|
List<String> res = apiService.queryUIPlanTagOptions(projectId);
|
||||||
|
logger.debug("end queryScriptTag");
|
||||||
|
responseVO.setCode(BaseDefineDependencyConstants.SYSTEM_RESPONSE_CODE_SUCCESS);
|
||||||
|
responseVO.setData(res);
|
||||||
|
return responseVO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,4 +38,5 @@ public interface AtuExecplanTagApiService
|
||||||
*/
|
*/
|
||||||
Integer deleteByExecplanIdAndTagId(String execplanId,Long tagId);
|
Integer deleteByExecplanIdAndTagId(String execplanId,Long tagId);
|
||||||
|
|
||||||
|
List<String> queryUIPlanTagOptions(Long projectId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.form.TagFo
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
||||||
import net.northking.cctp.common.exception.PlatformRuntimeException;
|
import net.northking.cctp.common.exception.PlatformRuntimeException;
|
||||||
import net.northking.cctp.executePlan.constants.MsgConstant;
|
import net.northking.cctp.executePlan.constants.MsgConstant;
|
||||||
|
import net.northking.cctp.executePlan.constants.PlanConstant;
|
||||||
import net.northking.cctp.executePlan.db.dao.AtuPlanInfoDao;
|
import net.northking.cctp.executePlan.db.dao.AtuPlanInfoDao;
|
||||||
import net.northking.cctp.executePlan.db.entity.AtuPlanInfo;
|
import net.northking.cctp.executePlan.db.entity.AtuPlanInfo;
|
||||||
import net.northking.cctp.executePlan.dto.execplanTag.AtuExecplanTagAddDto;
|
import net.northking.cctp.executePlan.dto.execplanTag.AtuExecplanTagAddDto;
|
||||||
|
@ -24,6 +25,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,4 +124,13 @@ public class AtuExecplanTagApiServiceImpl implements AtuExecplanTagApiService
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> queryUIPlanTagOptions(Long projectId) {
|
||||||
|
List<String> tagsByTypeAndProjectId = apiTagService.getTagsByTypeAndProjectId(PlanConstant.UI_PLAN_TAG_TYPE, projectId);
|
||||||
|
if (CollectionUtils.isEmpty(tagsByTypeAndProjectId)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return tagsByTypeAndProjectId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,9 +26,11 @@ import com.github.pagehelper.page.PageMethod;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.hzbank.testteam.autotest.dependencies.authDependency.utils.RequestUtil;
|
import com.hzbank.testteam.autotest.dependencies.authDependency.utils.RequestUtil;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.constants.BaseDefineDependencyConstants;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.constants.BaseDefineDependencyConstants;
|
||||||
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.RequestDTO;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.TagDto;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.TagDto;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.entity.Environment;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.entity.Environment;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.exception.InvalidException;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.exception.InvalidException;
|
||||||
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.form.TagForm;
|
||||||
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
|
||||||
import com.hzbank.testteam.autotest.dependencies.monsterDependency.dto.TestGroupDTO;
|
import com.hzbank.testteam.autotest.dependencies.monsterDependency.dto.TestGroupDTO;
|
||||||
import com.hzbank.testteam.autotest.dependencies.monsterDependency.dto.TestGroupUserDTO;
|
import com.hzbank.testteam.autotest.dependencies.monsterDependency.dto.TestGroupUserDTO;
|
||||||
|
@ -221,6 +223,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
MonsterCommonFeignClient monsterCommonFeignClient;
|
MonsterCommonFeignClient monsterCommonFeignClient;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AttachmentFeignClient attachmentFeignClient;
|
private AttachmentFeignClient attachmentFeignClient;
|
||||||
|
@Autowired
|
||||||
|
private ApiMixHandlerService apiMixHandlerService;
|
||||||
/**
|
/**
|
||||||
* 单次删除最大数量
|
* 单次删除最大数量
|
||||||
*/
|
*/
|
||||||
|
@ -325,6 +329,15 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
PageMethod.orderBy(sort.toString());
|
PageMethod.orderBy(sort.toString());
|
||||||
}
|
}
|
||||||
Pagination<AtuPlanInfoDetailDto> query = this.atuPlanInfoService.queryPlanInfoPage(queryByPage);
|
Pagination<AtuPlanInfoDetailDto> query = this.atuPlanInfoService.queryPlanInfoPage(queryByPage);
|
||||||
|
Map<String, List<TagDto>> tagMap = new HashMap<>();
|
||||||
|
if (!CollectionUtils.isEmpty(query.getRecords())) {
|
||||||
|
List<String> planIds = query.getRecords().stream().map(AtuPlanInfoDetailDto::getId).collect(Collectors.toList());
|
||||||
|
ArrayList<RequestDTO> requestList = new ArrayList<>();
|
||||||
|
requestList.add(new RequestDTO(RequestDTO.RequestContent.tagByObjectIds, planIds));
|
||||||
|
List<Object> mixData = apiMixHandlerService.getMixData(requestList);
|
||||||
|
List<TagDto> tagDtos = JSON.parseArray(JSON.toJSONString(mixData.get(0)), TagDto.class);
|
||||||
|
tagMap = tagDtos.stream().collect(Collectors.groupingBy(TagDto::getObjectId));
|
||||||
|
}
|
||||||
for (AtuPlanInfoDetailDto record : query.getRecords()) {
|
for (AtuPlanInfoDetailDto record : query.getRecords()) {
|
||||||
String projectName = entityNameCache.translateById(EntityNameCatalog.MONSTER_SYSTEM, record.getProjectId());
|
String projectName = entityNameCache.translateById(EntityNameCatalog.MONSTER_SYSTEM, record.getProjectId());
|
||||||
String principalName = entityNameCache.translateById(EntityNameCatalog.MONSTER_USER, record.getPrincipalId());
|
String principalName = entityNameCache.translateById(EntityNameCatalog.MONSTER_USER, record.getPrincipalId());
|
||||||
|
@ -346,6 +359,9 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
record.setNextExecTime(null);
|
record.setNextExecTime(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!CollectionUtils.isEmpty(tagMap.get(record.getId()))) {
|
||||||
|
record.setTags(tagMap.get(record.getId()).stream().map(TagDto::getName).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
@ -547,6 +563,13 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
dto.setAppIdList(appIdList);
|
dto.setAppIdList(appIdList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
List<TagDto> tagDtos = apiTagService.listTagByObjectId(uuid);
|
||||||
|
if (!CollectionUtils.isEmpty(tagDtos)) {
|
||||||
|
dto.setTags(tagDtos.stream().map(TagDto::getName).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
if (dto.getPrincipalId() != null) {
|
||||||
|
dto.setPrincipalName(entityNameCache.translateById(EntityNameCatalog.MONSTER_USER.name(), dto.getPrincipalId()));
|
||||||
|
}
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -664,6 +687,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
attachmentFeignClient.associatedFiles(associatedFilesDto);
|
attachmentFeignClient.associatedFiles(associatedFilesDto);
|
||||||
}
|
}
|
||||||
atuPlanBatchService.deleteByExample(planBatch);
|
atuPlanBatchService.deleteByExample(planBatch);
|
||||||
|
logger.debug("删除标签");
|
||||||
|
apiTagService.removeByObjectId(uuid);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return row;
|
return row;
|
||||||
|
@ -1057,6 +1082,10 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
@Override
|
@Override
|
||||||
public String savePlanData(AtuPlanInfoAddDto dto) {
|
public String savePlanData(AtuPlanInfoAddDto dto) {
|
||||||
logger.info("-------------------->开始保存计划信息");
|
logger.info("-------------------->开始保存计划信息");
|
||||||
|
//校验责任人
|
||||||
|
if (dto.getPrincipalId() == null || dto.getPrincipalId() == "") {
|
||||||
|
throw new PlatformRuntimeException(ExecPlanError.PRINCIPALID_IS_NULL);
|
||||||
|
}
|
||||||
//校验关联设备、应用是否为空
|
//校验关联设备、应用是否为空
|
||||||
checkDeviceAndApp(dto);
|
checkDeviceAndApp(dto);
|
||||||
logger.info("-------------------->校验关联设备、应用是否为空");
|
logger.info("-------------------->校验关联设备、应用是否为空");
|
||||||
|
@ -1149,7 +1178,7 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
//判断是否存在
|
//判断是否存在
|
||||||
AtuPlanInfo planInfo = this.atuPlanInfoService.findByPrimaryKey(uuid);
|
AtuPlanInfo planInfo = this.atuPlanInfoService.findByPrimaryKey(uuid);
|
||||||
if (planInfo != null) {
|
if (planInfo != null) {
|
||||||
entity.setPrincipalId(planInfo.getPrincipalId());
|
entity.setPrincipalId(dto.getPrincipalId());
|
||||||
if (!entity.getHasCorn()) {
|
if (!entity.getHasCorn()) {
|
||||||
Scheduler scheduler = factoryBean.getScheduler();
|
Scheduler scheduler = factoryBean.getScheduler();
|
||||||
if (ScheduleUtils.checkExists(scheduler, entity.getId())) {
|
if (ScheduleUtils.checkExists(scheduler, entity.getId())) {
|
||||||
|
@ -1241,7 +1270,15 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
savePlanScriptData(uuid, mdList);
|
savePlanScriptData(uuid, mdList);
|
||||||
logger.info("-------------------->保存用例集");
|
logger.info("-------------------->保存用例集");
|
||||||
// 保存环境
|
// 保存环境
|
||||||
saveEnv(uuid, dto.getEnvList());
|
saveEnv(uuid, dto.getProjectId(), dto.getEnvList());
|
||||||
|
logger.info("-------------------->保存环境");
|
||||||
|
// 保存标签
|
||||||
|
TagForm form = new TagForm();
|
||||||
|
form.setTags(dto.getTags());
|
||||||
|
form.setProjectId(RequestUtil.getProjectId());
|
||||||
|
form.setObjectId(uuid);
|
||||||
|
form.setType(PlanConstant.UI_PLAN_TAG_TYPE);
|
||||||
|
apiTagService.saveTags(form);
|
||||||
logger.info("-------------------->保存环境");
|
logger.info("-------------------->保存环境");
|
||||||
return uuid;
|
return uuid;
|
||||||
}
|
}
|
||||||
|
@ -1264,12 +1301,16 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void saveEnv(String planId, List<String> envList) {
|
private void saveEnv(String planId, String projectId, List<String> envList) {
|
||||||
if (envList == null || envList.isEmpty()) {
|
if (envList == null || envList.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long projectId = RequestUtil.getProjectId();
|
Long envProjectId = null;
|
||||||
ResponseVO<List<Environment>> responseVO = apiAtsEnviromentFeign.listByProject(projectId);
|
if (StringUtils.isNotBlank(projectId)) {
|
||||||
|
envProjectId = Long.parseLong(projectId);
|
||||||
|
}
|
||||||
|
|
||||||
|
ResponseVO<List<Environment>> responseVO = apiAtsEnviromentFeign.listByProject(envProjectId);
|
||||||
List<Environment> data = responseVO.getData();
|
List<Environment> data = responseVO.getData();
|
||||||
List<String> envIds = data.stream().map(e -> e.getId().toString()).collect(Collectors.toList());
|
List<String> envIds = data.stream().map(e -> e.getId().toString()).collect(Collectors.toList());
|
||||||
for (String id : envList) {
|
for (String id : envList) {
|
||||||
|
@ -1691,8 +1732,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
ExcelWriter writer = ExcelUtil.getWriter();
|
ExcelWriter writer = ExcelUtil.getWriter();
|
||||||
writer.addHeaderAlias("scriptCode", "脚本编号");
|
writer.addHeaderAlias("scriptCode", "脚本编号");
|
||||||
writer.addHeaderAlias("scriptName", "脚本名称");
|
writer.addHeaderAlias("scriptName", "脚本名称");
|
||||||
writer.addHeaderAlias("caseName", "用例名称");
|
writer.addHeaderAlias("caseName", "轮次名称");
|
||||||
writer.addHeaderAlias("caseType", "用例类型");
|
writer.addHeaderAlias("caseType", "轮次类型");
|
||||||
writer.addHeaderAlias("elapsedTime", "耗时(毫秒)");
|
writer.addHeaderAlias("elapsedTime", "耗时(毫秒)");
|
||||||
writer.addHeaderAlias("deviceName", "执行设备");
|
writer.addHeaderAlias("deviceName", "执行设备");
|
||||||
writer.addHeaderAlias("status", "执行状态");
|
writer.addHeaderAlias("status", "执行状态");
|
||||||
|
@ -1933,7 +1974,7 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
List<String> tagNames = new ArrayList<>(data.values());
|
List<String> tagNames = new ArrayList<>(data.values());
|
||||||
List<TagDto> tagDtos = apiTagService.getTagDtosByNameAndType(tagNames, 4);
|
List<TagDto> tagDtos = apiTagService.getTagDtosByNameAndType(tagNames, PlanConstant.UI_PLAN_TAG_TYPE);
|
||||||
if (tagDtos == null) {
|
if (tagDtos == null) {
|
||||||
logger.error("根据标签和类型获取关联计划Id异常,响应信息:" + JSON.toJSONString(responseVO));
|
logger.error("根据标签和类型获取关联计划Id异常,响应信息:" + JSON.toJSONString(responseVO));
|
||||||
throw new InvalidException("根据标签和类型获取关联计划Id异常");
|
throw new InvalidException("根据标签和类型获取关联计划Id异常");
|
||||||
|
|
|
@ -133,7 +133,6 @@ public class AtuPlanSceneCaseTaskApiServiceImpl implements AtuPlanSceneCaseTaskA
|
||||||
logger.debug("批次[" + planTask.getBatchId() + "]开始执行,更新计划的状态");
|
logger.debug("批次[" + planTask.getBatchId() + "]开始执行,更新计划的状态");
|
||||||
planInfoService.updatePlanByLastBatchId(planTask.getBatchId(), PlanConstant.PLAN_EXECUTING_STATUS);
|
planInfoService.updatePlanByLastBatchId(planTask.getBatchId(), PlanConstant.PLAN_EXECUTING_STATUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新批次统计数据
|
// 更新批次统计数据
|
||||||
planBatchApiService.updateCacheBatchSumData(planTask);
|
planBatchApiService.updateCacheBatchSumData(planTask);
|
||||||
}
|
}
|
||||||
|
@ -329,6 +328,7 @@ public class AtuPlanSceneCaseTaskApiServiceImpl implements AtuPlanSceneCaseTaskA
|
||||||
atuTaskExecDto.setAppSet(planInfo.getAppSet());
|
atuTaskExecDto.setAppSet(planInfo.getAppSet());
|
||||||
atuTaskExecDto.setScreenRecordSet(planInfo.getScreenRecordSet());
|
atuTaskExecDto.setScreenRecordSet(planInfo.getScreenRecordSet());
|
||||||
atuTaskExecDto.setScreenshotSet(planInfo.getScreenshotSet());
|
atuTaskExecDto.setScreenshotSet(planInfo.getScreenshotSet());
|
||||||
|
// TODO: 是不是要先做判断是否勾选了失败重试才去设置这两个值
|
||||||
atuTaskExecDto.setFailRetryNum(planInfo.getFailRetryCount());
|
atuTaskExecDto.setFailRetryNum(planInfo.getFailRetryCount());
|
||||||
// 重试策略
|
// 重试策略
|
||||||
atuTaskExecDto.setRetryStrategy(planInfo.getRetryStrategy());
|
atuTaskExecDto.setRetryStrategy(planInfo.getRetryStrategy());
|
||||||
|
|
|
@ -1514,7 +1514,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
||||||
logger.info("普通脚本任务id:{},执行结果文件:{}", task.getId(), task.getExecResultFile());
|
logger.info("普通脚本任务id:{},执行结果文件:{}", task.getId(), task.getExecResultFile());
|
||||||
taskIds.add(task.getId());
|
taskIds.add(task.getId());
|
||||||
String execResultFile = task.getExecResultFile();
|
String execResultFile = task.getExecResultFile();
|
||||||
if (StringUtils.isNotBlank(execResultFile)){
|
if (StringUtils.isNotBlank(execResultFile)) {
|
||||||
deletedFilePath.add(execResultFile);
|
deletedFilePath.add(execResultFile);
|
||||||
getActualImagePath(deletedFilePath, execResultFile);
|
getActualImagePath(deletedFilePath, execResultFile);
|
||||||
}
|
}
|
||||||
|
@ -1534,7 +1534,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
||||||
if (!CollectionUtils.isEmpty(taskIds)) {
|
if (!CollectionUtils.isEmpty(taskIds)) {
|
||||||
List<AtuPlanSceneCaseTask> atuPlanSceneCaseTaskList = atuPlanSceneCaseTaskService.querySceneCaseTasksByTaskIds(taskIds);
|
List<AtuPlanSceneCaseTask> atuPlanSceneCaseTaskList = atuPlanSceneCaseTaskService.querySceneCaseTasksByTaskIds(taskIds);
|
||||||
atuPlanSceneCaseTaskList.forEach(atuPlanSceneCaseTask -> {
|
atuPlanSceneCaseTaskList.forEach(atuPlanSceneCaseTask -> {
|
||||||
logger.info("场景任务id:{},节点任务id:{},执行结果文件:{}", atuPlanSceneCaseTask.getTaskId(),atuPlanSceneCaseTask.getId(), atuPlanSceneCaseTask.getExecResultFile());
|
logger.info("场景任务id:{},节点任务id:{},执行结果文件:{}", atuPlanSceneCaseTask.getTaskId(), atuPlanSceneCaseTask.getId(), atuPlanSceneCaseTask.getExecResultFile());
|
||||||
String videoUrl = atuPlanSceneCaseTask.getVideoUrl();
|
String videoUrl = atuPlanSceneCaseTask.getVideoUrl();
|
||||||
if (StringUtils.isNotBlank(videoUrl)) {
|
if (StringUtils.isNotBlank(videoUrl)) {
|
||||||
deletedFilePath.add("/" + MinioPathUtils.idToPath(videoUrl)[1]);
|
deletedFilePath.add("/" + MinioPathUtils.idToPath(videoUrl)[1]);
|
||||||
|
@ -1613,8 +1613,8 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
||||||
planTask.setVersionName(atuScriptDetailDto.getVersionName());
|
planTask.setVersionName(atuScriptDetailDto.getVersionName());
|
||||||
planTask.setScriptName(atuScriptDetailDto.getScriptName());
|
planTask.setScriptName(atuScriptDetailDto.getScriptName());
|
||||||
planTask.setScriptJson(atuScriptDetailDto.getScriptPath());
|
planTask.setScriptJson(atuScriptDetailDto.getScriptPath());
|
||||||
planTask.setAppId(queryAppId(planInfo.getId(),atuScriptDetailDto.getPlatformType(),
|
planTask.setAppId(queryAppId(planInfo.getId(), atuScriptDetailDto.getPlatformType(),
|
||||||
atuScriptDetailDto.getAppPackage(),atuScriptDetailDto.getScriptType()));
|
atuScriptDetailDto.getAppPackage(), atuScriptDetailDto.getScriptType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("生成任务执行信息");
|
logger.debug("生成任务执行信息");
|
||||||
|
@ -1729,7 +1729,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
||||||
planTask.setBugId("");
|
planTask.setBugId("");
|
||||||
if (sceneNodeExecDto != null && sceneNodeExecDto.getSceneScriptUrl() != null) {
|
if (sceneNodeExecDto != null && sceneNodeExecDto.getSceneScriptUrl() != null) {
|
||||||
planTask.setScriptJson(sceneNodeExecDto.getSceneScriptUrl());
|
planTask.setScriptJson(sceneNodeExecDto.getSceneScriptUrl());
|
||||||
}else {
|
} else {
|
||||||
logger.info("首节点返回sceneScriptUrl为空" + sceneNodeExecDto);
|
logger.info("首节点返回sceneScriptUrl为空" + sceneNodeExecDto);
|
||||||
}
|
}
|
||||||
int rows = atuPlanTaskService.updateByPrimaryKey(planTask);
|
int rows = atuPlanTaskService.updateByPrimaryKey(planTask);
|
||||||
|
|
|
@ -75,8 +75,8 @@ public class MsgConstant {
|
||||||
//tableHeardList
|
//tableHeardList
|
||||||
public static final String TABLE_HEARD_LIST_SCRIPT_NUM= "脚本编号";
|
public static final String TABLE_HEARD_LIST_SCRIPT_NUM= "脚本编号";
|
||||||
public static final String TABLE_HEARD_LIST_SCRIPT_NAME= "脚本名称";
|
public static final String TABLE_HEARD_LIST_SCRIPT_NAME= "脚本名称";
|
||||||
public static final String TABLE_HEARD_LIST_TEST_CASE_NAME= "用例名称";
|
public static final String TABLE_HEARD_LIST_TEST_CASE_NAME= "轮次名称";
|
||||||
public static final String TABLE_HEARD_LIST_TEST_CASE_TYPE= "用例类型";
|
public static final String TABLE_HEARD_LIST_TEST_CASE_TYPE= "轮次类型";
|
||||||
public static final String TABLE_HEARD_LIST_TIME_CONSUMING= "耗时(毫秒)";
|
public static final String TABLE_HEARD_LIST_TIME_CONSUMING= "耗时(毫秒)";
|
||||||
public static final String TABLE_HEARD_LIST_EXEC_DEVICE= "执行设备";
|
public static final String TABLE_HEARD_LIST_EXEC_DEVICE= "执行设备";
|
||||||
public static final String TABLE_HEARD_LIST_EXEC_STATUS= "执行状态";
|
public static final String TABLE_HEARD_LIST_EXEC_STATUS= "执行状态";
|
||||||
|
|
|
@ -323,5 +323,9 @@ public class PlanConstant {
|
||||||
* 输入项数据集引用类型-模糊数据
|
* 输入项数据集引用类型-模糊数据
|
||||||
*/
|
*/
|
||||||
public static final String INPUT_SET_QUOTE_TYPE_FUZZY = "2";
|
public static final String INPUT_SET_QUOTE_TYPE_FUZZY = "2";
|
||||||
|
/**
|
||||||
|
* 通用标签UI执行计划标签类型码
|
||||||
|
*/
|
||||||
|
public static final Integer UI_PLAN_TAG_TYPE = 4;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,18 +59,25 @@ public class TaskExecHeartbeatConsumer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleTaskHeartbeat(String taskId, String taskType){
|
private void handleTaskHeartbeat(String taskId, String taskType){
|
||||||
AtuPlanTask planTask = new AtuPlanTask();
|
try {
|
||||||
planTask.setId(taskId);
|
AtuPlanTask planTask = new AtuPlanTask();
|
||||||
planTask.setLastHeartbeatTime(new Date());
|
planTask.setId(taskId);
|
||||||
if (PlanConstant.SCRIPT_TYPE_SCENE.equals(taskType)){
|
planTask.setLastHeartbeatTime(new Date());
|
||||||
// 场景任务
|
if (PlanConstant.SCRIPT_TYPE_SCENE.equals(taskType)) {
|
||||||
AtuPlanSceneCaseTask sceneCaseTask = planSceneCaseTaskService.findByPrimaryKey(taskId);
|
// 场景任务
|
||||||
sceneCaseTask.setLastHeartbeatTime(new Date());
|
AtuPlanSceneCaseTask sceneCaseTask = planSceneCaseTaskService.findByPrimaryKey(taskId);
|
||||||
planSceneCaseTaskService.updateByPrimaryKey(sceneCaseTask);
|
if (sceneCaseTask != null) {
|
||||||
// 更新场景节点对应的任务心跳
|
sceneCaseTask.setLastHeartbeatTime(new Date());
|
||||||
planTask.setId(sceneCaseTask.getTaskId());
|
planSceneCaseTaskService.updateByPrimaryKey(sceneCaseTask);
|
||||||
|
// 更新场景节点对应的任务心跳
|
||||||
|
planTask.setId(sceneCaseTask.getTaskId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 普通任务
|
||||||
|
planTaskService.updateByPrimaryKey(planTask);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("更新{}任务心跳失败", taskId);
|
||||||
|
logger.error("更新任务心跳失败,原因", e);
|
||||||
}
|
}
|
||||||
// 普通任务
|
|
||||||
planTaskService.updateByPrimaryKey(planTask);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,4 @@ public interface AtuPlanTaskRecordDao extends AtuPlanTaskRecordMapper
|
||||||
{
|
{
|
||||||
List<PlanTaskRecordDto> queryTotalTake(@Param("taskIds") List<String> taskIds);
|
List<PlanTaskRecordDto> queryTotalTake(@Param("taskIds") List<String> taskIds);
|
||||||
|
|
||||||
List<AtuPlanTaskRecord> queryReTryTaskByTaskIds(@Param("taskIds") List<String> taskIds);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,11 +64,6 @@ public class AtuPlanTaskRecordServiceImpl extends PaginationService<AtuPlanTaskR
|
||||||
return atuPlanTaskRecordDao.queryTotalTake(ids);
|
return atuPlanTaskRecordDao.queryTotalTake(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AtuPlanTaskRecord> queryReTryTaskByTaskIds(List<String> ids) {
|
|
||||||
return atuPlanTaskRecordDao.queryReTryTaskByTaskIds(ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,4 @@ public interface AtuPlanTaskRecordService extends BasicService<AtuPlanTaskRecord
|
||||||
|
|
||||||
// ---- The End by Generator ----//
|
// ---- The End by Generator ----//
|
||||||
List<PlanTaskRecordDto> queryTotalTake(List<String> ids);
|
List<PlanTaskRecordDto> queryTotalTake(List<String> ids);
|
||||||
|
|
||||||
List<AtuPlanTaskRecord> queryReTryTaskByTaskIds(List<String> ids);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,6 +143,19 @@ public class AtuPlanInfoAddDto implements Serializable
|
||||||
|
|
||||||
@ApiModelProperty("是否存在移动脚本")
|
@ApiModelProperty("是否存在移动脚本")
|
||||||
private boolean hasMob;
|
private boolean hasMob;
|
||||||
|
@ApiModelProperty("是否存在移动脚本")
|
||||||
|
private List<String> tags;
|
||||||
|
|
||||||
|
public List<String> getTags() {
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTags(List<String> tags) {
|
||||||
|
this.tags = tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiModelProperty("计划负责人")
|
||||||
|
private String principalId;
|
||||||
|
|
||||||
public boolean isHasAPI() {
|
public boolean isHasAPI() {
|
||||||
return hasAPI;
|
return hasAPI;
|
||||||
|
@ -351,4 +364,12 @@ public class AtuPlanInfoAddDto implements Serializable
|
||||||
public void setRetryStrategy(String retryStrategy) {
|
public void setRetryStrategy(String retryStrategy) {
|
||||||
this.retryStrategy = retryStrategy;
|
this.retryStrategy = retryStrategy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPrincipalId() {
|
||||||
|
return principalId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrincipalId(String principalId) {
|
||||||
|
this.principalId = principalId;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -260,12 +260,25 @@ public class AtuPlanInfoDetailDto implements Serializable
|
||||||
@ApiModelProperty("负责人")
|
@ApiModelProperty("负责人")
|
||||||
private String principalId;
|
private String principalId;
|
||||||
|
|
||||||
|
@ApiModelProperty("负责人姓名")
|
||||||
|
private String principalName;
|
||||||
|
|
||||||
@ApiModelProperty("最后批次脚本统计数据")
|
@ApiModelProperty("最后批次脚本统计数据")
|
||||||
private Map<String, Integer> lastBatchScriptSumMap;
|
private Map<String, Integer> lastBatchScriptSumMap;
|
||||||
|
|
||||||
@ApiModelProperty("绑定应用id集合")
|
@ApiModelProperty("绑定应用id集合")
|
||||||
private List<String> appIdList;
|
private List<String> appIdList;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否存在移动脚本")
|
||||||
|
private List<String> tags;
|
||||||
|
|
||||||
|
public List<String> getTags() {
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTags(List<String> tags) {
|
||||||
|
this.tags = tags;
|
||||||
|
}
|
||||||
public List<String> getAppIdList() {
|
public List<String> getAppIdList() {
|
||||||
return appIdList;
|
return appIdList;
|
||||||
}
|
}
|
||||||
|
@ -634,6 +647,14 @@ public class AtuPlanInfoDetailDto implements Serializable
|
||||||
this.principalId = principalId;
|
this.principalId = principalId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPrincipalName() {
|
||||||
|
return principalName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrincipalName(String principalName) {
|
||||||
|
this.principalName = principalName;
|
||||||
|
}
|
||||||
|
|
||||||
public Map<String, Integer> getLastBatchScriptSumMap() {
|
public Map<String, Integer> getLastBatchScriptSumMap() {
|
||||||
return lastBatchScriptSumMap;
|
return lastBatchScriptSumMap;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ public enum ExecPlanError implements PlatformError {
|
||||||
|
|
||||||
PLAN_NAME_ERROR("系统下的计划名称不能重复"),
|
PLAN_NAME_ERROR("系统下的计划名称不能重复"),
|
||||||
PLAN_NAME_TOO_LONG("计划名称超过30位,请修改计划名称!"),
|
PLAN_NAME_TOO_LONG("计划名称超过30位,请修改计划名称!"),
|
||||||
|
PRINCIPALID_IS_NULL("责任人不能为空"),
|
||||||
PLAN_IS_NULL("计划信息不存在"),
|
PLAN_IS_NULL("计划信息不存在"),
|
||||||
PLAN_CASE_SET_IS_NULL("计划用例集信息不存在"),
|
PLAN_CASE_SET_IS_NULL("计划用例集信息不存在"),
|
||||||
PLAN_IS_UN_ENABLE("计划被禁用,执行失败!"),
|
PLAN_IS_UN_ENABLE("计划被禁用,执行失败!"),
|
||||||
|
@ -85,10 +86,8 @@ public enum ExecPlanError implements PlatformError {
|
||||||
|
|
||||||
PARSE_DATE_ERROR("格式化日期出错,请检查参数"),
|
PARSE_DATE_ERROR("格式化日期出错,请检查参数"),
|
||||||
|
|
||||||
EMPTY_BATCH_ID("批次id不能为空"),
|
|
||||||
|
|
||||||
GET_FILE_FAIL("获取文件失败"),
|
GET_FILE_FAIL("获取文件失败"),
|
||||||
|
EMPTY_BATCH_ID("批次id不能为空"),
|
||||||
BATCH_IS_DEALING_WITH_RETRY("批次的任务重试正在处理中..."),
|
BATCH_IS_DEALING_WITH_RETRY("批次的任务重试正在处理中..."),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package net.northking.cctp.executePlan.feign;
|
||||||
|
|
||||||
|
import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.dto.RequestDTO;
|
||||||
|
import net.northking.cctp.common.feign.FeignCctpConfig;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@FeignClient(contextId = "apiMixHandleService", value = "common-center", path = "/common-center/api/mix-handler", configuration = {FeignCctpConfig.class})
|
||||||
|
public interface ApiMixHandlerService {
|
||||||
|
/**
|
||||||
|
* 获取各类基础信息数据
|
||||||
|
*
|
||||||
|
* @return 数据集合
|
||||||
|
*/
|
||||||
|
@PostMapping("/get")
|
||||||
|
List<Object> getMixData(@RequestBody List<RequestDTO> requestList);
|
||||||
|
|
||||||
|
}
|
|
@ -7,9 +7,7 @@ import net.northking.cctp.executePlan.config.AtuPlanConfig;
|
||||||
import net.northking.cctp.executePlan.constants.PlanConstant;
|
import net.northking.cctp.executePlan.constants.PlanConstant;
|
||||||
import net.northking.cctp.executePlan.db.entity.AtuPlanSceneCaseTask;
|
import net.northking.cctp.executePlan.db.entity.AtuPlanSceneCaseTask;
|
||||||
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
|
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
|
||||||
import net.northking.cctp.executePlan.db.entity.AtuPlanTaskRecord;
|
|
||||||
import net.northking.cctp.executePlan.db.service.AtuPlanSceneCaseTaskService;
|
import net.northking.cctp.executePlan.db.service.AtuPlanSceneCaseTaskService;
|
||||||
import net.northking.cctp.executePlan.db.service.AtuPlanTaskRecordService;
|
|
||||||
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
|
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
|
||||||
import net.northking.cctp.executePlan.dto.planTask.AtuTaskExecResultDto;
|
import net.northking.cctp.executePlan.dto.planTask.AtuTaskExecResultDto;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -23,7 +21,6 @@ import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@Configuration
|
@Configuration
|
||||||
|
@ -48,9 +45,6 @@ public class TaskExecTimeoutJob {
|
||||||
@Autowired
|
@Autowired
|
||||||
private AtuPlanConfig atuPlanConfig;
|
private AtuPlanConfig atuPlanConfig;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AtuPlanTaskRecordService atuPlanTaskRecordService;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 超时时间,默认3分钟,单位秒
|
* 超时时间,默认3分钟,单位秒
|
||||||
|
@ -73,9 +67,6 @@ public class TaskExecTimeoutJob {
|
||||||
taskTimeoutHandle(taskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
taskTimeoutHandle(taskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
||||||
|
|
||||||
List<AtuPlanTask> waitTimeoutTask = planTaskApiService.queryWaitTimeoutTask(atuPlanConfig.getWaitTimeout());
|
List<AtuPlanTask> waitTimeoutTask = planTaskApiService.queryWaitTimeoutTask(atuPlanConfig.getWaitTimeout());
|
||||||
List<AtuPlanTaskRecord> reTryTasks = atuPlanTaskRecordService.queryReTryTaskByTaskIds(waitTimeoutTask.stream().map(AtuPlanTask::getId).collect(Collectors.toList()));
|
|
||||||
List<String> reTryTaskIds = reTryTasks.stream().map(AtuPlanTaskRecord::getTaskId).collect(Collectors.toList());
|
|
||||||
waitTimeoutTask.removeIf(task -> reTryTaskIds.contains(task.getId()));
|
|
||||||
logger.debug("等待超时任务数量:{}", waitTimeoutTask.size());
|
logger.debug("等待超时任务数量:{}", waitTimeoutTask.size());
|
||||||
taskTimeoutHandle(waitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
taskTimeoutHandle(waitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
||||||
|
|
||||||
|
@ -83,9 +74,6 @@ public class TaskExecTimeoutJob {
|
||||||
logger.debug("场景节点执行超时任务数量:{}", sceneCaseTaskList.size());
|
logger.debug("场景节点执行超时任务数量:{}", sceneCaseTaskList.size());
|
||||||
sceneTaskTimeoutHandle(sceneCaseTaskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
sceneTaskTimeoutHandle(sceneCaseTaskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
||||||
List<AtuPlanSceneCaseTask> sceneWaitTimeoutTask = sceneCaseTaskService.queryWaitTimeoutTask(atuPlanConfig.getWaitTimeout());
|
List<AtuPlanSceneCaseTask> sceneWaitTimeoutTask = sceneCaseTaskService.queryWaitTimeoutTask(atuPlanConfig.getWaitTimeout());
|
||||||
List<AtuPlanTaskRecord> reTrySceneCaseTask = atuPlanTaskRecordService.queryReTryTaskByTaskIds(sceneWaitTimeoutTask.stream().map(AtuPlanSceneCaseTask::getTaskId).collect(Collectors.toList()));
|
|
||||||
List<String> reTrySceneCaseTaskIds = reTrySceneCaseTask.stream().map(AtuPlanTaskRecord::getTaskId).collect(Collectors.toList());
|
|
||||||
sceneWaitTimeoutTask.removeIf(sceneCaseTask -> reTrySceneCaseTaskIds.contains(sceneCaseTask.getId()));
|
|
||||||
logger.debug("场景节点等待超时任务数量:{}", sceneWaitTimeoutTask.size());
|
logger.debug("场景节点等待超时任务数量:{}", sceneWaitTimeoutTask.size());
|
||||||
sceneTaskTimeoutHandle(sceneWaitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
sceneTaskTimeoutHandle(sceneWaitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,16 +24,4 @@
|
||||||
) AS temp
|
) AS temp
|
||||||
GROUP BY task_id
|
GROUP BY task_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="queryReTryTaskByTaskIds"
|
|
||||||
resultType="net.northking.cctp.executePlan.db.entity.AtuPlanTaskRecord">
|
|
||||||
SELECT *
|
|
||||||
FROM <include refid="Table_Name" />
|
|
||||||
WHERE
|
|
||||||
task_id IN
|
|
||||||
<foreach collection="taskIds" item="id" open="(" separator="," close=")">
|
|
||||||
#{id, jdbcType=VARCHAR}
|
|
||||||
</foreach>
|
|
||||||
and execute_type = '2'
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
Binary file not shown.
|
@ -26,6 +26,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
WORKDIR ${CCTP_HOME}
|
WORKDIR ${CCTP_HOME}
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "java -jar -Xmx256M -Dfile.encoding=UTF-8 -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} -Dloader.path=.,lib ${JAR_FILE}"]
|
ENTRYPOINT ["sh", "-c", "java -jar -Xmx256M -Dfile.encoding=UTF-8 -DNACOS_NAMESPACE=${NACOS_SPACE} -DNACOS_SERVER_URL=${NACOS_URL} ${JAR_FILE}"]
|
||||||
|
|
||||||
#CMD [""]
|
#CMD [""]
|
||||||
|
|
Loading…
Reference in New Issue