代码到20250102
parent
c9fac180e6
commit
795a83a563
|
@ -919,7 +919,7 @@ public class DefaultExecThread implements AtuExecThread{
|
|||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
if(null==executeResult){
|
||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
||||
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 [""]
|
||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
||||
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 [""]
|
||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
||||
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 [""]
|
||||
|
|
|
@ -35,6 +35,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
||||
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 [""]
|
||||
|
|
|
@ -32,10 +32,6 @@
|
|||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
|
|
|
@ -10,7 +10,7 @@ APP_VERSION=3.0-SNAPSHOT
|
|||
JAR_FILE=${APP_NAME}-${APP_VERSION}.ms.jar
|
||||
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}"
|
||||
|
||||
if [ 0"$NK_HOME" = "0" ]; then
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package net.northking.cctp.executePlan.api;
|
||||
|
||||
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 io.swagger.annotations.Api;
|
||||
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.AtuPlanTaskApiService;
|
||||
import net.northking.cctp.executePlan.dto.planBatch.AtuExceptionCase;
|
||||
import org.redisson.client.RedisConnection;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
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.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.Map;
|
||||
|
||||
|
@ -46,6 +58,9 @@ public class AtuPlanInfoPubCtrl {
|
|||
@Autowired
|
||||
private AtuPlanBatchApiService planBatchApiService;
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate redisTemplate;
|
||||
|
||||
/**
|
||||
* 更新任务执行结果文件
|
||||
* @param params 参数 {“taskId”:"", "filePath": ""}
|
||||
|
@ -105,4 +120,26 @@ public class AtuPlanInfoPubCtrl {
|
|||
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;
|
||||
|
||||
import cn.gjing.tools.auth.annotation.RequiredPermissions;
|
||||
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.vo.ResponseVO;
|
||||
import cn.gjing.tools.auth.annotation.RequiredPermissions;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.hzbank.testteam.autotest.dependencies.authDependency.constants.AuthDependencyConstants.REQUEST_HEADER_PROJECT_ID;
|
||||
|
||||
@Api(tags = "执行计划标签表")
|
||||
@RequestMapping("/v1")
|
||||
@RestController
|
||||
public class AtuExecplanTagQueryCtrl
|
||||
{
|
||||
/**
|
||||
* 日志
|
||||
*/
|
||||
private final static Logger logger = LoggerFactory.getLogger(AtuExecplanTagQueryCtrl.class);
|
||||
public class AtuExecplanTagQueryCtrl {
|
||||
/**
|
||||
* 日志
|
||||
*/
|
||||
private final static Logger logger = LoggerFactory.getLogger(AtuExecplanTagQueryCtrl.class);
|
||||
|
||||
@Autowired
|
||||
private AtuExecplanTagApiService apiService;
|
||||
@Autowired
|
||||
private AtuExecplanTagApiService apiService;
|
||||
|
||||
|
||||
@RequiredPermissions("ui-queryPlanTag")
|
||||
@ApiOperation(value = "获取执行计划引用的标签列表")
|
||||
@GetMapping("/queryExecplanTag/{execplanId}")
|
||||
public ResponseVO<List<TagDto>> queryExecplanTag(@PathVariable("execplanId") String execplanId)
|
||||
{
|
||||
logger.debug("start queryExecplanTag, execplanId:{}", execplanId);
|
||||
ResponseVO<List<TagDto>> responseVO = new ResponseVO<>();
|
||||
List<TagDto> tagDtos = apiService.queryExecplanTag(execplanId);
|
||||
logger.debug("end queryExecplanTag");
|
||||
responseVO.setCode(BaseDefineDependencyConstants.SYSTEM_RESPONSE_CODE_SUCCESS);
|
||||
responseVO.setData(tagDtos);
|
||||
responseVO.setMessage(MsgConstant.RESPONSE_VO_GET_EXE_PLAN_LAB_SUCCESSFULLY);
|
||||
return responseVO;
|
||||
}
|
||||
|
||||
@RequiredPermissions("ui-queryPlanTag")
|
||||
@ApiOperation(value = "获取执行计划引用的标签列表")
|
||||
@GetMapping("/queryExecplanTag/{execplanId}")
|
||||
public ResponseVO<List<TagDto>> queryExecplanTag(@PathVariable("execplanId") String execplanId) {
|
||||
logger.debug("start queryExecplanTag, execplanId:{}", execplanId);
|
||||
ResponseVO<List<TagDto>> responseVO = new ResponseVO<>();
|
||||
List<TagDto> tagDtos = apiService.queryExecplanTag(execplanId);
|
||||
logger.debug("end queryExecplanTag");
|
||||
responseVO.setCode(BaseDefineDependencyConstants.SYSTEM_RESPONSE_CODE_SUCCESS);
|
||||
responseVO.setData(tagDtos);
|
||||
responseVO.setMessage(MsgConstant.RESPONSE_VO_GET_EXE_PLAN_LAB_SUCCESSFULLY);
|
||||
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);
|
||||
|
||||
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 net.northking.cctp.common.exception.PlatformRuntimeException;
|
||||
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.entity.AtuPlanInfo;
|
||||
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.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -122,4 +124,13 @@ public class AtuExecplanTagApiServiceImpl implements AtuExecplanTagApiService
|
|||
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.hzbank.testteam.autotest.dependencies.authDependency.utils.RequestUtil;
|
||||
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.entity.Environment;
|
||||
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.monsterDependency.dto.TestGroupDTO;
|
||||
import com.hzbank.testteam.autotest.dependencies.monsterDependency.dto.TestGroupUserDTO;
|
||||
|
@ -221,6 +223,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
MonsterCommonFeignClient monsterCommonFeignClient;
|
||||
@Autowired
|
||||
private AttachmentFeignClient attachmentFeignClient;
|
||||
@Autowired
|
||||
private ApiMixHandlerService apiMixHandlerService;
|
||||
/**
|
||||
* 单次删除最大数量
|
||||
*/
|
||||
|
@ -325,6 +329,15 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
PageMethod.orderBy(sort.toString());
|
||||
}
|
||||
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()) {
|
||||
String projectName = entityNameCache.translateById(EntityNameCatalog.MONSTER_SYSTEM, record.getProjectId());
|
||||
String principalName = entityNameCache.translateById(EntityNameCatalog.MONSTER_USER, record.getPrincipalId());
|
||||
|
@ -346,6 +359,9 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
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;
|
||||
}
|
||||
|
@ -547,6 +563,13 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
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;
|
||||
}
|
||||
|
||||
|
@ -664,6 +687,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
attachmentFeignClient.associatedFiles(associatedFilesDto);
|
||||
}
|
||||
atuPlanBatchService.deleteByExample(planBatch);
|
||||
logger.debug("删除标签");
|
||||
apiTagService.removeByObjectId(uuid);
|
||||
});
|
||||
}
|
||||
return row;
|
||||
|
@ -1057,6 +1082,10 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
@Override
|
||||
public String savePlanData(AtuPlanInfoAddDto dto) {
|
||||
logger.info("-------------------->开始保存计划信息");
|
||||
//校验责任人
|
||||
if (dto.getPrincipalId() == null || dto.getPrincipalId() == "") {
|
||||
throw new PlatformRuntimeException(ExecPlanError.PRINCIPALID_IS_NULL);
|
||||
}
|
||||
//校验关联设备、应用是否为空
|
||||
checkDeviceAndApp(dto);
|
||||
logger.info("-------------------->校验关联设备、应用是否为空");
|
||||
|
@ -1149,7 +1178,7 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
//判断是否存在
|
||||
AtuPlanInfo planInfo = this.atuPlanInfoService.findByPrimaryKey(uuid);
|
||||
if (planInfo != null) {
|
||||
entity.setPrincipalId(planInfo.getPrincipalId());
|
||||
entity.setPrincipalId(dto.getPrincipalId());
|
||||
if (!entity.getHasCorn()) {
|
||||
Scheduler scheduler = factoryBean.getScheduler();
|
||||
if (ScheduleUtils.checkExists(scheduler, entity.getId())) {
|
||||
|
@ -1241,7 +1270,15 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
savePlanScriptData(uuid, mdList);
|
||||
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("-------------------->保存环境");
|
||||
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()) {
|
||||
return;
|
||||
}
|
||||
Long projectId = RequestUtil.getProjectId();
|
||||
ResponseVO<List<Environment>> responseVO = apiAtsEnviromentFeign.listByProject(projectId);
|
||||
Long envProjectId = null;
|
||||
if (StringUtils.isNotBlank(projectId)) {
|
||||
envProjectId = Long.parseLong(projectId);
|
||||
}
|
||||
|
||||
ResponseVO<List<Environment>> responseVO = apiAtsEnviromentFeign.listByProject(envProjectId);
|
||||
List<Environment> data = responseVO.getData();
|
||||
List<String> envIds = data.stream().map(e -> e.getId().toString()).collect(Collectors.toList());
|
||||
for (String id : envList) {
|
||||
|
@ -1691,8 +1732,8 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
ExcelWriter writer = ExcelUtil.getWriter();
|
||||
writer.addHeaderAlias("scriptCode", "脚本编号");
|
||||
writer.addHeaderAlias("scriptName", "脚本名称");
|
||||
writer.addHeaderAlias("caseName", "用例名称");
|
||||
writer.addHeaderAlias("caseType", "用例类型");
|
||||
writer.addHeaderAlias("caseName", "轮次名称");
|
||||
writer.addHeaderAlias("caseType", "轮次类型");
|
||||
writer.addHeaderAlias("elapsedTime", "耗时(毫秒)");
|
||||
writer.addHeaderAlias("deviceName", "执行设备");
|
||||
writer.addHeaderAlias("status", "执行状态");
|
||||
|
@ -1933,7 +1974,7 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
return new ArrayList<>();
|
||||
}
|
||||
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) {
|
||||
logger.error("根据标签和类型获取关联计划Id异常,响应信息:" + JSON.toJSONString(responseVO));
|
||||
throw new InvalidException("根据标签和类型获取关联计划Id异常");
|
||||
|
@ -1958,7 +1999,7 @@ public class AtuPlanInfoApiServiceImpl extends AbstractExcelService<AtuPlanInfo>
|
|||
PlanPageQueryDto queryDto = new PlanPageQueryDto();
|
||||
Set<String> collect = atuPlanScriptLinkList.stream().map(AtuPlanScriptLink::getScriptId).collect(Collectors.toSet());
|
||||
queryDto.setAllList(new ArrayList<>(collect));
|
||||
|
||||
|
||||
//查询所有脚本类型
|
||||
List<AtuCaseScriptResultDto> atuScriptInfoList = scriptCaseFeignClient.queryScriptByIds(new ArrayList<>(collect));
|
||||
|
||||
|
|
|
@ -133,7 +133,6 @@ public class AtuPlanSceneCaseTaskApiServiceImpl implements AtuPlanSceneCaseTaskA
|
|||
logger.debug("批次[" + planTask.getBatchId() + "]开始执行,更新计划的状态");
|
||||
planInfoService.updatePlanByLastBatchId(planTask.getBatchId(), PlanConstant.PLAN_EXECUTING_STATUS);
|
||||
}
|
||||
|
||||
// 更新批次统计数据
|
||||
planBatchApiService.updateCacheBatchSumData(planTask);
|
||||
}
|
||||
|
@ -329,6 +328,7 @@ public class AtuPlanSceneCaseTaskApiServiceImpl implements AtuPlanSceneCaseTaskA
|
|||
atuTaskExecDto.setAppSet(planInfo.getAppSet());
|
||||
atuTaskExecDto.setScreenRecordSet(planInfo.getScreenRecordSet());
|
||||
atuTaskExecDto.setScreenshotSet(planInfo.getScreenshotSet());
|
||||
// TODO: 是不是要先做判断是否勾选了失败重试才去设置这两个值
|
||||
atuTaskExecDto.setFailRetryNum(planInfo.getFailRetryCount());
|
||||
// 重试策略
|
||||
atuTaskExecDto.setRetryStrategy(planInfo.getRetryStrategy());
|
||||
|
|
|
@ -1514,7 +1514,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
|||
logger.info("普通脚本任务id:{},执行结果文件:{}", task.getId(), task.getExecResultFile());
|
||||
taskIds.add(task.getId());
|
||||
String execResultFile = task.getExecResultFile();
|
||||
if (StringUtils.isNotBlank(execResultFile)){
|
||||
if (StringUtils.isNotBlank(execResultFile)) {
|
||||
deletedFilePath.add(execResultFile);
|
||||
getActualImagePath(deletedFilePath, execResultFile);
|
||||
}
|
||||
|
@ -1534,7 +1534,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
|||
if (!CollectionUtils.isEmpty(taskIds)) {
|
||||
List<AtuPlanSceneCaseTask> atuPlanSceneCaseTaskList = atuPlanSceneCaseTaskService.querySceneCaseTasksByTaskIds(taskIds);
|
||||
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();
|
||||
if (StringUtils.isNotBlank(videoUrl)) {
|
||||
deletedFilePath.add("/" + MinioPathUtils.idToPath(videoUrl)[1]);
|
||||
|
@ -1613,8 +1613,8 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
|||
planTask.setVersionName(atuScriptDetailDto.getVersionName());
|
||||
planTask.setScriptName(atuScriptDetailDto.getScriptName());
|
||||
planTask.setScriptJson(atuScriptDetailDto.getScriptPath());
|
||||
planTask.setAppId(queryAppId(planInfo.getId(),atuScriptDetailDto.getPlatformType(),
|
||||
atuScriptDetailDto.getAppPackage(),atuScriptDetailDto.getScriptType()));
|
||||
planTask.setAppId(queryAppId(planInfo.getId(), atuScriptDetailDto.getPlatformType(),
|
||||
atuScriptDetailDto.getAppPackage(), atuScriptDetailDto.getScriptType()));
|
||||
}
|
||||
|
||||
logger.debug("生成任务执行信息");
|
||||
|
@ -1729,7 +1729,7 @@ public class AtuPlanTaskApiServiceImpl extends AbstractExcelService<AtuPlanTask>
|
|||
planTask.setBugId("");
|
||||
if (sceneNodeExecDto != null && sceneNodeExecDto.getSceneScriptUrl() != null) {
|
||||
planTask.setScriptJson(sceneNodeExecDto.getSceneScriptUrl());
|
||||
}else {
|
||||
} else {
|
||||
logger.info("首节点返回sceneScriptUrl为空" + sceneNodeExecDto);
|
||||
}
|
||||
int rows = atuPlanTaskService.updateByPrimaryKey(planTask);
|
||||
|
|
|
@ -75,8 +75,8 @@ public class MsgConstant {
|
|||
//tableHeardList
|
||||
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_TEST_CASE_NAME= "用例名称";
|
||||
public static final String TABLE_HEARD_LIST_TEST_CASE_TYPE= "用例类型";
|
||||
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_TIME_CONSUMING= "耗时(毫秒)";
|
||||
public static final String TABLE_HEARD_LIST_EXEC_DEVICE= "执行设备";
|
||||
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";
|
||||
/**
|
||||
* 通用标签UI执行计划标签类型码
|
||||
*/
|
||||
public static final Integer UI_PLAN_TAG_TYPE = 4;
|
||||
|
||||
}
|
||||
|
|
|
@ -59,18 +59,25 @@ public class TaskExecHeartbeatConsumer {
|
|||
}
|
||||
|
||||
private void handleTaskHeartbeat(String taskId, String taskType){
|
||||
AtuPlanTask planTask = new AtuPlanTask();
|
||||
planTask.setId(taskId);
|
||||
planTask.setLastHeartbeatTime(new Date());
|
||||
if (PlanConstant.SCRIPT_TYPE_SCENE.equals(taskType)){
|
||||
// 场景任务
|
||||
AtuPlanSceneCaseTask sceneCaseTask = planSceneCaseTaskService.findByPrimaryKey(taskId);
|
||||
sceneCaseTask.setLastHeartbeatTime(new Date());
|
||||
planSceneCaseTaskService.updateByPrimaryKey(sceneCaseTask);
|
||||
// 更新场景节点对应的任务心跳
|
||||
planTask.setId(sceneCaseTask.getTaskId());
|
||||
try {
|
||||
AtuPlanTask planTask = new AtuPlanTask();
|
||||
planTask.setId(taskId);
|
||||
planTask.setLastHeartbeatTime(new Date());
|
||||
if (PlanConstant.SCRIPT_TYPE_SCENE.equals(taskType)) {
|
||||
// 场景任务
|
||||
AtuPlanSceneCaseTask sceneCaseTask = planSceneCaseTaskService.findByPrimaryKey(taskId);
|
||||
if (sceneCaseTask != null) {
|
||||
sceneCaseTask.setLastHeartbeatTime(new Date());
|
||||
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<AtuPlanTaskRecord> queryReTryTaskByTaskIds(@Param("taskIds") List<String> taskIds);
|
||||
|
||||
}
|
||||
|
|
|
@ -64,11 +64,6 @@ public class AtuPlanTaskRecordServiceImpl extends PaginationService<AtuPlanTaskR
|
|||
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 ----//
|
||||
List<PlanTaskRecordDto> queryTotalTake(List<String> ids);
|
||||
|
||||
List<AtuPlanTaskRecord> queryReTryTaskByTaskIds(List<String> ids);
|
||||
}
|
||||
|
|
|
@ -143,6 +143,19 @@ public class AtuPlanInfoAddDto implements Serializable
|
|||
|
||||
@ApiModelProperty("是否存在移动脚本")
|
||||
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() {
|
||||
return hasAPI;
|
||||
|
@ -351,4 +364,12 @@ public class AtuPlanInfoAddDto implements Serializable
|
|||
public void setRetryStrategy(String 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("负责人")
|
||||
private String principalId;
|
||||
|
||||
@ApiModelProperty("负责人姓名")
|
||||
private String principalName;
|
||||
|
||||
@ApiModelProperty("最后批次脚本统计数据")
|
||||
private Map<String, Integer> lastBatchScriptSumMap;
|
||||
|
||||
@ApiModelProperty("绑定应用id集合")
|
||||
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() {
|
||||
return appIdList;
|
||||
}
|
||||
|
@ -634,6 +647,14 @@ public class AtuPlanInfoDetailDto implements Serializable
|
|||
this.principalId = principalId;
|
||||
}
|
||||
|
||||
public String getPrincipalName() {
|
||||
return principalName;
|
||||
}
|
||||
|
||||
public void setPrincipalName(String principalName) {
|
||||
this.principalName = principalName;
|
||||
}
|
||||
|
||||
public Map<String, Integer> getLastBatchScriptSumMap() {
|
||||
return lastBatchScriptSumMap;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ public enum ExecPlanError implements PlatformError {
|
|||
|
||||
PLAN_NAME_ERROR("系统下的计划名称不能重复"),
|
||||
PLAN_NAME_TOO_LONG("计划名称超过30位,请修改计划名称!"),
|
||||
PRINCIPALID_IS_NULL("责任人不能为空"),
|
||||
PLAN_IS_NULL("计划信息不存在"),
|
||||
PLAN_CASE_SET_IS_NULL("计划用例集信息不存在"),
|
||||
PLAN_IS_UN_ENABLE("计划被禁用,执行失败!"),
|
||||
|
@ -85,10 +86,8 @@ public enum ExecPlanError implements PlatformError {
|
|||
|
||||
PARSE_DATE_ERROR("格式化日期出错,请检查参数"),
|
||||
|
||||
EMPTY_BATCH_ID("批次id不能为空"),
|
||||
|
||||
GET_FILE_FAIL("获取文件失败"),
|
||||
|
||||
EMPTY_BATCH_ID("批次id不能为空"),
|
||||
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.db.entity.AtuPlanSceneCaseTask;
|
||||
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.AtuPlanTaskRecordService;
|
||||
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskExtendDto;
|
||||
import net.northking.cctp.executePlan.dto.planTask.AtuTaskExecResultDto;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -23,7 +21,6 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@EnableScheduling
|
||||
@Configuration
|
||||
|
@ -48,9 +45,6 @@ public class TaskExecTimeoutJob {
|
|||
@Autowired
|
||||
private AtuPlanConfig atuPlanConfig;
|
||||
|
||||
@Autowired
|
||||
private AtuPlanTaskRecordService atuPlanTaskRecordService;
|
||||
|
||||
|
||||
/**
|
||||
* 超时时间,默认3分钟,单位秒
|
||||
|
@ -73,9 +67,6 @@ public class TaskExecTimeoutJob {
|
|||
taskTimeoutHandle(taskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
||||
|
||||
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());
|
||||
taskTimeoutHandle(waitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
||||
|
||||
|
@ -83,9 +74,6 @@ public class TaskExecTimeoutJob {
|
|||
logger.debug("场景节点执行超时任务数量:{}", sceneCaseTaskList.size());
|
||||
sceneTaskTimeoutHandle(sceneCaseTaskList, PlanConstant.TASK_TIMEOUT_STATUS, ERROR_MSG);
|
||||
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());
|
||||
sceneTaskTimeoutHandle(sceneWaitTimeoutTask, PlanConstant.TASK_CANCEL_STATUS, WAIT_TIMEOUT_ERROR_MSG);
|
||||
}
|
||||
|
|
|
@ -24,16 +24,4 @@
|
|||
) AS temp
|
||||
GROUP BY task_id
|
||||
</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>
|
Binary file not shown.
|
@ -26,6 +26,6 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|||
|
||||
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 [""]
|
||||
|
|
Loading…
Reference in New Issue