AFL编译节点,变量放入上下文规则变更
sasttokenredis过期时间写死为1天 sast项目id更换 测试用例生成worker 二进制文件自动拼接项目文件夹前缀
This commit is contained in:
parent
8eb34198a5
commit
046c03ec68
@ -18,7 +18,7 @@ public class PipHistoryController {
|
||||
@Resource
|
||||
PipelineHistoryService pipelineHistoryService;
|
||||
@GetMapping("/getLogById")
|
||||
public CommonResult<PipTaskLog> getLogById(String id){
|
||||
public CommonResult<PipTaskLog> getLogById(@RequestParam String id){
|
||||
PipTaskLog byId = taskLogService.getById(id);
|
||||
return CommonResult.success(byId);
|
||||
}
|
||||
|
@ -104,23 +104,23 @@ public class AFLSlotCompileWorker extends DockerWorker {
|
||||
globalVariables.put(AFL_DOCKER_WORK_DIR_KEY,workDir);
|
||||
// 获取编译结果并存放
|
||||
List<String> compileResult = getCompileResult(context, realPath + File.separator + getSourceName(fileName), machineInfo);
|
||||
if (Objects.isNull(getGlobalVariable(context, COMPILE_RESULT_KEY))) {
|
||||
// if (Objects.isNull(getGlobalVariable(context, COMPILE_RESULT_KEY))) {
|
||||
// 如果全局变量不存在则放入全局变量中
|
||||
putGlobalVariable(context,COMPILE_RESULT_KEY,compileResult);;
|
||||
}
|
||||
// }
|
||||
// 放入最近一级作用域
|
||||
putSecondStageVariable(context,COMPILE_RESULT_KEY,compileResult);
|
||||
// 放入 所选资源供测试用例生成,AFL模糊测试节点使用
|
||||
if (Objects.isNull(getGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY))) {
|
||||
// if (Objects.isNull(getGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY))) {
|
||||
// 如果全局变量不存在则放入全局变量中
|
||||
putGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY,managerId);;
|
||||
}
|
||||
// }
|
||||
putSecondStageVariable(context,AFL_RESOURCE_MANAGER_ID_KEY,managerId);
|
||||
// 放入镜像名称
|
||||
if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) {
|
||||
// 如果全局变量不存在则放入全局变量中
|
||||
putGlobalVariable(context, IMAGE_NAME,imageName);;
|
||||
}
|
||||
// if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) {
|
||||
// // 如果全局变量不存在则放入全局变量中
|
||||
putGlobalVariable(context, IMAGE_NAME,imageName);
|
||||
// }
|
||||
putSecondStageVariable(context,IMAGE_NAME,imageName);
|
||||
}
|
||||
private String handleZipFile(String fileName){
|
||||
|
@ -5,13 +5,14 @@ import cd.casic.ci.process.common.WorkAtom;
|
||||
import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
|
||||
import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
|
||||
import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
|
||||
import cd.casic.ci.process.engine.constant.PipelineVariableConstant;
|
||||
import cd.casic.ci.process.engine.constant.TestCaseGenerationConstant;
|
||||
import cd.casic.ci.process.engine.runContext.TaskRunContext;
|
||||
import cd.casic.ci.process.engine.worker.base.DockerWorker;
|
||||
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
||||
import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
|
||||
import cd.casic.ci.process.process.dataObject.target.TargetVersion;
|
||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||
import cd.casic.ci.process.process.dataObject.testCase.TestCaseInfo;
|
||||
import cd.casic.ci.process.process.service.target.TargetVersionService;
|
||||
import cd.casic.ci.process.process.service.testCase.TestCaseInfoService;
|
||||
import cd.casic.ci.process.util.CryptogramUtil;
|
||||
import cd.casic.ci.process.util.SftpUploadUtil;
|
||||
@ -34,6 +35,8 @@ import static cd.casic.ci.process.engine.constant.TestCaseGenerationConstant.*;
|
||||
public class TestCaseGenerationWorker extends DockerWorker {
|
||||
@Resource
|
||||
private TestCaseInfoService testCaseInfoService;
|
||||
@Resource
|
||||
private TargetVersionService targetVersionService;
|
||||
@Override
|
||||
public void execute(TaskRunContext context) {
|
||||
int statusCode = -1;
|
||||
@ -62,16 +65,21 @@ public class TestCaseGenerationWorker extends DockerWorker {
|
||||
TaskResourceFindResp dockerQuery = resourceManagerService.findResourceListByType(req);
|
||||
PipResourceMachine machineInfo = machineQuery.getResourceMachineList().get(0);
|
||||
DockerEndpointDo dockerInfo = dockerQuery.getDockerEndpointList().get(0);
|
||||
PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef();
|
||||
TargetVersion targetVersion = targetVersionService.getById(pipeline.getTargetVersionId());
|
||||
String fileName = targetVersion.getFileName();
|
||||
String imageName = getVariableNearby(context,IMAGE_NAME) instanceof String ? ((String) getVariableNearby(context,IMAGE_NAME)) : null;
|
||||
//如果machineId为0,则说明该节点没有配置机器,则使用开始节点的机器
|
||||
if (CASE_TYPE_AI.equals(caseType)) {
|
||||
// 容器内部test 目录, 获取编译后的文件
|
||||
String runScript = "docker run -v "+ AFL_VOLUME_WORK_DIR_PREFIX +":"+ AFL_DOCKER_BASE_DIR+" -it aflplusplus bash\n" // 目前测试用例ai生成只有这个路径能跑
|
||||
String runScript = "docker run -v "+ AFL_VOLUME_WORK_DIR_PREFIX +":"+ AFL_DOCKER_BASE_DIR+" -it "+imageName+" bash\n" // 目前测试用例ai生成只有这个路径能跑
|
||||
+ "cd "+ AFL_DOCKER_BASE_DIR+"\n" +
|
||||
"mkdir -p "+seedPath +"\n"+
|
||||
"cd "+seedPath +"\n"+
|
||||
"PYTHONPATH=CaseGenerator/src python3 CaseGenerator/src/CaseGenerator/main.py --work-dir "+workDir+" --binary "+workDir+File.separator+binaryName+" --output-dir "+seedPath+" --count 100";
|
||||
"PYTHONPATH="+AFL_DOCKER_BASE_DIR+File.separator+"CaseGenerator/src python3 "+AFL_DOCKER_BASE_DIR+File.separator+"CaseGenerator/src/CaseGenerator/main.py --work-dir "+workDir+" --binary "+workDir+File.separator+getSourceName(fileName)+File.separator+binaryName+" --output-dir "+seedPath+" --count 100";
|
||||
//将节点的配置信息反编译成对象
|
||||
log.info("测试用例生成-AI生成,实际执行命令:{}" , runScript);
|
||||
append(context,"测试用例生成-AI生成,实际执行命令:"+runScript);
|
||||
//获取机器
|
||||
dockerRun(runScript,dockerInfo,context);
|
||||
} else if (CASE_TYPE_FILE.equals(caseType)){
|
||||
@ -123,4 +131,11 @@ public class TestCaseGenerationWorker extends DockerWorker {
|
||||
globalVariables.put(AFL_DOCKER_SEED_PATH_KEY,seedPath);
|
||||
}
|
||||
}
|
||||
public String getSourceName(String fileName){
|
||||
int dotIndex = fileName.lastIndexOf(".");
|
||||
if (dotIndex!=-1) {
|
||||
return fileName.substring(0, dotIndex);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
@ -102,9 +102,10 @@ public class SastWorker extends BaseWorker {
|
||||
}
|
||||
}
|
||||
private JSONObject getReportJSON(String applicationId,String model,TaskRunContext context){
|
||||
String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"8a863857-bab3-40d9-a79a-2cb6617a9dd3\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}";
|
||||
String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"9e57b627-2297-4bbf-a08a-92ff7d6b719d\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}";
|
||||
SastReportCreateReq sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class);
|
||||
sastReportCreateReq.setMode(model);
|
||||
sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3");
|
||||
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_JSON);
|
||||
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
||||
log.info("获取JSON报告请求参数{}",JSON.toJSONString(sastReportCreateReq));
|
||||
@ -136,6 +137,7 @@ public class SastWorker extends BaseWorker {
|
||||
String reqJSON = "{\"mode\":\"DETAILS\",\"contacts\":\"admin@clouditera.com\",\"reportType\":\"APPLICATION\",\"format\":\"JSON\",\"projectId\":\"8a863857-bab3-40d9-a79a-2cb6617a9dd3\",\"applicationIds\":[\"9e3e55d6-6d28-4fd1-adc2-15b6cf0702db\"],\"bugLevels\":[\"DEADLY\",\"SEVERITY\",\"POOR_RISK\",\"LOW_RISK\"],\"audRiskLevels\":[\"WAITING\",\"IGNORE\",\"HIGH\",\"MEDIUM\",\"LOW\",\"NONE\"],\"applicationScope\":\"ALL\"}";
|
||||
SastReportCreateReq sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class);
|
||||
sastReportCreateReq.setMode(model);
|
||||
sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3");
|
||||
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_PDF);
|
||||
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
||||
log.info("获取报告请求参数{}",JSON.toJSONString(sastReportCreateReq));
|
||||
|
@ -78,7 +78,7 @@ public class SastServiceImpl implements SastService {
|
||||
if (StringUtils.isEmpty(token)) {
|
||||
SastTokenResp tokenRemote = getTokenRemote();
|
||||
String accessToken = tokenRemote.getAccessToken();
|
||||
redisTemplateUtils.set(REDIS_SAST_TOKEN_KEY,accessToken,tokenRemote.getExpiresIn());
|
||||
redisTemplateUtils.set(REDIS_SAST_TOKEN_KEY,accessToken,12*60*60);
|
||||
token = accessToken;
|
||||
}
|
||||
}
|
||||
|
@ -70,10 +70,10 @@ spring:
|
||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||
data:
|
||||
redis:
|
||||
# host: 127.0.0.1 # 地址
|
||||
# port: 16379 # 端口
|
||||
host: 192.168.1.120 # 地址
|
||||
port: 6379 # 端口
|
||||
host: 127.0.0.1 # 地址
|
||||
port: 16379 # 端口
|
||||
# host: 192.168.1.120 # 地址
|
||||
# port: 6379 # 端口
|
||||
database: 0 # 数据库索引
|
||||
# password: dev # 密码,建议生产环境开启
|
||||
|
||||
|
@ -33,7 +33,7 @@ public class SftpTest {
|
||||
}
|
||||
@Test
|
||||
public void test03(){
|
||||
System.out.println(CryptogramUtil.doEncrypt("hnidc0327cn!@#xhh"));
|
||||
System.out.println(CryptogramUtil.doEncrypt("hnidc0628cn!@#lld"));
|
||||
}
|
||||
@Test
|
||||
public void ssh(){
|
||||
|
Loading…
x
Reference in New Issue
Block a user