执行日志补充

This commit is contained in:
even 2025-07-23 16:58:12 +08:00
parent 7d6ed60333
commit d427b94d99

View File

@ -144,6 +144,8 @@ public class TestCaseGenerationWorker extends DockerWorker {
// 获取编译后的文文件的inputStream // 获取编译后的文文件的inputStream
JSch jsch = new JSch(); JSch jsch = new JSch();
Session session = null; Session session = null;
ChannelExec exec = null;
ChannelSftp sftp = null;
try { try {
session = jsch.getSession(machineInfo.getUsername(),machineInfo.getHostIp(), machineInfo.getSshPort()); session = jsch.getSession(machineInfo.getUsername(),machineInfo.getHostIp(), machineInfo.getSshPort());
session.setPassword( CryptogramUtil.doDecrypt(machineInfo.getPassword())); session.setPassword( CryptogramUtil.doDecrypt(machineInfo.getPassword()));
@ -152,13 +154,17 @@ public class TestCaseGenerationWorker extends DockerWorker {
config.put("StrictHostKeyChecking", "no"); config.put("StrictHostKeyChecking", "no");
session.setConfig(config); session.setConfig(config);
session.connect(); session.connect();
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp"); sftp = (ChannelSftp) session.openChannel("sftp");
sftp.connect(); sftp.connect();
String workDir = (String)getGlobalVariable(context,AFL_DOCKER_WORK_DIR_KEY); String workDir = (String)getGlobalVariable(context,AFL_DOCKER_WORK_DIR_KEY);
append(context,"AI测试用例生成开始上传目标文件。。。");
String filePath = AFL_DOCKER_BASE_DIR + File.separator + workDir+File.separator+getSourceName(fileName)+File.separator+binaryName; String filePath = AFL_DOCKER_BASE_DIR + File.separator + workDir+File.separator+getSourceName(fileName)+File.separator+binaryName;
append(context,"读取到目标文件路径:"+filePath);
InputStream inputStream = sftp.get(filePath); InputStream inputStream = sftp.get(filePath);
String targetUploadRes = aiGeneratorService.targetUpload("./" + binaryName, inputStream); String targetUploadRes = aiGeneratorService.targetUpload("./" + binaryName, inputStream);
append(context,"上传结果:"+targetUploadRes);
String binaryId = JSON.parseObject(targetUploadRes).getString("id"); String binaryId = JSON.parseObject(targetUploadRes).getString("id");
append(context,"开始创建测试用例生成task");
// 创建task // 创建task
TestCaseAITaskCreateReq req = new TestCaseAITaskCreateReq(); TestCaseAITaskCreateReq req = new TestCaseAITaskCreateReq();
req.setBinaryId(binaryId); req.setBinaryId(binaryId);
@ -166,6 +172,7 @@ public class TestCaseGenerationWorker extends DockerWorker {
req.setCount(count); req.setCount(count);
String taskCreateRes = aiGeneratorService.taskCreate(req); String taskCreateRes = aiGeneratorService.taskCreate(req);
String taskId = JSON.parseObject(taskCreateRes).getString("task_id"); String taskId = JSON.parseObject(taskCreateRes).getString("task_id");
append(context,"创建测试用例生成task成功开始读取task执行日志");
while (true){ while (true){
// 获取状态及日志 // 获取状态及日志
String taskStatusRes = aiGeneratorService.getTaskStatus(taskId); String taskStatusRes = aiGeneratorService.getTaskStatus(taskId);
@ -179,25 +186,51 @@ public class TestCaseGenerationWorker extends DockerWorker {
String logStr = JSON.parseObject(logRes).getString("log"); String logStr = JSON.parseObject(logRes).getString("log");
append(context,logStr); append(context,logStr);
} }
append(context,"task当前执行状态"+taskStatusRes);
} }
append(context,"开始下载生成的测试用例文件");
File tempFile = File.createTempFile("seed", ".zip"); File tempFile = File.createTempFile("seed", ".zip");
tempFile.deleteOnExit(); tempFile.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tempFile); FileOutputStream fos = new FileOutputStream(tempFile);
// 下载生成的种子 // 下载生成的种子
aiGeneratorService.downloadTestCase(taskId,fos); aiGeneratorService.downloadTestCase(taskId,fos);
fos.close(); fos.close();
append(context,"下载生成的模糊测试种子文件成功");
FileInputStream fis = new FileInputStream(tempFile); FileInputStream fis = new FileInputStream(tempFile);
// 上传种子zip到目标服务器 // 上传种子zip到目标服务器
sftp.put(fis,"");
sftp.disconnect();
String seedPath= workDir+File.separator+ AFL_DOCKER_SEED; String seedPath= workDir+File.separator+ AFL_DOCKER_SEED;
String seedTarget = AFL_VOLUME_WORK_DIR_PREFIX+File.separator+seedPath+File.separator+"seed.zip"; String seedTarget = AFL_VOLUME_WORK_DIR_PREFIX+File.separator+seedPath+File.separator+tempFile.getName();
String seedDir = AFL_VOLUME_WORK_DIR_PREFIX+File.separator+seedPath; String seedDir = AFL_VOLUME_WORK_DIR_PREFIX+File.separator+seedPath;
append(context,"上传模糊测试种子压缩包到指定工作目录:"+seedDir);
sftp.put(fis,seedDir);
sftp.disconnect();
append(context,"解压种子到指定工作目录"+seedDir);
String cmd = "unzip -o " + seedTarget + " -d " + seedDir;
append(context,cmd);
// 解压种子zip // 解压种子zip
ChannelExec exec = (ChannelExec)session.openChannel("exec"); exec = (ChannelExec)session.openChannel("exec");
exec.setCommand("unzip -o "+seedTarget+" -d "+seedDir); exec.setCommand(cmd);
} catch (Exception e) { } catch (Exception e) {
append(context,"测试用例生成失败"); append(context,"测试用例生成失败");
}finally {
if (exec!=null) {
if (exec.isConnected()) {
exec.disconnect();
}
}
if (sftp!=null) {
if (sftp.isConnected()) {
sftp.disconnect();
}
}
if (session!=null) {
if (session.isConnected()) {
session.disconnect();
}
}
} }
} }