AFL编译节点,变量放入上下文规则变更
sasttokenredis过期时间写死为1天 sast项目id更换 测试用例生成worker 二进制文件自动拼接项目文件夹前缀
This commit is contained in:
parent
8eb34198a5
commit
046c03ec68
@ -18,7 +18,7 @@ public class PipHistoryController {
|
|||||||
@Resource
|
@Resource
|
||||||
PipelineHistoryService pipelineHistoryService;
|
PipelineHistoryService pipelineHistoryService;
|
||||||
@GetMapping("/getLogById")
|
@GetMapping("/getLogById")
|
||||||
public CommonResult<PipTaskLog> getLogById(String id){
|
public CommonResult<PipTaskLog> getLogById(@RequestParam String id){
|
||||||
PipTaskLog byId = taskLogService.getById(id);
|
PipTaskLog byId = taskLogService.getById(id);
|
||||||
return CommonResult.success(byId);
|
return CommonResult.success(byId);
|
||||||
}
|
}
|
||||||
|
@ -104,23 +104,23 @@ public class AFLSlotCompileWorker extends DockerWorker {
|
|||||||
globalVariables.put(AFL_DOCKER_WORK_DIR_KEY,workDir);
|
globalVariables.put(AFL_DOCKER_WORK_DIR_KEY,workDir);
|
||||||
// 获取编译结果并存放
|
// 获取编译结果并存放
|
||||||
List<String> compileResult = getCompileResult(context, realPath + File.separator + getSourceName(fileName), machineInfo);
|
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);;
|
putGlobalVariable(context,COMPILE_RESULT_KEY,compileResult);;
|
||||||
}
|
// }
|
||||||
// 放入最近一级作用域
|
// 放入最近一级作用域
|
||||||
putSecondStageVariable(context,COMPILE_RESULT_KEY,compileResult);
|
putSecondStageVariable(context,COMPILE_RESULT_KEY,compileResult);
|
||||||
// 放入 所选资源供测试用例生成,AFL模糊测试节点使用
|
// 放入 所选资源供测试用例生成,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);;
|
putGlobalVariable(context, AFL_RESOURCE_MANAGER_ID_KEY,managerId);;
|
||||||
}
|
// }
|
||||||
putSecondStageVariable(context,AFL_RESOURCE_MANAGER_ID_KEY,managerId);
|
putSecondStageVariable(context,AFL_RESOURCE_MANAGER_ID_KEY,managerId);
|
||||||
// 放入镜像名称
|
// 放入镜像名称
|
||||||
if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) {
|
// if (Objects.isNull(getGlobalVariable(context, IMAGE_NAME))) {
|
||||||
// 如果全局变量不存在则放入全局变量中
|
// // 如果全局变量不存在则放入全局变量中
|
||||||
putGlobalVariable(context, IMAGE_NAME,imageName);;
|
putGlobalVariable(context, IMAGE_NAME,imageName);
|
||||||
}
|
// }
|
||||||
putSecondStageVariable(context,IMAGE_NAME,imageName);
|
putSecondStageVariable(context,IMAGE_NAME,imageName);
|
||||||
}
|
}
|
||||||
private String handleZipFile(String fileName){
|
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.req.resource.ResourceQueryReq;
|
||||||
import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
|
import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
|
||||||
import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
|
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.runContext.TaskRunContext;
|
||||||
import cd.casic.ci.process.engine.worker.base.DockerWorker;
|
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.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.task.PipTask;
|
||||||
import cd.casic.ci.process.process.dataObject.testCase.TestCaseInfo;
|
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.process.service.testCase.TestCaseInfoService;
|
||||||
import cd.casic.ci.process.util.CryptogramUtil;
|
import cd.casic.ci.process.util.CryptogramUtil;
|
||||||
import cd.casic.ci.process.util.SftpUploadUtil;
|
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 {
|
public class TestCaseGenerationWorker extends DockerWorker {
|
||||||
@Resource
|
@Resource
|
||||||
private TestCaseInfoService testCaseInfoService;
|
private TestCaseInfoService testCaseInfoService;
|
||||||
|
@Resource
|
||||||
|
private TargetVersionService targetVersionService;
|
||||||
@Override
|
@Override
|
||||||
public void execute(TaskRunContext context) {
|
public void execute(TaskRunContext context) {
|
||||||
int statusCode = -1;
|
int statusCode = -1;
|
||||||
@ -62,16 +65,21 @@ public class TestCaseGenerationWorker extends DockerWorker {
|
|||||||
TaskResourceFindResp dockerQuery = resourceManagerService.findResourceListByType(req);
|
TaskResourceFindResp dockerQuery = resourceManagerService.findResourceListByType(req);
|
||||||
PipResourceMachine machineInfo = machineQuery.getResourceMachineList().get(0);
|
PipResourceMachine machineInfo = machineQuery.getResourceMachineList().get(0);
|
||||||
DockerEndpointDo dockerInfo = dockerQuery.getDockerEndpointList().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,则说明该节点没有配置机器,则使用开始节点的机器
|
//如果machineId为0,则说明该节点没有配置机器,则使用开始节点的机器
|
||||||
if (CASE_TYPE_AI.equals(caseType)) {
|
if (CASE_TYPE_AI.equals(caseType)) {
|
||||||
// 容器内部test 目录, 获取编译后的文件
|
// 容器内部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" +
|
+ "cd "+ AFL_DOCKER_BASE_DIR+"\n" +
|
||||||
"mkdir -p "+seedPath +"\n"+
|
"mkdir -p "+seedPath +"\n"+
|
||||||
"cd "+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);
|
log.info("测试用例生成-AI生成,实际执行命令:{}" , runScript);
|
||||||
|
append(context,"测试用例生成-AI生成,实际执行命令:"+runScript);
|
||||||
//获取机器
|
//获取机器
|
||||||
dockerRun(runScript,dockerInfo,context);
|
dockerRun(runScript,dockerInfo,context);
|
||||||
} else if (CASE_TYPE_FILE.equals(caseType)){
|
} else if (CASE_TYPE_FILE.equals(caseType)){
|
||||||
@ -123,4 +131,11 @@ public class TestCaseGenerationWorker extends DockerWorker {
|
|||||||
globalVariables.put(AFL_DOCKER_SEED_PATH_KEY,seedPath);
|
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){
|
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 sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class);
|
||||||
sastReportCreateReq.setMode(model);
|
sastReportCreateReq.setMode(model);
|
||||||
|
sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3");
|
||||||
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_JSON);
|
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_JSON);
|
||||||
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
||||||
log.info("获取JSON报告请求参数{}",JSON.toJSONString(sastReportCreateReq));
|
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\"}";
|
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 sastReportCreateReq = JSON.parseObject(reqJSON, SastReportCreateReq.class);
|
||||||
sastReportCreateReq.setMode(model);
|
sastReportCreateReq.setMode(model);
|
||||||
|
sastReportCreateReq.setProjectId("8a863857-bab3-40d9-a79a-2cb6617a9dd3");
|
||||||
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_PDF);
|
sastReportCreateReq.setFormat(SastConstant.REPORT_FORMAT_PDF);
|
||||||
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
sastReportCreateReq.setApplicationIds(Collections.singletonList(applicationId));
|
||||||
log.info("获取报告请求参数{}",JSON.toJSONString(sastReportCreateReq));
|
log.info("获取报告请求参数{}",JSON.toJSONString(sastReportCreateReq));
|
||||||
|
@ -78,7 +78,7 @@ public class SastServiceImpl implements SastService {
|
|||||||
if (StringUtils.isEmpty(token)) {
|
if (StringUtils.isEmpty(token)) {
|
||||||
SastTokenResp tokenRemote = getTokenRemote();
|
SastTokenResp tokenRemote = getTokenRemote();
|
||||||
String accessToken = tokenRemote.getAccessToken();
|
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;
|
token = accessToken;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,10 +70,10 @@ spring:
|
|||||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
# host: 127.0.0.1 # 地址
|
host: 127.0.0.1 # 地址
|
||||||
# port: 16379 # 端口
|
port: 16379 # 端口
|
||||||
host: 192.168.1.120 # 地址
|
# host: 192.168.1.120 # 地址
|
||||||
port: 6379 # 端口
|
# port: 6379 # 端口
|
||||||
database: 0 # 数据库索引
|
database: 0 # 数据库索引
|
||||||
# password: dev # 密码,建议生产环境开启
|
# password: dev # 密码,建议生产环境开启
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ public class SftpTest {
|
|||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void test03(){
|
public void test03(){
|
||||||
System.out.println(CryptogramUtil.doEncrypt("hnidc0327cn!@#xhh"));
|
System.out.println(CryptogramUtil.doEncrypt("hnidc0628cn!@#lld"));
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void ssh(){
|
public void ssh(){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user