From 2b2fdaa21151e9ce6e71da2b7a8fa25aa1ccf664 Mon Sep 17 00:00:00 2001
From: even <827656971@qq.com>
Date: Mon, 21 Jul 2025 15:35:05 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86=E9=87=8D?=
=?UTF-8?q?=E6=9E=84=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=BD=B1=E5=93=8D=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
dependencies/pom.xml | 6 +-
.../dataobject/dto/DockerEndpointDo.java | 3 +-
.../cd/casic/ci/api/DockerController.java | 4 -
.../cd/casic/ci/api/MachineController.java | 22 -
.../ci/api/ResourceManagerController.java | 81 +--
modules/module-ci-process-biz/pom.xml | 4 +
.../ci/process/constant/ResourceConstant.java | 33 +
.../dto/req/machine/MachineInfoReq.java | 24 -
.../dto/req/resource/ResourceCreateReq.java | 24 +
.../process/dto/req/resource/ResourceReq.java | 3 +-
.../dto/req/resource/ResourceUpdateReq.java | 25 +
.../dto/resp/machine/MachineInfoResp.java | 38 --
.../dto/resp/resource/ResourceDetailResp.java | 40 ++
.../dto/resp/resource/ResourceFindResp.java | 68 --
.../dto/resp/resource/ResourceResp.java | 60 --
.../taskResource/TaskResourceFindResp.java | 21 -
.../impl/MemoryPostHandlerManager.java | 2 +-
.../engine/worker/CustomCompilerWorker.java | 15 +-
.../worker/DIYImageExecuteCommandWorker.java | 12 +-
.../worker/afl/AFLSlotCompileWorker.java | 34 +-
.../process/engine/worker/afl/AFLWorker.java | 25 +-
.../worker/afl/TestCaseGenerationWorker.java | 32 +-
.../engine/worker/base/BaseWorker.java | 11 -
.../process/engine/worker/base/SshWorker.java | 10 +-
.../worker/target/TargetSourceCodeWorker.java | 3 -
.../ci/process/enums/MachineSystemEnum.java | 10 +-
.../process/converter/MachineConverter.java | 24 -
.../process/converter/ResourceConverter.java | 10 +-
.../process/dao/machine/MachineInfoDao.java | 15 -
.../PipResourceDockerEndpointDao.java | 14 -
.../dao/pipeline/PipResourceMachineDao.java | 14 -
.../dataObject/machine/MachineInfo.java | 84 ---
.../resource/PipResourceMachine.java | 70 ---
.../resource/PipResourceManager.java | 6 +-
.../impl/AflCrashesInfoServiceImpl.java | 52 +-
.../aflManager/impl/AflInfoServiceImpl.java | 38 +-
.../impl/AflPlotInfoServiceImpl.java | 28 +-
.../impl/AflSeedInfoServiceImpl.java | 26 +-
.../process/service/docker/DockerService.java | 1 -
.../docker/impl/DockerServiceImpl.java | 50 +-
.../service/machine/MachineInfoService.java | 20 -
.../machine/impl/MachineInfoServiceImpl.java | 45 --
.../resource/ResourceManagerService.java | 34 +-
.../impl/ResourceManagerServiceImpl.java | 438 +++----------
.../target/impl/TargetManagerServiceImpl.java | 4 +
.../ci/process/ssh/SshClientFactory.java | 6 +-
.../cd/casic/ci/process/ssh/SshCommand.java | 10 +-
.../cd/casic/ci/process/ssh/WinRMHelper.java | 9 +-
ops-server/pom.xml | 5 +
.../src/main/resources/application-local.yaml | 10 +-
.../java/cd/casic/server/ResourceTest.java | 591 +++++++++---------
.../test/java/cd/casic/server/SftpTest.java | 15 +-
.../java/cd/casic/server/ZipFileTest.java | 1 -
53 files changed, 675 insertions(+), 1555 deletions(-)
delete mode 100644 modules/module-ci-process-api/src/main/java/cd/casic/ci/api/MachineController.java
create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ResourceConstant.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/machine/MachineInfoReq.java
create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceCreateReq.java
create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceUpdateReq.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/machine/MachineInfoResp.java
create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceDetailResp.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceFindResp.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceResp.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/taskResource/TaskResourceFindResp.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/MachineConverter.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/machine/MachineInfoDao.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceDockerEndpointDao.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceMachineDao.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/machine/MachineInfo.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceMachine.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/MachineInfoService.java
delete mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/impl/MachineInfoServiceImpl.java
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index 5f9e9155..0215100e 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -238,7 +238,11 @@
module-ci-commons
${revision}
-
+
+ cd.casic.boot
+ module-ci-machine
+ ${revision}
+
cd.casic.boot
module-ci-environment
diff --git a/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/dataobject/dto/DockerEndpointDo.java b/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/dataobject/dto/DockerEndpointDo.java
index 51c6626a..f7a81763 100644
--- a/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/dataobject/dto/DockerEndpointDo.java
+++ b/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/dataobject/dto/DockerEndpointDo.java
@@ -2,6 +2,7 @@ package cd.casic.module.execute.docker.dataobject.dto;
import cd.casic.framework.commons.dataobject.BaseDO;
import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -22,7 +23,7 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true)
public class DockerEndpointDo extends BaseDO {
- @TableId
+ @TableId(type = IdType.ASSIGN_ID)
private String id;
private String name;
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DockerController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DockerController.java
index 899a3c59..55469e45 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DockerController.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DockerController.java
@@ -15,10 +15,6 @@ import java.util.List;
public class DockerController {
@Resource
private DockerService dockerService;
- @GetMapping("/imageNameListByResourceDetailId/{resourceDetailId}")
- public CommonResult> imageList(@PathVariable String resourceDetailId){
- return CommonResult.success(dockerService.imageNameList(resourceDetailId));
- }
@GetMapping("/imageListByResourceId/{resourceId}")
public CommonResult> imageListByResourceId(@PathVariable String resourceId){
return CommonResult.success(dockerService.imageListByResourceId(resourceId));
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/MachineController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/MachineController.java
deleted file mode 100644
index 4a2c632c..00000000
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/MachineController.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package cd.casic.ci.api;
-
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import cd.casic.ci.process.process.service.machine.MachineInfoService;
-import cd.casic.framework.commons.pojo.CommonResult;
-import jakarta.annotation.Resource;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/machineInfo")
-public class MachineController {
- @Resource
- private MachineInfoService machineInfoService;
- @GetMapping("/list")
- public CommonResult> list(){
- return CommonResult.success(machineInfoService.list());
- }
-}
diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ResourceManagerController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ResourceManagerController.java
index 30cebc4c..d6f13cb9 100644
--- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ResourceManagerController.java
+++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/ResourceManagerController.java
@@ -1,19 +1,9 @@
package cd.casic.ci.api;
-import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
-import cd.casic.ci.process.dto.req.resource.ResourceReq;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
-import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
-import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
+
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
-import cd.casic.framework.commons.pojo.CommonResult;
-import cd.casic.framework.commons.pojo.PageResult;
import jakarta.annotation.Resource;
-import jakarta.validation.Valid;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -33,75 +23,6 @@ public class ResourceManagerController {
@Resource
private ResourceManagerService resourceManagerService;
- @PostMapping(path="/createResource")
- public CommonResult createResource(@RequestBody @Valid ResourceReq resourceReq){
- String resourceId = resourceManagerService.createResource(resourceReq);
-
- return CommonResult.success(resourceId);
- }
-
-
- @PostMapping(path="/deleteResource")
- public CommonResult deleteResource(@RequestBody @Valid BaseIdReq req){
-
- resourceManagerService.deleteResource(req.getId());
-
- return CommonResult.success();
- }
-
- @PostMapping(path="/findResourceList")
- public CommonResult> findResourceList(@RequestBody @Valid ResourceQueryReq req){
-
- List ResourceFindRespList = resourceManagerService.findResourceList(req);
-
- return CommonResult.success(ResourceFindRespList);
- }
-
-
-
- @PostMapping(path="/updateResource")
- public CommonResult updateResource(@RequestBody @NotNull @Valid ResourceReq resourceReq){
-
- resourceManagerService.updateResource(resourceReq);
-
- return CommonResult.success();
- }
-
-
- @PostMapping(path="/findResourcePage")
- public CommonResult> findResourcePage(@RequestBody @NotNull @Valid ResourceQueryReq req){
-
- PageResult respPage = resourceManagerService.findResourcePage(req);
- return CommonResult.success(respPage);
- }
-
-
- @PostMapping(path="/findResourceById")
- public CommonResult findResourceById(@RequestBody @Valid BaseIdReq req){
-
- ResourceFindResp resp = resourceManagerService.findResourceById(req.getId());
-
- return CommonResult.success(resp);
- }
-
-
- @PostMapping(path="/findResourceListByType")
- public CommonResult findResourceListByType(@RequestBody @Valid ResourceQueryReq req){
-
- TaskResourceFindResp ResourceFindResp = resourceManagerService.findResourceListByType(req);
-
- return CommonResult.success(ResourceFindResp);
- }
-
-
-
- @PostMapping(path="/findResourceListForObjectByType")
- public CommonResult findResourceListForObjectByType(@RequestBody @Valid ResourceQueryReq req){
-
- List resp = resourceManagerService.findResourceListForObjectByType(req);
-
- return CommonResult.success(resp);
- }
}
diff --git a/modules/module-ci-process-biz/pom.xml b/modules/module-ci-process-biz/pom.xml
index 2cec1377..be8e4523 100644
--- a/modules/module-ci-process-biz/pom.xml
+++ b/modules/module-ci-process-biz/pom.xml
@@ -98,6 +98,10 @@
cd.casic.boot
module-ci-execute
+
+ cd.casic.boot
+ module-ci-machine
+
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ResourceConstant.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ResourceConstant.java
new file mode 100644
index 00000000..7c93706e
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ResourceConstant.java
@@ -0,0 +1,33 @@
+package cd.casic.ci.process.constant;
+
+public class ResourceConstant {
+ /**
+ * 云资源
+ * */
+ public static final String RES_TYPE_CLOUD="RES_TYPE_CLOUD";
+ /**
+ * 自定义资源
+ * */
+ public static final String RES_TYPE_CUSTOM="RES_TYPE_CUSTOM";
+ /**
+ * 待申请
+ * */
+ public static final String RES_STATE_WAIT_APPLY="RES_STATE_WAIT_APPLY";
+ /**
+ * 待申请
+ * */
+ public static final String RES_STATE_APPLY_ING="RES_STATE_APPLY_ING";
+ /**
+ * 待销毁
+ * */
+ public static final String RES_STATE_WAIT_DESTROY="RES_STATE_WAIT_DESTROY";
+ /**
+ * 不可用
+ * */
+ public static final String RES_STATE_DISABLE="RES_STATE_DISABLE";
+ /**
+ * 可用
+ * */
+ public static final String RES_STATE_ENABLE="RES_STATE_ENABLE";
+
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/machine/MachineInfoReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/machine/MachineInfoReq.java
deleted file mode 100644
index 3944cb04..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/machine/MachineInfoReq.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cd.casic.ci.process.dto.req.machine;
-
-import lombok.Data;
-
-@Data
-public class MachineInfoReq {
-
- /**
- * 主机ip
- */
- private String machineHost;
-
- /**
- * 机器名称
- */
- private String machineName;
-
- /**
- * 机器状态 1有效 2无效
- */
- private String machineStatus;
-
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceCreateReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceCreateReq.java
new file mode 100644
index 00000000..fa574047
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceCreateReq.java
@@ -0,0 +1,24 @@
+package cd.casic.ci.process.dto.req.resource;
+
+import lombok.Data;
+
+@Data
+public class ResourceCreateReq {
+ /**
+ * 资源名称
+ * */
+ private String resourceName;
+ /**
+ * 资源类型ResourceConstant.RES_TYPE_*
+ * */
+ private String resourceType;
+ /**
+ * 资源类型 RES_TYPE_CUSTOM 必填
+ * */
+ private Long machineInfoId;
+ /**
+ * docker连接端口(选填)
+ * */
+ private Integer dockerPort;
+
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceReq.java
index c2239d17..c36b5a40 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceReq.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceReq.java
@@ -2,7 +2,6 @@ package cd.casic.ci.process.dto.req.resource;
import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud;
import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
import lombok.Data;
@@ -34,7 +33,7 @@ public class ResourceReq {
*/
private String resourceName;
- private PipResourceMachine resourceMachine;
+// private PipResourceMachine resourceMachine;
private DockerEndpointDo dockerEndpoint;
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceUpdateReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceUpdateReq.java
new file mode 100644
index 00000000..a163d5af
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/resource/ResourceUpdateReq.java
@@ -0,0 +1,25 @@
+package cd.casic.ci.process.dto.req.resource;
+
+import lombok.Data;
+
+@Data
+public class ResourceUpdateReq {
+ private String id;
+ /**
+ * 资源名称
+ * */
+ private String resourceName;
+ /**
+ * 资源类型ResourceConstant.RES_TYPE_*
+ * */
+ private String resourceType;
+
+ /**
+ * 资源类型 RES_TYPE_CUSTOM 必填
+ * */
+ private Long machineInfoId;
+ /**
+ * docker连接端口(选填)
+ * */
+ private Integer dockerPort;
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/machine/MachineInfoResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/machine/MachineInfoResp.java
deleted file mode 100644
index b5b6172e..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/machine/MachineInfoResp.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cd.casic.ci.process.dto.resp.machine;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-@Data
-public class MachineInfoResp {
- /**
- * 机器描述
- */
- private String description;
- /**
- * id
- */
- @TableId(type = IdType.ASSIGN_ID)
- private String id;
-
- /**
- * 主机ip
- */
- private String machineHost;
-
- /**
- * 机器名称
- */
- private String machineName;
-
- /**
- * 机器状态 1有效 2无效
- */
- private String machineStatus;
-
- /**
- * 机器唯一标识
- */
- private String machineTag;
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceDetailResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceDetailResp.java
new file mode 100644
index 00000000..6148ca0e
--- /dev/null
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceDetailResp.java
@@ -0,0 +1,40 @@
+package cd.casic.ci.process.dto.resp.resource;
+
+import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
+import lombok.Data;
+
+@Data
+public class ResourceDetailResp {
+ /**
+ * docker镜像服务器信息id
+ */
+ private String dockerId;
+
+ /**
+ * k8s服务器信息id
+ */
+ private String k8sId;
+
+ /**
+ * 机器服务器信息id
+ */
+ private Long machineId;
+
+ /**
+ * 弹性云服务器信息id
+ */
+ private String cloudId;
+
+ /**
+ * 资源名称
+ */
+ private String resourceName;
+ /**
+ * 资源类型ResourceConstant.RES_TYPE_*
+ *
+ * */
+ private String resourceType;
+ private MachineInfoDO machineInfo;
+ private DockerEndpointDo dockerInfo;
+}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceFindResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceFindResp.java
deleted file mode 100644
index 2f7c18f1..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceFindResp.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package cd.casic.ci.process.dto.resp.resource;
-
-import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
-import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
-import lombok.Data;
-
-@Data
-public class ResourceFindResp {
- /**
- * 主键id
- */
- private String id;
-
- /**
- * docker镜像服务器信息id
- */
- private String dockerId;
-
- /**
- * k8s服务器信息id
- */
- private String k8sId;
-
- /**
- * 机器服务器信息id
- */
- private String machineId;
-
- /**
- * 弹性云服务器信息id
- */
- private String cloudId;
-
- /**
- * 资源名称
- */
- private String resourceName;
-
- //创建人id
- private String creator;
-
- //创建人姓名
- private String creatorName;
-
- //最后修改人id
- private String updater;
-
- //最后修改人姓名
- private String updaterName;
-
- //备注
- private String remark;
-
- //机器信息
- private PipResourceMachine resourceMachine;
-
- //镜像信息
- private DockerEndpointDo dockerEndpoint;
-
- //k8s信息
- private PipResourceK8S pipResourceK8S;
-
- //弹性云信息
- private PipResourceCloud pipResourceCloud;
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceResp.java
deleted file mode 100644
index 7b215cb7..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/resource/ResourceResp.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package cd.casic.ci.process.dto.resp.resource;
-
-import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
-import cd.casic.ci.process.process.dataObject.resource.PipelineDockerEndpoint;
-import lombok.Data;
-
-@Data
-public class ResourceResp {
- /**
- * 主键id
- */
- private String id;
-
- /**
- * docker镜像服务器信息id
- */
- private String dockerId;
-
- /**
- * k8s服务器信息id
- */
- private String k8sId;
-
- /**
- * 机器服务器信息id
- */
- private String machineId;
-
- /**
- * 弹性云服务器信息id
- */
- private String cloudId;
-
- /**
- * 资源名称
- */
- private String resourceName;
-
- //创建人id
- private String creator;
-
- //创建人姓名
- private String creatorName;
-
- //最后修改人id
- private String updater;
-
- //最后修改人姓名
- private String updaterName;
-
- private String remark;
-
- private PipResourceMachine resourceMachine;
-
- private PipelineDockerEndpoint dockerEndpoint;
-
- private PipResourceK8S pipResourceK8S;
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/taskResource/TaskResourceFindResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/taskResource/TaskResourceFindResp.java
deleted file mode 100644
index 2845ffc6..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/taskResource/TaskResourceFindResp.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cd.casic.ci.process.dto.resp.taskResource;
-
-import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
-import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class TaskResourceFindResp {
- private List resourceMachineList;
-
- private List dockerEndpointList;
-
- private List resourceK8SList;
-
- private List resourceCloudList;
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java
index bc63083a..0a8f34ca 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryPostHandlerManager.java
@@ -18,7 +18,7 @@ public class MemoryPostHandlerManager implements PostHandlerManager {
private final ConcurrentHashMap> handlerMap = new ConcurrentHashMap<>();
@Override
public void registerPostHandler(ExecuteTaskPostHandler handler) {
- if (handler==null|| StringUtils.isNotEmpty(handler.getPipelineId())) {
+ if (handler==null|| StringUtils.isEmpty(handler.getPipelineId())) {
throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"注册后置处理器失败");
}
List orDefault = handlerMap.getOrDefault(handler.getPipelineId(), new CopyOnWriteArrayList<>());
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java
index e93ce5fd..5449cb25 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/CustomCompilerWorker.java
@@ -3,12 +3,11 @@ package cd.casic.ci.process.engine.worker;
import cd.casic.ci.process.common.WorkAtom;
import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
-import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
import cd.casic.ci.process.engine.worker.base.SshWorker;
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.service.target.TargetVersionService;
@@ -16,6 +15,7 @@ import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -23,6 +23,7 @@ import org.springframework.util.CollectionUtils;
import java.io.File;
import java.util.Map;
+import java.util.Objects;
/**
* 自定义编译
@@ -60,12 +61,12 @@ public class CustomCompilerWorker extends SshWorker {
ResourceQueryReq req = new ResourceQueryReq();
req.setId(resourceId);
req.setType(resourceType);
- TaskResourceFindResp resourceListByType = getResourceManagerService().findResourceListByType(req);
- if (CollectionUtils.isEmpty(resourceListByType.getResourceMachineList())) {
+ ResourceDetailResp resource = getResourceManagerService().findResourceDetailById(resourceId);
+ if (Objects.isNull(resource.getMachineInfo())) {
append(context,"当前机器不支持machine");
return;
}
- PipResourceMachine resourceMachine = resourceListByType.getResourceMachineList().get(0);
+ MachineInfoDO resourceMachine = resource.getMachineInfo();
//根据目标id查询目标信息
if (StringUtils.isEmpty(pipeline.getTargetVersionId())){
@@ -81,7 +82,7 @@ public class CustomCompilerWorker extends SshWorker {
append(context,"目标文件不存在或不可读");
toBadEnding();
}
- append(context,"上传文件"+targetVersion.getFileName()+"到目标服务器IP:"+resourceMachine.getMachineHost());
+ append(context,"上传文件"+targetVersion.getFileName()+"到目标服务器IP:"+resourceMachine.getHostIp());
append(context,"上传路径:"+"/home/casic/706/ai_test_527");
// 上传目标 到目标服务器
//通过taskProperties获取制品路径
@@ -91,7 +92,7 @@ public class CustomCompilerWorker extends SshWorker {
//则默认路径写死
remoteDir = "/home/casic/706/ai_test_527";
}
- SftpUploadUtil.uploadFileViaSftp(resourceMachine.getMachineHost(),Integer.valueOf(resourceMachine.getSshPort()),resourceMachine.getUsername(), CryptogramUtil.doDecrypt(resourceMachine.getPassword()),null,file.getAbsolutePath(),remoteDir,file.getName());
+ SftpUploadUtil.uploadFileViaSftp(resourceMachine.getHostIp(), resourceMachine.getSshPort(),resourceMachine.getUsername(), resourceMachine.getPassword(),null,file.getAbsolutePath(),remoteDir,file.getName());
//TODO 得改一下
statusCode = shell(resourceMachine, null,context,
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java
index 3fdf041d..cfeba949 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java
@@ -3,18 +3,20 @@ package cd.casic.ci.process.engine.worker;
import cd.casic.ci.process.common.WorkAtom;
import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
-import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
import cd.casic.ci.process.engine.worker.base.SshWorker;
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.task.PipTask;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.Map;
+import java.util.Objects;
/**
* 自定义镜像执行命令
@@ -61,12 +63,12 @@ public class DIYImageExecuteCommandWorker extends SshWorker {
ResourceQueryReq req = new ResourceQueryReq();
req.setId(resourceId);
req.setType(resourceType);
- TaskResourceFindResp resourceListByType = getResourceManagerService().findResourceListByType(req);
- if (CollectionUtils.isEmpty(resourceListByType.getResourceMachineList())) {
+ ResourceDetailResp resource = getResourceManagerService().findResourceDetailById(resourceId);
+ if (Objects.isNull(resource)||Objects.isNull(resource.getMachineInfo())) {
append(context,"当前机器不支持machine");
return;
}
- PipResourceMachine resourceMachine = resourceListByType.getResourceMachineList().get(0);
+ MachineInfoDO resourceMachine = resource.getMachineInfo();
//TODO 得改一下
statusCode = shell(resourceMachine, null,context,
"echo \"自定义镜像执行命令\"",
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java
index 0296a007..90eaa50e 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java
@@ -2,19 +2,17 @@ package cd.casic.ci.process.engine.worker.afl;
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.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.AFLSlotCompileConstant;
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.service.target.TargetVersionService;
-import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import com.alibaba.fastjson.JSON;
import com.jcraft.jsch.*;
import jakarta.annotation.Resource;
@@ -45,22 +43,13 @@ public class AFLSlotCompileWorker extends DockerWorker {
Map taskProperties = task.getTaskProperties();
String managerId = taskProperties.get(AFLSlotCompileConstant.MANAGER_ID) instanceof String ? ((String) taskProperties.get(AFLSlotCompileConstant.MANAGER_ID)) : null;
// ssh 上传目标文件
- ResourceFindResp resourceById = resourceManagerService.findResourceById(managerId);
- String machineId = resourceById.getMachineId();
- String dockerId = resourceById.getDockerId();
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(managerId);
String imageName = taskProperties.get(AFLSlotCompileConstant.IMAGE_NAME) instanceof String ? ((String) taskProperties.get(AFLSlotCompileConstant.IMAGE_NAME)) : null;
- if (StringUtils.isEmpty(machineId)||StringUtils.isEmpty(dockerId)) {
+ MachineInfoDO machineInfo = resourceById.getMachineInfo();
+ DockerEndpointDo dockerInfo = resourceById.getDockerInfo();
+ if (Objects.isNull(machineInfo)||Objects.isNull(dockerInfo)) {
append(context,"该资源不支持docker或者ssh");
}
- ResourceQueryReq req = new ResourceQueryReq();
- req.setId(machineId);
- req.setType("machine");
- TaskResourceFindResp machineQuery = resourceManagerService.findResourceListByType(req);
- req.setId(dockerId);
- req.setType("docker");
- TaskResourceFindResp dockerQuery = resourceManagerService.findResourceListByType(req);
- PipResourceMachine machineInfo = machineQuery.getResourceMachineList().get(0);
- DockerEndpointDo dockerInfo = dockerQuery.getDockerEndpointList().get(0);
PipPipeline pipeline = (PipPipeline) getContextManager().getContext(task.getPipelineId()).getContextDef();
// 获取目标文件
TargetVersion targetVersion = targetVersionService.getById(pipeline.getTargetVersionId());
@@ -80,8 +69,8 @@ public class AFLSlotCompileWorker extends DockerWorker {
try {
append(context,"AFL编译,上传文件路径:"+realPath);
SftpUploadUtil.uploadFileViaSftp(
- machineInfo.getMachineHost()
- ,Integer.valueOf(machineInfo.getSshPort()),machineInfo.getUsername(), CryptogramUtil.doDecrypt(machineInfo.getPassword()),"",filePath,realPath,file.getName());
+ machineInfo.getHostIp()
+ ,machineInfo.getSshPort(),machineInfo.getUsername(), machineInfo.getPassword(),"",filePath,realPath,file.getName());
} catch (SftpUploadUtil.SftpUploadException e) {
append(context,"上传文件失败,请确认资源信息是否有误:"+JSON.toJSONString(machineInfo));
log.error("上传文件报错",e);
@@ -148,16 +137,15 @@ public class AFLSlotCompileWorker extends DockerWorker {
return "";
}
- private List getCompileResult(TaskRunContext context, String path, PipResourceMachine machineInfo){
- String host = machineInfo.getMachineHost();
+ private List getCompileResult(TaskRunContext context, String path, MachineInfoDO machineInfo){
+ String host = machineInfo.getHostIp();
String user = machineInfo.getUsername();
- String password = CryptogramUtil.doDecrypt(machineInfo.getPassword());
append(context,"AFL编译完毕");
List fileNameList = null;
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
- session.setPassword(password);
+ session.setPassword(machineInfo.getPassword());
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java
index cc1dcaa3..fac19984 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java
@@ -3,9 +3,7 @@ package cd.casic.ci.process.engine.worker.afl;
import cd.casic.ci.process.common.WorkAtom;
import cd.casic.ci.process.dto.req.aflManager.AflManagerReq;
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.AFLConstant;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.DIYImageExecuteCommandConstant;
import cd.casic.ci.process.engine.manager.PostHandlerManager;
import cd.casic.ci.process.engine.postHandler.ExecuteTaskPostHandler;
@@ -30,6 +28,7 @@ import org.springframework.util.CollectionUtils;
import java.io.File;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
import static cd.casic.ci.process.engine.constant.AFLConstant.*;
@@ -55,15 +54,13 @@ public class AFLWorker extends DockerWorker {
if (context.getContextDef() instanceof PipTask taskDef) {
log.info(taskDef.getTaskName());
Map taskProperties = taskDef.getTaskProperties();
+ //从上下文中获取资源id
String managerId = getVariableNearby(context, AFL_RESOURCE_MANAGER_ID_KEY) instanceof String ? ((String) getVariableNearby(context, AFL_RESOURCE_MANAGER_ID_KEY)) : null;
// ssh 上传目标文件
- ResourceFindResp resourceById = resourceManagerService.findResourceById(managerId);
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(managerId);
if (resourceById==null) {
append(context,"缺少资源信息,请添加编译节点");
}
- //从taskProperties中获取资源id
- String resourceType = "docker";
- String resourceId = resourceById.getDockerId();
String commandEnd = taskProperties.get(COMMAND_END) instanceof String ? ((String) taskProperties.get(COMMAND_END)) : null;
String imageName = getVariableNearby(context,IMAGE_NAME) instanceof String ? ((String) getVariableNearby(context,IMAGE_NAME)) : null;
String executableName = taskProperties.get(EXECUTABLE_NAME) instanceof String ? ((String) taskProperties.get(EXECUTABLE_NAME)) : null;
@@ -74,22 +71,14 @@ public class AFLWorker extends DockerWorker {
String seedPath = (String)getGlobalVariable(context,AFL_DOCKER_SEED_PATH_KEY);
if (StringUtils.isEmpty(seedPath) ||
StringUtils.isEmpty(workDir) ||
- StringUtils.isEmpty(resourceId) ||
+ Objects.isNull(resourceById)||
StringUtils.isEmpty(imageName) ||
StringUtils.isEmpty(executableName) ||
StringUtils.isEmpty(commandEnd) ||
- StringUtils.isEmpty(resourceType)) {
+ Objects.isNull(resourceById.getDockerInfo())) {
// 缺少参数
toBadEnding();
}
- ResourceQueryReq req = new ResourceQueryReq();
- req.setId(resourceId);
- req.setType(resourceType);
- TaskResourceFindResp resourceListByType = getResourceManagerService().findResourceListByType(req);
- if (CollectionUtils.isEmpty(resourceListByType.getDockerEndpointList())) {
- append(context,"当前机器不支持docker");
- return;
- }
String output = workDir +File.separator+ AFL_DOCKER_OUTPUT;
String volumeWorkDirPath = AFL_VOLUME_WORK_DIR_PREFIX;
PipPipeline pipeline = (PipPipeline) getContextManager().getContext(taskDef.getPipelineId()).getContextDef();
@@ -113,7 +102,7 @@ public class AFLWorker extends DockerWorker {
Long runningTime = getRunningTime(timeHours);
append(context,"运行时间"+runningTime);
// 获取docker 暂时先写固定值
- dockerRun(commandScript,resourceListByType.getDockerEndpointList().get(0),context, runningTime);
+ dockerRun(commandScript,resourceById.getDockerInfo(),context, runningTime);
} catch (Exception e) {
String errorMessage = "执行afl失败"+e.getMessage() + "\r\n";
log.error("执行afl失败", e);
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java
index b298e285..9734e952 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/TestCaseGenerationWorker.java
@@ -3,12 +3,10 @@ package cd.casic.ci.process.engine.worker.afl;
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.dto.resp.resource.ResourceDetailResp;
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;
@@ -17,6 +15,7 @@ import cd.casic.ci.process.process.service.testCase.TestCaseInfoService;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import com.alibaba.fastjson.JSON;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -50,21 +49,12 @@ public class TestCaseGenerationWorker extends DockerWorker {
String managerId = getVariableNearby(context, AFL_RESOURCE_MANAGER_ID_KEY) instanceof String ? ((String) getVariableNearby(context, AFL_RESOURCE_MANAGER_ID_KEY)) : null;
Object itemListObject = taskProperties.get(ITEM_LIST);
List itemList = JSON.parseArray(JSON.toJSONString(itemListObject),String.class);
- ResourceFindResp resourceById = resourceManagerService.findResourceById(managerId);
- String machineId = resourceById.getMachineId();
- String dockerId = resourceById.getDockerId();
- if (StringUtils.isEmpty(machineId)||StringUtils.isEmpty(dockerId)) {
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(managerId);
+ MachineInfoDO machineInfo = resourceById.getMachineInfo();
+ DockerEndpointDo dockerInfo = resourceById.getDockerInfo();
+ if (Objects.isNull(machineInfo)||Objects.isNull(dockerInfo)) {
append(context,"该资源不支持docker或者ssh");
}
- ResourceQueryReq req = new ResourceQueryReq();
- req.setId(machineId);
- req.setType("machine");
- TaskResourceFindResp machineQuery = resourceManagerService.findResourceListByType(req);
- req.setId(dockerId);
- req.setType("docker");
- 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();
@@ -99,8 +89,8 @@ public class TestCaseGenerationWorker extends DockerWorker {
append(context,"测试用例选用上传模式,种子文件路径:"+filePath+",种子上传路径:"+seedPath);
try {
SftpUploadUtil.uploadFileViaSftp(
- machineInfo.getMachineHost()
- ,Integer.valueOf(machineInfo.getSshPort()),machineInfo.getUsername(),CryptogramUtil.doDecrypt(machineInfo.getPassword()),"",filePath,seedTarget,file.getName());
+ machineInfo.getHostIp()
+ ,Integer.valueOf(machineInfo.getSshPort()),machineInfo.getUsername(),machineInfo.getPassword(),"",filePath,seedTarget,file.getName());
} catch (SftpUploadUtil.SftpUploadException e) {
append(context,"seed文件上传失败");
log.error("seed文件上传失败",e);
@@ -118,10 +108,10 @@ public class TestCaseGenerationWorker extends DockerWorker {
try {
append(context,"当前上传文件:"+testCaseInfo.getFileName());
SftpUploadUtil.uploadFileViaSftp(
- machineInfo.getMachineHost()
- ,Integer.valueOf(machineInfo.getSshPort())
+ machineInfo.getHostIp()
+ ,machineInfo.getSshPort()
,machineInfo.getUsername()
- ,CryptogramUtil.doDecrypt(machineInfo.getPassword())
+ ,machineInfo.getPassword()
,"", testFilePath,seedTarget,testCaseInfo.getFileName());
} catch (SftpUploadUtil.SftpUploadException e) {
toBadEnding();
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java
index 18486107..21c0f414 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/BaseWorker.java
@@ -2,9 +2,7 @@ package cd.casic.ci.process.engine.worker.base;
import cd.casic.ci.process.constant.CommandConstant;
-import cd.casic.ci.process.engine.constant.EngineRuntimeConstant;
import cd.casic.ci.process.engine.constant.PipelineBehaviorConstant;
-import cd.casic.ci.process.engine.context.ConstantContext;
import cd.casic.ci.process.engine.enums.ContextStateEnum;
import cd.casic.ci.process.engine.manager.LoggerManager;
import cd.casic.ci.process.engine.manager.PostHandlerManager;
@@ -12,17 +10,10 @@ import cd.casic.ci.process.engine.manager.RunContextManager;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
-import cd.casic.ci.process.enums.MachineSystemEnum;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
-import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
import cd.casic.ci.process.process.dataObject.task.PipTask;
-import cd.casic.ci.process.process.service.machine.MachineInfoService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
-import cd.casic.ci.process.ssh.SshClient;
-import cd.casic.ci.process.ssh.SshClientFactory;
-import cd.casic.ci.process.ssh.WinRMHelper;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
import jakarta.annotation.Resource;
@@ -46,8 +37,6 @@ public abstract class BaseWorker implements Runnable{
protected RunContextManager contextManager;
protected String contextKey;
@Resource
- protected MachineInfoService machineInfoService;
- @Resource
protected LoggerManager loggerManager;
@Resource
protected ResourceManagerService resourceManagerService;
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java
index fc8a1484..ce1a073b 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/base/SshWorker.java
@@ -2,13 +2,11 @@ package cd.casic.ci.process.engine.worker.base;
import cd.casic.ci.process.constant.CommandConstant;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
-import cd.casic.ci.process.engine.worker.base.BaseWorker;
import cd.casic.ci.process.enums.MachineSystemEnum;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.ssh.SshClient;
import cd.casic.ci.process.ssh.SshClientFactory;
import cd.casic.ci.process.ssh.WinRMHelper;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
@@ -24,9 +22,9 @@ public abstract class SshWorker extends BaseWorker {
* @param commands 命令
* @return 0 成功;其他值 失败
*/
- public int shell(PipResourceMachine machineInfo, String sudoPassword, BaseRunContext context, String... commands) {
+ public int shell(MachineInfoDO machineInfo, String sudoPassword, BaseRunContext context, String... commands) {
List commandList = Arrays.asList(commands);
- if(MachineSystemEnum.WINDOWS.getSystem().equals(machineInfo.getOsSystem())){
+ if(MachineSystemEnum.WINDOWS.getSystem().equals(machineInfo.getMachineInfoType())){
return powerShell(machineInfo, commandList);
}
// NodeLogger nodeLogger = nodeLoggerThreadLocal.get();
@@ -61,7 +59,7 @@ public abstract class SshWorker extends BaseWorker {
* @param commandList 命令
* @return 0 成功;其他值 失败
*/
- public int powerShell(PipResourceMachine machineInfo, List commandList) {
+ public int powerShell(MachineInfoDO machineInfo, List commandList) {
int statusCode = -1;
//loggerUuid得转换成String类型,才能生成key,然后才能通过websocket实时推送节点执行日志
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/target/TargetSourceCodeWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/target/TargetSourceCodeWorker.java
index 4cbb8433..cb53f60d 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/target/TargetSourceCodeWorker.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/target/TargetSourceCodeWorker.java
@@ -5,7 +5,6 @@ import cd.casic.ci.process.common.WorkAtom;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
import cd.casic.ci.process.engine.worker.base.BaseWorker;
import cd.casic.ci.process.constant.PipelineTargetTypeConstant;
-import cd.casic.ci.process.process.service.machine.MachineInfoService;
import cd.casic.ci.process.process.service.target.TargetVersionService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -19,8 +18,6 @@ import lombok.extern.slf4j.Slf4j;
public class TargetSourceCodeWorker extends BaseWorker {
@Resource
private TargetVersionService targetVersionService;
- @Resource
- private MachineInfoService machineInfoService;
@Override
public void execute(TaskRunContext context) {
// 暂无获取文件方式 todo 先注释掉
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/enums/MachineSystemEnum.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/enums/MachineSystemEnum.java
index 69998036..86cd93a5 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/enums/MachineSystemEnum.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/enums/MachineSystemEnum.java
@@ -9,19 +9,19 @@ public enum MachineSystemEnum {
/**
* Linux
*/
- LINUX("Linux"),
+ LINUX(1),
/**
* Windows
*/
- WINDOWS("Windows");
+ WINDOWS(2);
- private final String system;
+ private final Integer system;
- MachineSystemEnum(String system) {
+ MachineSystemEnum(Integer system) {
this.system = system;
}
- public String getSystem() {
+ public Integer getSystem() {
return system;
}
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/MachineConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/MachineConverter.java
deleted file mode 100644
index 1f4eb8cd..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/MachineConverter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cd.casic.ci.process.process.converter;
-
-
-import cd.casic.ci.process.dto.resp.machine.MachineInfoResp;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-/**
- * @author HopeLi
- * @version v1.0
- * @ClassName PipelineConverter
- * @Date: 2025/5/13 14:39
- * @Description:
- */
-@Mapper(componentModel = "spring")
-public interface MachineConverter {
- MachineConverter INSTANCE = Mappers.getMapper(MachineConverter.class);
- MachineInfoResp toResp(MachineInfo pipPipeline);
- List toRespList(List pipPipelines);
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java
index f26f9312..ab56ea75 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java
@@ -1,7 +1,6 @@
package cd.casic.ci.process.process.converter;
-import cd.casic.ci.process.dto.req.resource.ResourceReq;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@@ -18,10 +17,5 @@ import java.util.List;
@Mapper(componentModel = "spring")
public interface ResourceConverter {
ResourceConverter INSTANCE = Mappers.getMapper(ResourceConverter.class);
-
- ResourceFindResp toResp(PipResourceManager req);
- List toRespList(List pipResourceManagers);
-
-
- PipResourceManager toBean(ResourceReq req);
+ ResourceDetailResp converter(PipResourceManager manager);
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/machine/MachineInfoDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/machine/MachineInfoDao.java
deleted file mode 100644
index b8fca226..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/machine/MachineInfoDao.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cd.casic.ci.process.process.dao.machine;
-
-
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
-
-
-/**
- * 机器信息表
- *
- * @author herenbin
- * @date 2022-09-27 10:10:37
- */
-public interface MachineInfoDao extends BaseMapperX {
-}
\ No newline at end of file
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceDockerEndpointDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceDockerEndpointDao.java
deleted file mode 100644
index c337607f..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceDockerEndpointDao.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cd.casic.ci.process.process.dao.pipeline;
-
-import cd.casic.ci.process.process.dataObject.resource.PipelineDockerEndpoint;
-import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
-
-/**
- * @author HopeLi
- * @version v1.0
- * @ClassName PipResourceDockerEndpointDao
- * @Date: 2025/5/13 14:39
- * @Description:
- */
-public interface PipResourceDockerEndpointDao extends BaseMapperX {
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceMachineDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceMachineDao.java
deleted file mode 100644
index a68386ee..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/pipeline/PipResourceMachineDao.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cd.casic.ci.process.process.dao.pipeline;
-
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
-import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
-
-/**
- * @author HopeLi
- * @version v1.0
- * @ClassName PipResourceMachineDao
- * @Date: 2025/5/13 14:39
- * @Description:
- */
-public interface PipResourceMachineDao extends BaseMapperX {
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/machine/MachineInfo.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/machine/MachineInfo.java
deleted file mode 100644
index e24dc537..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/machine/MachineInfo.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cd.casic.ci.process.process.dataObject.machine;
-
-
-import cd.casic.framework.commons.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 机器信息表
- *
- * @author herenbin
- * @date 2022-09-27 10:10:37
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@TableName("machine_info")
-public class MachineInfo extends BaseDO {
-
-
- /**
- * 机器认证方式 1: 账号认证 2: key认证
- */
- private String authType;
-
- /**
- * 机器描述
- */
- private String description;
- /**
- * id
- */
- @TableId(type = IdType.ASSIGN_ID)
- private String id;
-
- /**
- * 主机ip
- */
- private String machineHost;
-
- /**
- * 机器名称
- */
- private String machineName;
-
- /**
- * 机器状态 1有效 2无效
- */
- private String machineStatus;
-
- /**
- * 机器唯一标识
- */
- private String machineTag;
-
- /**
- * 机器密码
- */
- private String password;
-
- /**
- * 代理id
- */
- private Long proxyId;
-
- /**
- * ssh端口
- */
- private Integer sshPort;
-
- /**
- * 机器账号
- */
- private String username;
- /**
- * 系统类型
- */
- @TableField("os_system")
- private String osSystem;
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceMachine.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceMachine.java
deleted file mode 100644
index b539f4ab..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceMachine.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cd.casic.ci.process.process.dataObject.resource;
-
-import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * @ClassName PipResourceMachine
- * @Author hopeli
- * @Date 2025/31 21:48
- * @Version 1.0
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-public class PipResourceMachine extends PipBaseElement {
- /**
- * 主机地址
- */
- private String machineHost;
-
- /**
- * 描述
- */
- private String description;
-
- /**
- * 机器状态
- */
- private String machineStatus;
-
- /**
- * 登录用户名
- */
- private String username;
-
- /**
- * SSH 端口
- */
- private String sshPort;
-
- /**
- * 密码
- */
- private String password;
-
- /**
- * 秘钥 ID
- */
- private Long secretKeyId;
-
- /**
- * 代理 ID
- */
- private Long proxyId;
-
- /**
- * 认证类型编码
- */
- private Integer authenticationTypeCode;
-
- /**
- * 认证类型
- */
- private String authType;
-
- /**
- * 操作系统
- */
- private String osSystem;
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java
index 0be43d3f..c68e7b9e 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java
@@ -26,7 +26,7 @@ public class PipResourceManager extends PipBaseElement {
/**
* 机器服务器信息id
*/
- private String machineId;
+ private Long machineId;
/**
* 弹性云服务器信息id
@@ -37,4 +37,8 @@ public class PipResourceManager extends PipBaseElement {
* 资源名称
*/
private String resourceName;
+ /**
+ * 资源类型ResourceConstant.RES_TYPE_*
+ * */
+ private String resourceType;
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflCrashesInfoServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflCrashesInfoServiceImpl.java
index 889457ed..20daf0ee 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflCrashesInfoServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflCrashesInfoServiceImpl.java
@@ -3,7 +3,7 @@ package cd.casic.ci.process.process.service.aflManager.impl;
import cd.casic.ci.process.dto.req.aflManager.AflManagerReq;
import cd.casic.ci.process.dto.resp.aflManager.AflCrashesInfoResp;
import cd.casic.ci.process.dto.resp.aflManager.AflCrashesResp;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.PipelineVariableConstant;
import cd.casic.ci.process.engine.manager.RunContextManager;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
@@ -11,13 +11,13 @@ import cd.casic.ci.process.process.converter.AflManagerConverter;
import cd.casic.ci.process.process.dao.aflManager.AflCrashesInfoDao;
import cd.casic.ci.process.process.dataObject.aflManager.AflCrashesInfo;
import cd.casic.ci.process.process.dataObject.aflManager.AflInfo;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.process.service.aflManager.AflCrashesInfoService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import de.danielbechler.util.Collections;
@@ -73,21 +73,21 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl resultList = SftpUploadUtil.findCreateTimeByCommand(
- resourceMachine.getMachineHost(),
- Integer.parseInt(resourceMachine.getSshPort()),
+ resourceMachine.getHostIp(),
+ resourceMachine.getSshPort(),
resourceMachine.getUsername(),
resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
@@ -114,8 +114,8 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl fileResultList = SftpUploadUtil.findFileByteByCommand(
- resourceMachine.getMachineHost(),
- Integer.parseInt(resourceMachine.getSshPort()),
+ resourceMachine.getHostIp(),
+ resourceMachine.getSshPort(),
resourceMachine.getUsername(),
resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
@@ -141,12 +141,12 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl files = SftpUploadUtil.listFilesInRemoteDirectory(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
if (!CollectionUtils.isEmpty(files)) {
// 步骤4:批量复制文件到目标目录
Map copiedFiles = SftpUploadUtil.copyRemoteFilesToLocalMap(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, files, "/home/ops/opsFile/crashes_result/" + UUID.randomUUID() + "/");
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, files, "/home/ops/opsFile/crashes_result/" + UUID.randomUUID() + "/");
System.out.println("共复制 " + copiedFiles.size() + " 个文件");
//绑定对应的文件路径
@@ -242,26 +242,26 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl files = SftpUploadUtil.listFilesInRemoteDirectory(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
if (!CollectionUtils.isEmpty(files)){
aflCrashesResp.setImperfectionCount(files.size());
}
//查询已验证和未验证缺陷数
- AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
+ AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
if (!ObjectUtils.isEmpty(aflInfo)){
aflCrashesResp.setVerifiedCount(Integer.parseInt(aflInfo.getSavedCrashes()));
aflCrashesResp.setUnverifiedCount(Integer.parseInt(aflInfo.getPendingFavs()));
@@ -289,21 +289,21 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl resultList = SftpUploadUtil.findCreateTimeByCommand(
- resourceMachine.getMachineHost(),
- Integer.parseInt(resourceMachine.getSshPort()),
+ resourceMachine.getHostIp(),
+ resourceMachine.getSshPort(),
resourceMachine.getUsername(),
resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
@@ -331,8 +331,8 @@ public class AflCrashesInfoServiceImpl extends ServiceImpl fileResultList = SftpUploadUtil.findFileByteByCommand(
- resourceMachine.getMachineHost(),
- Integer.parseInt(resourceMachine.getSshPort()),
+ resourceMachine.getHostIp(),
+ resourceMachine.getSshPort(),
resourceMachine.getUsername(),
resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + crashesFilePath);
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflInfoServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflInfoServiceImpl.java
index 50017cc5..f95efcc5 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflInfoServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflInfoServiceImpl.java
@@ -3,20 +3,20 @@ package cd.casic.ci.process.process.service.aflManager.impl;
import cd.casic.ci.process.dto.req.aflManager.AflManagerReq;
import cd.casic.ci.process.dto.resp.aflManager.AflBaseInfoResp;
import cd.casic.ci.process.dto.resp.aflManager.AflInfoResp;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.PipelineVariableConstant;
import cd.casic.ci.process.engine.manager.RunContextManager;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
import cd.casic.ci.process.process.converter.AflManagerConverter;
import cd.casic.ci.process.process.dao.aflManager.AflInfoDao;
import cd.casic.ci.process.process.dataObject.aflManager.AflInfo;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.process.service.aflManager.AflInfoService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import de.danielbechler.util.Collections;
@@ -68,19 +68,17 @@ public class AflInfoServiceImpl extends ServiceImpl impleme
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"未找到资源");
}
- ResourceFindResp resourceById = resourceManagerService.findResourceById(resourceId);
- if (resourceById == null || resourceById.getResourceMachine() == null) {
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(resourceId);
+ if (resourceById == null || resourceById.getMachineInfo() == null) {
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源信息错误");
}
- PipResourceMachine resourceMachine = resourceById.getResourceMachine();
- String password = CryptogramUtil.doDecrypt(resourceMachine.getPassword());
- resourceMachine.setPassword(password);
- AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
+ MachineInfoDO resourceMachine = resourceById.getMachineInfo();
+ AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
//在本地创建一个新文件夹,将远程文件复制一份过去
List sourceFilePaths = new ArrayList<>();
sourceFilePaths.add(remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
- List strings = SftpUploadUtil.copyRemoteFilesToLocal(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, sourceFilePaths, "/home/ops/opsFile/fuzzer_result/" + UUID.randomUUID() + "/");
+ List strings = SftpUploadUtil.copyRemoteFilesToLocal(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, sourceFilePaths, "/home/ops/opsFile/fuzzer_result/" + UUID.randomUUID() + "/");
aflInfo.setFilePath(strings.get(0));
aflInfo.setPipelineId(req.getPipelineId());
@@ -128,15 +126,15 @@ public class AflInfoServiceImpl extends ServiceImpl impleme
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"未找到资源");
}
- ResourceFindResp resourceById = resourceManagerService.findResourceById(resourceId);
- if (resourceById == null || resourceById.getResourceMachine() == null) {
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(resourceId);
+ if (resourceById == null || resourceById.getMachineInfo() == null) {
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源信息错误");
}
- PipResourceMachine resourceMachine = resourceById.getResourceMachine();
- String password = CryptogramUtil.doDecrypt(resourceMachine.getPassword());
+ MachineInfoDO resourceMachine = resourceById.getMachineInfo();
+ String password = resourceMachine.getPassword();
resourceMachine.setPassword(password);
- AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
+ AflInfo aflInfo = SftpUploadUtil.downloadFileSftpForInputStreamAndSetAflInfo(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(),null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/fuzzer_stats");
return AflManagerConverter.INSTANCE.toAflInfoResp(aflInfo);
}
@@ -211,18 +209,14 @@ public class AflInfoServiceImpl extends ServiceImpl impleme
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"未找到资源");
}
- ResourceFindResp resourceById = resourceManagerService.findResourceById(resourceId);
- if (resourceById == null || resourceById.getResourceMachine() == null) {
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(resourceId);
+ if (resourceById == null || resourceById.getMachineInfo() == null) {
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源信息错误");
}
-
- PipResourceMachine resourceMachine = resourceById.getResourceMachine();
- String password = CryptogramUtil.doDecrypt(resourceMachine.getPassword());
- resourceMachine.setPassword(password);
-
+ MachineInfoDO resourceMachine = resourceById.getMachineInfo();
//找出seed文件夹下的所有测试样例文件,计算数量
List files = SftpUploadUtil.listFilesInRemoteDirectory(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + "/SEED/");
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + "/SEED/");
if (!CollectionUtils.isEmpty(files)){
resp.setTestCaseCount(files.size());
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflPlotInfoServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflPlotInfoServiceImpl.java
index ec18a6e9..c12b02f5 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflPlotInfoServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/aflManager/impl/AflPlotInfoServiceImpl.java
@@ -2,20 +2,19 @@ package cd.casic.ci.process.process.service.aflManager.impl;
import cd.casic.ci.process.dto.req.aflManager.AflManagerReq;
import cd.casic.ci.process.dto.resp.aflManager.AflPlotInfoResp;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.engine.constant.PipelineVariableConstant;
import cd.casic.ci.process.engine.manager.RunContextManager;
import cd.casic.ci.process.engine.runContext.BaseRunContext;
import cd.casic.ci.process.process.converter.AflManagerConverter;
import cd.casic.ci.process.process.dao.aflManager.AflPlotInfoDao;
import cd.casic.ci.process.process.dataObject.aflManager.AflPlotInfo;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.process.service.aflManager.AflPlotInfoService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
-import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import de.danielbechler.util.Collections;
@@ -64,20 +63,17 @@ public class AflPlotInfoServiceImpl extends ServiceImpl sourceFilePaths = new ArrayList<>();
sourceFilePaths.add(remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/plot_data");
- List strings = SftpUploadUtil.copyRemoteFilesToLocal(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, sourceFilePaths, "/home/ops/opsFile/plot_result/" + UUID.randomUUID() + "/");
+ List strings = SftpUploadUtil.copyRemoteFilesToLocal(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, sourceFilePaths, "/home/ops/opsFile/plot_result/" + UUID.randomUUID() + "/");
aflPlotInfo.setFilePath(strings.get(0));
aflPlotInfo.setPipelineId(req.getPipelineId());
@@ -125,15 +121,13 @@ public class AflPlotInfoServiceImpl extends ServiceImpl resultList = SftpUploadUtil.findCreateTimeByCommand(resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/queue/");
+ List resultList = SftpUploadUtil.findCreateTimeByCommand(resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + "/ai_afl/default/queue/");
//解析resultList
@@ -190,23 +188,23 @@ public class AflSeedInfoServiceImpl extends ServiceImpl files = SftpUploadUtil.listFilesInRemoteDirectory(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + seedFilePath);
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, remoteFilePath + "PIP_" + req.getPipelineId() + seedFilePath);
if (!CollectionUtils.isEmpty(files)) {
// 步骤2:批量复制文件到目标目录
List copiedFiles = SftpUploadUtil.copyRemoteFilesToLocal(
- resourceMachine.getMachineHost(), Integer.parseInt(resourceMachine.getSshPort()), resourceMachine.getUsername(), resourceMachine.getPassword(), null, files, "/home/ops/opsFile/seed_result/" + UUID.randomUUID() + "/");
+ resourceMachine.getHostIp(), resourceMachine.getSshPort(), resourceMachine.getUsername(), resourceMachine.getPassword(), null, files, "/home/ops/opsFile/seed_result/" + UUID.randomUUID() + "/");
System.out.println("共复制 " + copiedFiles.size() + " 个文件");
List aflSeedInfos = new ArrayList<>(0);
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/DockerService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/DockerService.java
index 4ef03d27..282c5385 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/DockerService.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/DockerService.java
@@ -5,6 +5,5 @@ import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
public interface DockerService {
- List imageNameList(String resourceDetailId);
List imageListByResourceId( String resourceId);
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/impl/DockerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/impl/DockerServiceImpl.java
index fd89e426..c01ea32a 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/impl/DockerServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/docker/impl/DockerServiceImpl.java
@@ -1,8 +1,7 @@
package cd.casic.ci.process.process.service.docker.impl;
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.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.process.service.docker.DockerService;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
import cd.casic.framework.commons.exception.ServiceException;
@@ -29,53 +28,10 @@ import static java.lang.String.format;
public class DockerServiceImpl implements DockerService {
@Resource
private ResourceManagerService resourceManagerService;
- @Override
- public List imageNameList(String resourceDetailId) {
- ResourceQueryReq req = new ResourceQueryReq();
- req.setType("docker");
- req.setId(resourceDetailId);
- TaskResourceFindResp resourceListByType = resourceManagerService.findResourceListByType(req);
- List dockerEndpointList = resourceListByType.getDockerEndpointList();
- if (CollectionUtils.isEmpty(dockerEndpointList)) {
- return new ArrayList<>();
- }
- DockerEndpointDo dockerInfo = dockerEndpointList.get(0);
-
- URI uri = null;
- try {
- uri = new URI(format("tcp://%s:%s", dockerInfo.getHost(), dockerInfo.getPort()));
- } catch (URISyntaxException e) {
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR);
- }
-
- ApacheDockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(uri).build();
- DockerClient build = null;
- try{
- build = DockerClientBuilder.getInstance().withDockerHttpClient(httpClient).build();
- List exec = build.listImagesCmd().exec();
- List res = new LinkedList<>();
- for (Image image : exec) {
- String[] repoTags = image.getRepoTags();
- if (image.getRepoTags() != null && repoTags.length > 0) {
- res.add(repoTags[0]);
- }
- }
- return res;
- } finally {
- if (build!=null) {
- try {
- build.close();
- } catch (IOException e) {
-
- }
- }
- }
- }
-
@Override
public List imageListByResourceId(String resourceId) {
- ResourceFindResp resourceById = resourceManagerService.findResourceById(resourceId);
- DockerEndpointDo dockerInfo = resourceById.getDockerEndpoint();
+ ResourceDetailResp resourceById = resourceManagerService.findResourceDetailById(resourceId);
+ DockerEndpointDo dockerInfo = resourceById.getDockerInfo();
URI uri = null;
try {
uri = new URI(format("tcp://%s:%s", dockerInfo.getHost(), dockerInfo.getPort()));
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/MachineInfoService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/MachineInfoService.java
deleted file mode 100644
index a94fe966..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/MachineInfoService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cd.casic.ci.process.process.service.machine;
-
-
-import cd.casic.ci.process.dto.req.machine.MachineInfoReq;
-import cd.casic.ci.process.dto.resp.machine.MachineInfoResp;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
-
-/**
- * 机器信息表service接口
- *
- * @author herenbin
- * @date 2022-09-27 10:25:29
- */
-public interface MachineInfoService extends IService {
- List list(MachineInfoReq req);
-
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/impl/MachineInfoServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/impl/MachineInfoServiceImpl.java
deleted file mode 100644
index fff3a0dd..00000000
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/machine/impl/MachineInfoServiceImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cd.casic.ci.process.process.service.machine.impl;
-
-
-import cd.casic.ci.process.dto.req.machine.MachineInfoReq;
-import cd.casic.ci.process.dto.resp.machine.MachineInfoResp;
-import cd.casic.ci.process.process.converter.MachineConverter;
-import cd.casic.ci.process.process.dao.machine.MachineInfoDao;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import cd.casic.ci.process.process.service.machine.MachineInfoService;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-
-/**
- * 机器信息表service接口实现类
- * @author herenbin
- * @date 2022-09-27 10:25:29
- */
-@Slf4j
-@Service
-public class MachineInfoServiceImpl extends ServiceImpl implements MachineInfoService {
- @Resource
- private MachineInfoDao machineInfoDao;
-
- @Override
- public List list(MachineInfoReq req) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
-// 根据机器名称 查询
- if (ObjectUtil.isNotEmpty(req.getMachineName())) {
- wrapper.like(MachineInfo::getMachineName, req.getMachineName());
- }
- // 根据机器状态 1有效 2无效 查询
- if (ObjectUtil.isNotEmpty(req.getMachineStatus())) {
- wrapper.eq(MachineInfo::getMachineStatus, req.getMachineStatus());
- }
- List machineInfos = machineInfoDao.selectList(wrapper);
- return MachineConverter.INSTANCE.toRespList(machineInfos);
- }
-}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java
index 795392a0..92c2ff6a 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java
@@ -1,15 +1,13 @@
package cd.casic.ci.process.process.service.resource;
-import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
-import cd.casic.ci.process.dto.req.resource.ResourceReq;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
-import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
+import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
+import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
-import cd.casic.framework.commons.pojo.PageResult;
import com.baomidou.mybatisplus.extension.service.IService;
-import jakarta.validation.Valid;
-import java.util.List;
+
+
/**
* @author HopeLi
@@ -19,19 +17,11 @@ import java.util.List;
* @Description:
*/
public interface ResourceManagerService extends IService {
- String createResource(@Valid ResourceReq resourceReq);
-
- void deleteResource(String id);
-
- void updateResource(@Valid ResourceReq resourceReq);
-
- ResourceFindResp findResourceById(String id);
-
- List findResourceList(@Valid ResourceQueryReq req);
-
- PageResult findResourcePage(@Valid ResourceQueryReq req);
-
- TaskResourceFindResp findResourceListByType(@Valid ResourceQueryReq req);
-
- List findResourceListForObjectByType(@Valid ResourceQueryReq req);
+ /**
+ * 创建||申请 资源
+ * */
+ void createResource(ResourceCreateReq req);
+ void updateResource(ResourceUpdateReq req);
+ ResourceDetailResp findResourceDetailById(String resourceId);
+ void deleteResource(String resourceId);
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java
index ad3ae0ba..fb69e8d0 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java
@@ -1,38 +1,26 @@
package cd.casic.ci.process.process.service.resource.impl;
-import cd.casic.ci.process.dto.req.resource.ResourceQueryReq;
-import cd.casic.ci.process.dto.req.resource.ResourceReq;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
-import cd.casic.ci.process.dto.resp.taskResource.TaskResourceFindResp;
+import cd.casic.ci.process.constant.ResourceConstant;
+import cd.casic.ci.process.dto.req.resource.ResourceCreateReq;
+import cd.casic.ci.process.dto.req.resource.ResourceUpdateReq;
+import cd.casic.ci.process.dto.resp.resource.ResourceDetailResp;
import cd.casic.ci.process.process.converter.ResourceConverter;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceCloudDao;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceK8SDao;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceMachineDao;
import cd.casic.ci.process.process.dao.pipeline.PipResourceManagerDao;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import cd.casic.ci.process.process.service.resource.ResourceManagerService;
-import cd.casic.framework.commons.exception.ServiceException;
-import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
-import cd.casic.framework.commons.pojo.PageResult;
-import cd.casic.framework.security.dal.user.AdminUserDO;
-import cd.casic.framework.tenant.core.service.AdminUserServiceImpl;
import cd.casic.module.execute.docker.dao.DockerEndpointDao;
import cd.casic.module.execute.docker.dataobject.dto.DockerEndpointDo;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import cd.casic.module.execute.docker.dataobject.model.DockerEndpoint;
+import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
+import cd.casic.module.machine.service.MachineInfoService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Objects;
/**
* @author HopeLi
@@ -46,359 +34,97 @@ import java.util.List;
public class ResourceManagerServiceImpl extends ServiceImpl implements ResourceManagerService {
@Resource
private PipResourceManagerDao pipResourceManagerDao;
-
- @Resource
- private PipResourceMachineDao machineDao;
-
@Resource
private DockerEndpointDao dockerEndpointDao;
-
@Resource
- private PipResourceK8SDao k8SDao;
-
+ private MachineInfoService machineInfoService;
@Resource
- private PipResourceCloudDao cloudDao;
-
- @Resource
- private AdminUserServiceImpl adminUserService;
-
+ private ResourceConverter converter;
@Override
- @Transactional(rollbackFor = Exception.class)
- public String createResource(ResourceReq resourceReq) {
-
- PipResourceManager pipResourceManager = ResourceConverter.INSTANCE.toBean(resourceReq);
-
- //如果资源类型不属于弹性云,则新增,如果属于弹性云,则走申请流程
- if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){
- PipResourceMachine resourceMachine = resourceReq.getResourceMachine();
- machineDao.insert(resourceMachine);
-
- pipResourceManager.setMachineId(resourceMachine.getId());
+ public void createResource(ResourceCreateReq req) {
+ String resourceType = req.getResourceType();
+ PipResourceManager manager = new PipResourceManager();
+ manager.setResourceName(req.getResourceName());
+ if (ResourceConstant.RES_TYPE_CUSTOM.equals(resourceType)) {
+ manager.setResourceType(ResourceConstant.RES_TYPE_CUSTOM);
+ Long machineInfoId = req.getMachineInfoId();
+ MachineInfoDO machineInfoDO = machineInfoService.validateMachineInfoExists(machineInfoId);
+ manager.setMachineId(machineInfoDO.getId());
+ // 判断docker是否需要新增docker记录
+ if (Objects.nonNull(req.getDockerPort())) {
+ DockerEndpointDo dockerEndpoint = new DockerEndpointDo();
+ dockerEndpoint.setName(machineInfoDO.getName());
+ dockerEndpoint.setPort(req.getDockerPort());
+ dockerEndpoint.setHost(machineInfoDO.getHostIp());
+ dockerEndpoint.setType(DockerEndpoint.DockerEndpointTypeEnum.REMOTE);
+ dockerEndpointDao.insert(dockerEndpoint);
+ manager.setDockerId(dockerEndpoint.getId());
+ }
+ } else if(ResourceConstant.RES_TYPE_CLOUD.equals(resourceType)){
+ // 入库。申请资源等操作
}
- if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) {
- PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S();
- k8SDao.insert(pipResourceK8S);
-
- pipResourceManager.setK8sId(pipResourceK8S.getId());
- }
- if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) {
- DockerEndpointDo dockerEndpoint = resourceReq.getDockerEndpoint();
- dockerEndpointDao.insert(dockerEndpoint);
-
- pipResourceManager.setDockerId(dockerEndpoint.getId());
- }
-
- if (!ObjectUtils.isEmpty(resourceReq.getPipResourceCloud())) {
- PipResourceCloud pipResourceCloud = resourceReq.getPipResourceCloud();
- cloudDao.insert(pipResourceCloud);
-
- pipResourceManager.setCloudId(pipResourceCloud.getId());
- }
-
- pipResourceManagerDao.insert(pipResourceManager);
- return pipResourceManager.getId();
}
@Override
- public void deleteResource(String id) {
- PipResourceManager pipResourceManager = pipResourceManagerDao.selectById(id);
- if (!StringUtils.isEmpty(pipResourceManager.getMachineId())){
- machineDao.deleteById(pipResourceManager.getMachineId());
+ public void updateResource(ResourceUpdateReq req) {
+ String resourceType = req.getResourceType();
+ String id = req.getId();
+ PipResourceManager manager = pipResourceManagerDao.selectById(id);
+ // 同类型资源修改
+ if (manager.getResourceType().equals(resourceType)) {
+ if (ResourceConstant.RES_TYPE_CUSTOM.equals(resourceType)) {
+ manager.setResourceType(ResourceConstant.RES_TYPE_CUSTOM);
+ Long machineInfoId = req.getMachineInfoId();
+ MachineInfoDO machineInfoDO = machineInfoService.validateMachineInfoExists(machineInfoId);
+ manager.setMachineId(machineInfoDO.getId());
+ // 判断docker是否需要新增docker记录,
+ // 1.之前没有维护docker信息,之后维护了
+ // 2.维护docker信息,之后需要修改
+ // 3.之前维护了docker信息,之后不想维护了
+ DockerEndpointDo dockerEndpoint = new DockerEndpointDo();
+ dockerEndpoint.setName(machineInfoDO.getName());
+ dockerEndpoint.setPort(req.getDockerPort());
+ dockerEndpoint.setHost(machineInfoDO.getHostIp());
+ dockerEndpoint.setType(DockerEndpoint.DockerEndpointTypeEnum.REMOTE);
+ if (StringUtils.isEmpty(manager.getDockerId()) &&Objects.nonNull(req.getDockerPort())) {
+ dockerEndpointDao.insert(dockerEndpoint);
+ manager.setDockerId(dockerEndpoint.getId());
+ } else if (!StringUtils.isEmpty(manager.getDockerId()) &&Objects.nonNull(req.getDockerPort())) {
+ dockerEndpointDao.updateById(dockerEndpoint);
+ manager.setDockerId(dockerEndpoint.getId());
+ } else if (!StringUtils.isEmpty(manager.getDockerId()) &&!Objects.nonNull(req.getDockerPort())) {
+ String dockerId = manager.getDockerId();
+ dockerEndpointDao.deleteById(dockerId);
+ manager.setDockerId(null);
+ }
+ } else if(ResourceConstant.RES_TYPE_CLOUD.equals(resourceType)){
+ // 入库。申请资源等操作
+ }
+ } else {
+ //天河国云资源转机器资源是否需要销毁原本资源?还是说可以自由切换预留入口
}
- if (!StringUtils.isEmpty(pipResourceManager.getK8sId())){
- k8SDao.deleteById(pipResourceManager.getK8sId());
- }
- if (!StringUtils.isEmpty(pipResourceManager.getDockerId())){
- dockerEndpointDao.deleteById(pipResourceManager.getDockerId());
- }
- if (!StringUtils.isEmpty(pipResourceManager.getCloudId())){
- cloudDao.deleteById(pipResourceManager.getCloudId());
- }
- pipResourceManagerDao.deleteById(id);
+ pipResourceManagerDao.updateById(manager);
}
@Override
- public void updateResource(ResourceReq resourceReq) {
- PipResourceManager temp = pipResourceManagerDao.selectById(resourceReq.getId());
- temp.setResourceName(resourceReq.getResourceName());
-
- //先删除旧的资源信息
- if (!StringUtils.isEmpty(temp.getMachineId())){
- machineDao.deleteById(temp.getMachineId());
- }
-
-
- if (!StringUtils.isEmpty(temp.getK8sId())){
- k8SDao.deleteById(temp.getK8sId());
-
- }
-
- if (!StringUtils.isEmpty(temp.getDockerId())){
- dockerEndpointDao.deleteById(temp.getDockerId());
-
- }
-
- if (!StringUtils.isEmpty(temp.getCloudId())){
- cloudDao.deleteById(temp.getCloudId());
-
- }
-
-
- //根据新资源信息新增
- if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){
- PipResourceMachine resourceMachine = resourceReq.getResourceMachine();
- machineDao.insert(resourceMachine);
-
- temp.setMachineId(resourceMachine.getId());
- }
- if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) {
- PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S();
- k8SDao.insert(pipResourceK8S);
-
- temp.setK8sId(pipResourceK8S.getId());
- }
- if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) {
- DockerEndpointDo dockerEndpoint = resourceReq.getDockerEndpoint();
- dockerEndpointDao.insert(dockerEndpoint);
-
- temp.setDockerId(dockerEndpoint.getId());
- }
-
- if (!ObjectUtils.isEmpty(resourceReq.getPipResourceCloud())) {
- PipResourceCloud pipResourceCloud = resourceReq.getPipResourceCloud();
- cloudDao.insert(pipResourceCloud);
-
- temp.setCloudId(pipResourceCloud.getId());
- }
- pipResourceManagerDao.updateById(temp);
- }
-
- @Override
- public ResourceFindResp findResourceById(String id) {
- PipResourceManager pipResourceManager = pipResourceManagerDao.selectById(id);
- if (ObjectUtils.isEmpty(pipResourceManager)){
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源不存在");
- }
- ResourceFindResp resp = ResourceConverter.INSTANCE.toResp(pipResourceManager);
-
- setResource(resp);
- setUserName(resp);
+ public ResourceDetailResp findResourceDetailById(String id) {
+ PipResourceManager manager = pipResourceManagerDao.selectById(id);
+ Long machineId = manager.getMachineId();
+ String dockerId = manager.getDockerId();
+ MachineInfoDO machineInfoDO = machineInfoService.validateMachineInfoExists(machineId);
+ DockerEndpointDo dockerEndpointDo = dockerEndpointDao.selectById(dockerId);
+ ResourceDetailResp resp = converter.converter(manager);
+ resp.setMachineInfo(machineInfoDO);
+ resp.setDockerInfo(dockerEndpointDo);
return resp;
}
-
-
@Override
- public List findResourceList(ResourceQueryReq query) {
- QueryWrapper wrapper = new QueryWrapper<>();
- if (!ObjectUtils.isEmpty(query.getId())){
- wrapper.eq("id",query.getId());
- }
- if (!ObjectUtils.isEmpty(query.getIdList())){
- wrapper.in("id",query.getId());
- }
- if (!ObjectUtils.isEmpty(query.getResourceName())){
- wrapper.like("resource_name",query.getResourceName());
- }
- if (!ObjectUtils.isEmpty(query.getMachineId())){
- wrapper.eq("machine_id",query.getMachineId());
- }
- if (!ObjectUtils.isEmpty(query.getK8sId())){
- wrapper.eq("k8s_id",query.getK8sId());
- }
- if (!ObjectUtils.isEmpty(query.getDockerId())){
- wrapper.eq("docker_id",query.getDockerId());
- }
- if (!ObjectUtils.isEmpty(query.getCloudId())){
- wrapper.eq("cloud_id",query.getCloudId());
- }
- if (!ObjectUtils.isEmpty(query.getCreator())){
- wrapper.eq("creator",query.getCreator());
- }
- List pipResourceManagerList = pipResourceManagerDao.selectList(wrapper);
-
- if (ObjectUtils.isEmpty(pipResourceManagerList)){
- return new ArrayList<>(0);
- }
-
- List respList = ResourceConverter.INSTANCE.toRespList(pipResourceManagerList);
-
- //对资源进行赋值
- respList.forEach(this::setResource);
- respList.forEach(this::setUserName);
-
- return respList;
- }
-
- @Override
- public PageResult findResourcePage(ResourceQueryReq query) {
-
- QueryWrapper wrapper = new QueryWrapper<>();
- if (!ObjectUtils.isEmpty(query.getId())){
- wrapper.eq("id",query.getId());
- }
- if (!ObjectUtils.isEmpty(query.getIdList())){
- wrapper.in("id",query.getId());
- }
- if (!ObjectUtils.isEmpty(query.getResourceName())){
- wrapper.like("resource_name",query.getResourceName());
- }
- if (!ObjectUtils.isEmpty(query.getMachineId())){
- wrapper.eq("machine_id",query.getMachineId());
- }
- if (!ObjectUtils.isEmpty(query.getK8sId())){
- wrapper.eq("k8s_id",query.getK8sId());
- }
- if (!ObjectUtils.isEmpty(query.getDockerId())){
- wrapper.eq("docker_id",query.getDockerId());
- }
- if (!ObjectUtils.isEmpty(query.getCloudId())){
- wrapper.eq("cloud_id",query.getCloudId());
- }
- if (!ObjectUtils.isEmpty(query.getCreator())){
- wrapper.eq("creator",query.getCreator());
- }
- Page pipResourceTempPage = pipResourceManagerDao.selectPage(new Page<>(query.getPageNo(), query.getPageSize()), wrapper);
-
- if (ObjectUtils.isEmpty(pipResourceTempPage)){
- return new PageResult<>();
- }
-
- List respList = ResourceConverter.INSTANCE.toRespList(pipResourceTempPage.getRecords());
-
- //对资源进行赋值
- respList.forEach(this::setResource);
- respList.forEach(this::setUserName);
-
- PageResult pageResult = new PageResult<>(respList,pipResourceTempPage.getTotal(),pipResourceTempPage.getCurrent(),pipResourceTempPage.getSize());
- return pageResult;
- }
-
- @Override
- public TaskResourceFindResp findResourceListByType(ResourceQueryReq query) {
- TaskResourceFindResp taskResourceFindResp = new TaskResourceFindResp();
-
- if (StringUtils.isEmpty(query.getType())){
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型不可为空");
- }
-
- switch (query.getType()) {
- case "docker":
- QueryWrapper dockerWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- dockerWrapper.eq("id",query.getId());
- }
- List resourceDockerEndpoints = dockerEndpointDao.selectList(dockerWrapper);
- if (!ObjectUtils.isEmpty(resourceDockerEndpoints)){
- taskResourceFindResp.setDockerEndpointList(resourceDockerEndpoints);
- }
- return taskResourceFindResp;
- case "k8s":
- QueryWrapper k8sWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- k8sWrapper.eq("id",query.getId());
- }
- List resourceK8S = k8SDao.selectList(k8sWrapper);
- if (!ObjectUtils.isEmpty(resourceK8S)){
- taskResourceFindResp.setResourceK8SList(resourceK8S);
- }
- return taskResourceFindResp;
- case "machine":
- QueryWrapper machineWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- machineWrapper.eq("id",query.getId());
- }
- List resourceMachines = machineDao.selectList(machineWrapper);
- if (!ObjectUtils.isEmpty(resourceMachines)){
- taskResourceFindResp.setResourceMachineList(resourceMachines);
- }
- return taskResourceFindResp;
- case "cloud":
- QueryWrapper cloudWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- cloudWrapper.eq("id",query.getId());
- }
- List resourceClouds = cloudDao.selectList(cloudWrapper);
- if (!ObjectUtils.isEmpty(resourceClouds)){
- taskResourceFindResp.setResourceCloudList(resourceClouds);
- }
- return taskResourceFindResp;
- default:
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型错误");
- }
- }
-
-
- @Override
- public List findResourceListForObjectByType(ResourceQueryReq query) {
- if (StringUtils.isEmpty(query.getType())){
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型不可为空");
- }
-
- switch (query.getType()) {
- case "docker":
- QueryWrapper dockerWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- dockerWrapper.eq("id",query.getId());
- }
- return dockerEndpointDao.selectList(dockerWrapper);
- case "k8s":
- QueryWrapper k8sWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- k8sWrapper.eq("id",query.getId());
- }
- return k8SDao.selectList(k8sWrapper);
- case "machine":
- QueryWrapper machineWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- machineWrapper.eq("id",query.getId());
- }
- return machineDao.selectList(machineWrapper);
- case "cloud":
- QueryWrapper cloudWrapper = new QueryWrapper<>();
- if (!StringUtils.isEmpty(query.getId())){
- cloudWrapper.eq("id",query.getId());
- }
- return cloudDao.selectList(cloudWrapper);
- default:
- throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型错误");
- }
- }
-
- private void setResource(ResourceFindResp resourceFindResp) {
- if (!StringUtils.isEmpty(resourceFindResp.getMachineId())){
- PipResourceMachine resourceMachine = machineDao.selectById(resourceFindResp.getMachineId());
- resourceFindResp.setResourceMachine(resourceMachine);
- }
- if (!StringUtils.isEmpty(resourceFindResp.getK8sId())) {
- PipResourceK8S pipResourceK8S = k8SDao.selectById(resourceFindResp.getK8sId());
- resourceFindResp.setPipResourceK8S(pipResourceK8S);
- }
- if (!StringUtils.isEmpty(resourceFindResp.getDockerId())) {
- DockerEndpointDo dockerEndpoint = dockerEndpointDao.selectById(resourceFindResp.getDockerId());
- resourceFindResp.setDockerEndpoint(dockerEndpoint);
- }
- if (!StringUtils.isEmpty(resourceFindResp.getCloudId())) {
- PipResourceCloud resourceCloud = cloudDao.selectById(resourceFindResp.getCloudId());
- resourceFindResp.setPipResourceCloud(resourceCloud);
- }
- }
-
-
- private void setUserName(ResourceFindResp resp) {
- if (!StringUtils.isEmpty(resp.getCreator())){
- AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getCreator()));
- if (!ObjectUtils.isEmpty(user)){
- resp.setCreatorName(user.getUsername());
- }
- }
-
- if (!StringUtils.isEmpty(resp.getUpdater())){
- AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getUpdater()));
- if (!ObjectUtils.isEmpty(user)){
- resp.setUpdaterName(user.getUsername());
- }
+ public void deleteResource(String resourceId) {
+ if (StringUtils.isEmpty(resourceId)) {
+ return;
}
+ pipResourceManagerDao.deleteById(resourceId);
}
}
diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java
index 7b070111..da5f8e8d 100644
--- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java
+++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java
@@ -37,6 +37,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.UUID;
@@ -247,6 +248,9 @@ public class TargetManagerServiceImpl extends ServiceImplcd.casic.boot
spring-boot-starter-test
+
+ cd.casic.boot
+ module-ci-machine
+ ${revision}
+
diff --git a/ops-server/src/main/resources/application-local.yaml b/ops-server/src/main/resources/application-local.yaml
index 2367598c..8367ac09 100644
--- a/ops-server/src/main/resources/application-local.yaml
+++ b/ops-server/src/main/resources/application-local.yaml
@@ -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 # 密码,建议生产环境开启
@@ -168,7 +168,7 @@ sast:
captcha: clouditera
base-url: "http://39.155.212.109:22880" #远程
# base-url: "http://192.168.31.93" #本地
-tartet:
+target:
file-upload:
remoteHost: 175.6.27.252
remotePort: 22
diff --git a/ops-server/src/test/java/cd/casic/server/ResourceTest.java b/ops-server/src/test/java/cd/casic/server/ResourceTest.java
index 0fc13cef..685dcb29 100644
--- a/ops-server/src/test/java/cd/casic/server/ResourceTest.java
+++ b/ops-server/src/test/java/cd/casic/server/ResourceTest.java
@@ -1,15 +1,6 @@
package cd.casic.server;
import cd.casic.ci.process.dto.req.resource.ResourceReq;
-import cd.casic.ci.process.dto.resp.resource.ResourceFindResp;
-import cd.casic.ci.process.process.converter.ResourceConverter;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceCloudDao;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceK8SDao;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceMachineDao;
-import cd.casic.ci.process.process.dao.pipeline.PipResourceManagerDao;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S;
-import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine;
import cd.casic.ci.process.process.dataObject.resource.PipResourceManager;
import cd.casic.ci.process.process.service.resource.impl.ResourceManagerServiceImpl;
import cd.casic.module.execute.docker.dao.DockerEndpointDao;
@@ -31,297 +22,297 @@ import static org.mockito.Mockito.*;
@ActiveProfiles("local")
@Slf4j
public class ResourceTest {
- @Autowired
- private ResourceManagerServiceImpl resourceManagerService;
-
- @MockBean
- private PipResourceManagerDao pipResourceManagerDao;
-
- @MockBean
- private PipResourceMachineDao machineDao;
-
- @MockBean
- private PipResourceK8SDao k8SDao;
-
- @MockBean
- private DockerEndpointDao dockerEndpointDao;
-
- @MockBean
- private PipResourceCloudDao cloudDao;
-
- @MockBean
- private ResourceConverter resourceConverter;
-
- @Test
- void testCreateResourceWithMachine() {
- // Arrange
- ResourceReq resourceReq = new ResourceReq();
- PipResourceMachine resourceMachine = new PipResourceMachine();
- resourceMachine.setId("machineId");
- resourceReq.setResourceMachine(resourceMachine);
-
- when(machineDao.insert(any(PipResourceMachine.class))).thenAnswer(invocation -> {
- PipResourceMachine machine = invocation.getArgument(0);
- machine.setId("machineId"); // 模拟插入后生成ID
- return null;
- });
-
- when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
- PipResourceManager manager = invocation.getArgument(0);
- manager.setId("resourceId"); // 模拟插入后生成ID
- return null;
- });
-
- // Act
- String result = resourceManagerService.createResource(resourceReq);
-
- // Assert
- verify(machineDao, times(1)).insert(any(PipResourceMachine.class));
- verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
-
- // 验证返回的ID
- assert result.equals("resourceId");
- }
-
- @Test
- void testCreateResourceWithK8s() {
- // Arrange
- ResourceReq resourceReq = new ResourceReq();
- PipResourceK8S pipResourceK8S = new PipResourceK8S();
- pipResourceK8S.setId("k8sId");
- resourceReq.setPipResourceK8S(pipResourceK8S);
-
- when(k8SDao.insert(any(PipResourceK8S.class))).thenAnswer(invocation -> {
- PipResourceK8S k8s = invocation.getArgument(0);
- k8s.setId("k8sId"); // 模拟插入后生成ID
- return null;
- });
-
- when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
- PipResourceManager manager = invocation.getArgument(0);
- manager.setId("resourceId"); // 模拟插入后生成ID
- return null;
- });
-
- // Act
- String result = resourceManagerService.createResource(resourceReq);
-
- // Assert
- verify(k8SDao, times(1)).insert(any(PipResourceK8S.class));
- verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
-
- // 验证返回的ID
- assert result.equals("resourceId");
- }
-
- @Test
- void testCreateResourceWithDocker() {
- // Arrange
- ResourceReq resourceReq = new ResourceReq();
- DockerEndpointDo dockerEndpoint = new DockerEndpointDo();
- dockerEndpoint.setId("dockerId");
- resourceReq.setDockerEndpoint(dockerEndpoint);
-
- when(dockerEndpointDao.insert(any(DockerEndpointDo.class))).thenAnswer(invocation -> {
- DockerEndpointDo endpoint = invocation.getArgument(0);
- endpoint.setId("dockerId"); // 模拟插入后生成ID
- return null;
- });
-
- when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
- PipResourceManager manager = invocation.getArgument(0);
- manager.setId("resourceId"); // 模拟插入后生成ID
- return null;
- });
-
- // Act
- String result = resourceManagerService.createResource(resourceReq);
-
- // Assert
- verify(dockerEndpointDao, times(1)).insert(any(DockerEndpointDo.class));
- verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
-
- // 验证返回的ID
- assert result.equals("resourceId");
- }
-
- @Test
- void testCreateResourceWithCloud() {
- // Arrange
- ResourceReq resourceReq = new ResourceReq();
- PipResourceCloud pipResourceCloud = new PipResourceCloud();
- pipResourceCloud.setId("cloudId");
- resourceReq.setPipResourceCloud(pipResourceCloud);
-
- when(cloudDao.insert(any(PipResourceCloud.class))).thenAnswer(invocation -> {
- PipResourceCloud cloud = invocation.getArgument(0);
- cloud.setId("cloudId"); // 模拟插入后生成ID
- return null;
- });
-
- when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
- PipResourceManager manager = invocation.getArgument(0);
- manager.setId("resourceId"); // 模拟插入后生成ID
- return null;
- });
-
- // Act
- String result = resourceManagerService.createResource(resourceReq);
-
- // Assert
- verify(cloudDao, times(1)).insert(any(PipResourceCloud.class));
- verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
-
- // 验证返回的ID
- assert result.equals("resourceId");
- }
-
-
-
- @Test
- void testDeleteResource_WithAllSubResources() {
- // Arrange
- String resourceId = "res123";
- PipResourceManager pipResourceManager = new PipResourceManager();
- pipResourceManager.setId(resourceId);
- pipResourceManager.setMachineId("machine123");
- pipResourceManager.setK8sId("k8s123");
- pipResourceManager.setDockerId("docker123");
- pipResourceManager.setCloudId("cloud123");
-
- Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
-
- // Act
- resourceManagerService.deleteResource(resourceId);
-
- // Assert
- Mockito.verify(machineDao, Mockito.times(1)).deleteById("machine123");
- Mockito.verify(k8SDao, Mockito.times(1)).deleteById("k8s123");
- Mockito.verify(dockerEndpointDao, Mockito.times(1)).deleteById("docker123");
- Mockito.verify(cloudDao, Mockito.times(1)).deleteById("cloud123");
- Mockito.verify(pipResourceManagerDao, Mockito.times(1)).deleteById(resourceId);
- }
-
- @Test
- void testDeleteResource_WithOnlyMachineResource() {
- // Arrange
- String resourceId = "res123";
- PipResourceManager pipResourceManager = new PipResourceManager();
- pipResourceManager.setId(resourceId);
- pipResourceManager.setMachineId("machine123");
-
- Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
-
- // Act
- resourceManagerService.deleteResource(resourceId);
-
- // Assert
- Mockito.verify(machineDao, Mockito.times(1)).deleteById("machine123");
- Mockito.verify(k8SDao, never()).deleteById(anyString());
- Mockito.verify(dockerEndpointDao, never()).deleteById(anyString());
- Mockito.verify(cloudDao, never()).deleteById(anyString());
- Mockito.verify(pipResourceManagerDao, Mockito.times(1)).deleteById(resourceId);
- }
-
- @Test
- void testDeleteResource_ResourceNotFound() {
- // Arrange
- String resourceId = "nonExistent";
-
- Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(null);
-
- // Act & Assert
- try {
- resourceManagerService.deleteResource(resourceId);
- } catch (Exception e) {
- // Expect no exception, just skip deletion
- }
-
- Mockito.verify(machineDao, never()).deleteById(anyString());
- Mockito.verify(k8SDao, never()).deleteById(anyString());
- Mockito.verify(dockerEndpointDao, never()).deleteById(anyString());
- Mockito.verify(cloudDao, never()).deleteById(anyString());
- Mockito.verify(pipResourceManagerDao, never()).deleteById(anyString());
- }
-
-
- @Test
- void testDeleteResourceWithAllSubResources() {
- // Arrange
- String resourceId = "resourceId";
- PipResourceManager pipResourceManager = new PipResourceManager();
- pipResourceManager.setId(resourceId);
- pipResourceManager.setMachineId("machineId");
- pipResourceManager.setK8sId("k8sId");
- pipResourceManager.setDockerId("dockerId");
- pipResourceManager.setCloudId("cloudId");
-
- when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
-
- // Act
- resourceManagerService.deleteResource(resourceId);
-
- // Assert
- verify(pipResourceManagerDao, times(1)).selectById(resourceId);
- verify(machineDao, times(1)).deleteById("machineId");
- verify(k8SDao, times(1)).deleteById("k8sId");
- verify(dockerEndpointDao, times(1)).deleteById("dockerId");
- verify(cloudDao, times(1)).deleteById("cloudId");
- verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
- }
-
- @Test
- void testDeleteResourceWithOnlyMachine() {
- // Arrange
- String resourceId = "resourceId";
- PipResourceManager pipResourceManager = new PipResourceManager();
- pipResourceManager.setId(resourceId);
- pipResourceManager.setMachineId("machineId");
-
- when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
-
- // Act
- resourceManagerService.deleteResource(resourceId);
-
- // Assert
- verify(pipResourceManagerDao, times(1)).selectById(resourceId);
- verify(machineDao, times(1)).deleteById("machineId");
- verify(k8SDao, never()).deleteById(anyString());
- verify(dockerEndpointDao, never()).deleteById(anyString());
- verify(cloudDao, never()).deleteById(anyString());
- verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
- }
-
- @Test
- void testDeleteResourceWithNoSubResources() {
- // Arrange
- String resourceId = "resourceId";
- PipResourceManager pipResourceManager = new PipResourceManager();
- pipResourceManager.setId(resourceId);
-
- when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
-
- // Act
- resourceManagerService.deleteResource(resourceId);
-
- // Assert
- verify(pipResourceManagerDao, times(1)).selectById(resourceId);
- verify(machineDao, never()).deleteById(anyString());
- verify(k8SDao, never()).deleteById(anyString());
- verify(dockerEndpointDao, never()).deleteById(anyString());
- verify(cloudDao, never()).deleteById(anyString());
- verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
- }
-
-
-
- @Test
- void testFindResourceById_ResourceExists() {
-
- ResourceFindResp resourceById = resourceManagerService.findResourceById("1");
-
- assertNull(resourceById);
- }
+// @Autowired
+// private ResourceManagerServiceImpl resourceManagerService;
+//
+// @MockBean
+// private PipResourceManagerDao pipResourceManagerDao;
+//
+// @MockBean
+// private PipResourceMachineDao machineDao;
+//
+// @MockBean
+// private PipResourceK8SDao k8SDao;
+//
+// @MockBean
+// private DockerEndpointDao dockerEndpointDao;
+//
+// @MockBean
+// private PipResourceCloudDao cloudDao;
+//
+// @MockBean
+// private ResourceConverter resourceConverter;
+//
+// @Test
+// void testCreateResourceWithMachine() {
+// // Arrange
+// ResourceReq resourceReq = new ResourceReq();
+// PipResourceMachine resourceMachine = new PipResourceMachine();
+// resourceMachine.setId("machineId");
+// resourceReq.setResourceMachine(resourceMachine);
+//
+// when(machineDao.insert(any(PipResourceMachine.class))).thenAnswer(invocation -> {
+// PipResourceMachine machine = invocation.getArgument(0);
+// machine.setId("machineId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
+// PipResourceManager manager = invocation.getArgument(0);
+// manager.setId("resourceId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// // Act
+// String result = resourceManagerService.createResource(resourceReq);
+//
+// // Assert
+// verify(machineDao, times(1)).insert(any(PipResourceMachine.class));
+// verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
+//
+// // 验证返回的ID
+// assert result.equals("resourceId");
+// }
+//
+// @Test
+// void testCreateResourceWithK8s() {
+// // Arrange
+// ResourceReq resourceReq = new ResourceReq();
+// PipResourceK8S pipResourceK8S = new PipResourceK8S();
+// pipResourceK8S.setId("k8sId");
+// resourceReq.setPipResourceK8S(pipResourceK8S);
+//
+// when(k8SDao.insert(any(PipResourceK8S.class))).thenAnswer(invocation -> {
+// PipResourceK8S k8s = invocation.getArgument(0);
+// k8s.setId("k8sId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
+// PipResourceManager manager = invocation.getArgument(0);
+// manager.setId("resourceId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// // Act
+// String result = resourceManagerService.createResource(resourceReq);
+//
+// // Assert
+// verify(k8SDao, times(1)).insert(any(PipResourceK8S.class));
+// verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
+//
+// // 验证返回的ID
+// assert result.equals("resourceId");
+// }
+//
+// @Test
+// void testCreateResourceWithDocker() {
+// // Arrange
+// ResourceReq resourceReq = new ResourceReq();
+// DockerEndpointDo dockerEndpoint = new DockerEndpointDo();
+// dockerEndpoint.setId("dockerId");
+// resourceReq.setDockerEndpoint(dockerEndpoint);
+//
+// when(dockerEndpointDao.insert(any(DockerEndpointDo.class))).thenAnswer(invocation -> {
+// DockerEndpointDo endpoint = invocation.getArgument(0);
+// endpoint.setId("dockerId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
+// PipResourceManager manager = invocation.getArgument(0);
+// manager.setId("resourceId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// // Act
+// String result = resourceManagerService.createResource(resourceReq);
+//
+// // Assert
+// verify(dockerEndpointDao, times(1)).insert(any(DockerEndpointDo.class));
+// verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
+//
+// // 验证返回的ID
+// assert result.equals("resourceId");
+// }
+//
+// @Test
+// void testCreateResourceWithCloud() {
+// // Arrange
+// ResourceReq resourceReq = new ResourceReq();
+// PipResourceCloud pipResourceCloud = new PipResourceCloud();
+// pipResourceCloud.setId("cloudId");
+// resourceReq.setPipResourceCloud(pipResourceCloud);
+//
+// when(cloudDao.insert(any(PipResourceCloud.class))).thenAnswer(invocation -> {
+// PipResourceCloud cloud = invocation.getArgument(0);
+// cloud.setId("cloudId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// when(pipResourceManagerDao.insert(any(PipResourceManager.class))).thenAnswer(invocation -> {
+// PipResourceManager manager = invocation.getArgument(0);
+// manager.setId("resourceId"); // 模拟插入后生成ID
+// return null;
+// });
+//
+// // Act
+// String result = resourceManagerService.createResource(resourceReq);
+//
+// // Assert
+// verify(cloudDao, times(1)).insert(any(PipResourceCloud.class));
+// verify(pipResourceManagerDao, times(1)).insert(any(PipResourceManager.class));
+//
+// // 验证返回的ID
+// assert result.equals("resourceId");
+// }
+//
+//
+//
+// @Test
+// void testDeleteResource_WithAllSubResources() {
+// // Arrange
+// String resourceId = "res123";
+// PipResourceManager pipResourceManager = new PipResourceManager();
+// pipResourceManager.setId(resourceId);
+// pipResourceManager.setMachineId("machine123");
+// pipResourceManager.setK8sId("k8s123");
+// pipResourceManager.setDockerId("docker123");
+// pipResourceManager.setCloudId("cloud123");
+//
+// Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
+//
+// // Act
+// resourceManagerService.deleteResource(resourceId);
+//
+// // Assert
+// Mockito.verify(machineDao, Mockito.times(1)).deleteById("machine123");
+// Mockito.verify(k8SDao, Mockito.times(1)).deleteById("k8s123");
+// Mockito.verify(dockerEndpointDao, Mockito.times(1)).deleteById("docker123");
+// Mockito.verify(cloudDao, Mockito.times(1)).deleteById("cloud123");
+// Mockito.verify(pipResourceManagerDao, Mockito.times(1)).deleteById(resourceId);
+// }
+//
+// @Test
+// void testDeleteResource_WithOnlyMachineResource() {
+// // Arrange
+// String resourceId = "res123";
+// PipResourceManager pipResourceManager = new PipResourceManager();
+// pipResourceManager.setId(resourceId);
+// pipResourceManager.setMachineId("machine123");
+//
+// Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
+//
+// // Act
+// resourceManagerService.deleteResource(resourceId);
+//
+// // Assert
+// Mockito.verify(machineDao, Mockito.times(1)).deleteById("machine123");
+// Mockito.verify(k8SDao, never()).deleteById(anyString());
+// Mockito.verify(dockerEndpointDao, never()).deleteById(anyString());
+// Mockito.verify(cloudDao, never()).deleteById(anyString());
+// Mockito.verify(pipResourceManagerDao, Mockito.times(1)).deleteById(resourceId);
+// }
+//
+// @Test
+// void testDeleteResource_ResourceNotFound() {
+// // Arrange
+// String resourceId = "nonExistent";
+//
+// Mockito.when(pipResourceManagerDao.selectById(resourceId)).thenReturn(null);
+//
+// // Act & Assert
+// try {
+// resourceManagerService.deleteResource(resourceId);
+// } catch (Exception e) {
+// // Expect no exception, just skip deletion
+// }
+//
+// Mockito.verify(machineDao, never()).deleteById(anyString());
+// Mockito.verify(k8SDao, never()).deleteById(anyString());
+// Mockito.verify(dockerEndpointDao, never()).deleteById(anyString());
+// Mockito.verify(cloudDao, never()).deleteById(anyString());
+// Mockito.verify(pipResourceManagerDao, never()).deleteById(anyString());
+// }
+//
+//
+// @Test
+// void testDeleteResourceWithAllSubResources() {
+// // Arrange
+// String resourceId = "resourceId";
+// PipResourceManager pipResourceManager = new PipResourceManager();
+// pipResourceManager.setId(resourceId);
+// pipResourceManager.setMachineId("machineId");
+// pipResourceManager.setK8sId("k8sId");
+// pipResourceManager.setDockerId("dockerId");
+// pipResourceManager.setCloudId("cloudId");
+//
+// when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
+//
+// // Act
+// resourceManagerService.deleteResource(resourceId);
+//
+// // Assert
+// verify(pipResourceManagerDao, times(1)).selectById(resourceId);
+// verify(machineDao, times(1)).deleteById("machineId");
+// verify(k8SDao, times(1)).deleteById("k8sId");
+// verify(dockerEndpointDao, times(1)).deleteById("dockerId");
+// verify(cloudDao, times(1)).deleteById("cloudId");
+// verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
+// }
+//
+// @Test
+// void testDeleteResourceWithOnlyMachine() {
+// // Arrange
+// String resourceId = "resourceId";
+// PipResourceManager pipResourceManager = new PipResourceManager();
+// pipResourceManager.setId(resourceId);
+// pipResourceManager.setMachineId("machineId");
+//
+// when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
+//
+// // Act
+// resourceManagerService.deleteResource(resourceId);
+//
+// // Assert
+// verify(pipResourceManagerDao, times(1)).selectById(resourceId);
+// verify(machineDao, times(1)).deleteById("machineId");
+// verify(k8SDao, never()).deleteById(anyString());
+// verify(dockerEndpointDao, never()).deleteById(anyString());
+// verify(cloudDao, never()).deleteById(anyString());
+// verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
+// }
+//
+// @Test
+// void testDeleteResourceWithNoSubResources() {
+// // Arrange
+// String resourceId = "resourceId";
+// PipResourceManager pipResourceManager = new PipResourceManager();
+// pipResourceManager.setId(resourceId);
+//
+// when(pipResourceManagerDao.selectById(resourceId)).thenReturn(pipResourceManager);
+//
+// // Act
+// resourceManagerService.deleteResource(resourceId);
+//
+// // Assert
+// verify(pipResourceManagerDao, times(1)).selectById(resourceId);
+// verify(machineDao, never()).deleteById(anyString());
+// verify(k8SDao, never()).deleteById(anyString());
+// verify(dockerEndpointDao, never()).deleteById(anyString());
+// verify(cloudDao, never()).deleteById(anyString());
+// verify(pipResourceManagerDao, times(1)).deleteById(resourceId);
+// }
+//
+//
+//
+// @Test
+// void testFindResourceById_ResourceExists() {
+//
+// ResourceFindResp resourceById = resourceManagerService.findResourceById("1");
+//
+// assertNull(resourceById);
+// }
}
diff --git a/ops-server/src/test/java/cd/casic/server/SftpTest.java b/ops-server/src/test/java/cd/casic/server/SftpTest.java
index 26c10c68..7ef747c0 100644
--- a/ops-server/src/test/java/cd/casic/server/SftpTest.java
+++ b/ops-server/src/test/java/cd/casic/server/SftpTest.java
@@ -1,7 +1,5 @@
package cd.casic.server;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
-import cd.casic.ci.process.process.service.machine.MachineInfoService;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;
import com.jcraft.jsch.*;
@@ -18,17 +16,8 @@ import java.util.Vector;
@SpringBootTest(classes = {OpsServerApplication.class})
@ActiveProfiles("local")
public class SftpTest {
- @Resource
- MachineInfoService machineInfoService;
- @Test
- public void test01() throws SftpUploadUtil.SftpUploadException {
- MachineInfo byId = machineInfoService.getById("1");
- File file = new File("src/test/java/cd/casic/server/text.txt");
- System.out.println(file.getAbsolutePath());
- System.out.println(file.exists());
- System.out.println(file.getName());
- SftpUploadUtil.uploadFileViaSftp(byId.getMachineHost(),byId.getSshPort(),byId.getUsername(), CryptogramUtil.doDecrypt(byId.getPassword()),null,file.getAbsolutePath(),"/home/casic/706/ai_test_527","到此一游.txt");
- }
+
+
@Test
public void test02(){
System.out.println("Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-150-generic x86_64)\r\n\r\n * Documentation: https://help.ubuntu.com\r\n * Management: https://landscape.canonical.com\r\n * Support: https://ubuntu.com/pro\r\n\r\n扩展安全维护(ESM)Infrastructure 未启用。\r\n\r\n0 更新可以立即应用。\r\n\r\n240 个额外的安全更新可以通过 ESM Infra 来获取安装。\r\n可通过以下途径了解如何启用 ESM Infra:for Ubuntu 18.04 at\r\nhttps://ubuntu.com/18-04\r\n\r\n*** System restart required ***\r\nLast login: Thu May 29 18:59:48 2025 from 223.104.132.96\r\r\necho \"自定义镜像执行命令\"\r\n\r\nhnidc@hnidc-PowerEdge-R740:~$ echo \"自定义镜像执行命令\"\r\n自定义镜像执行命令\r\nhnidc@hnidc-PowerEdge-R740:~$ \r\nhnidc@hnidc-PowerEdge-R740:~$ cd /home/casic/706\r\nhnidc@hnidc-PowerEdge-R740:/home/casic/706$ \r\nhnidc@hnidc-PowerEdge-R740:/home/casic/706$ docker run -v $PWD/yunqi/:/test -it \r aflplusplus/aflplusplus bash\r\n\r\ncd /test\r\n\r\n\u001b[?2004h[AFL++ c7cedbd6d37d] /AFLplusplus # \r\n\u001b[?2004l\r\u001b[?2004h[AFL++ c7cedbd6d37d] /AFLplusplus # cd /test\r\n\u001b[?2004l\r\u001b[?2004h[AFL++ c7cedbd6d37d] /test # \r\n\u001b[?2004l\r\u001b[?2004h[AFL++ c7cedbd6d37d] /test # \r\u001b[K[AFL++ c7cedbd6d37d] /test # afl-fuzz -i case -o ai_afl -t 3000 -Q ./CaseGenerato\ror/testdata/libpng/libpng/pngfix @@\r\n\u001b[?2004l\r\u001b[1;92m[+] \u001b[0mEnabled environment variable AFL_SKIP_CPUFREQ with value 1\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mEnabled environment variable AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES with value 1\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mEnabled environment variable AFL_TRY_AFFINITY with value 1\u001b[0m\r\n\u001b[0;36mafl-fuzz++4.09a\u001b[0m based on afl by Michal Zalewski and a large online community\r\n\u001b[1;92m[+] \u001b[0mAFL++ is maintained by Marc \"van Hauser\" Heuse, Dominik Maier, Andrea Fioraldi and Heiko \"hexcoder\" Eißfeldt\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mAFL++ is open source, get it at https://github.com/AFLplusplus/AFLplusplus\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mNOTE: AFL++ >= v3 has changed defaults and behaviours - see README.md\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mNo -M/-S set, autoconfiguring for \"-S default\"\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mGetting to work...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mUsing exponential power schedule (FAST)\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mEnabled testcache with 50 MB\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mGenerating fuzz data with a length of min=1 max=1048576\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mChecking core_pattern...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mYou have 80 CPU cores and 4 runnable tasks (utilization: 5%).\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mTry parallel jobs - see /usr/local/share/doc/afl/fuzzing_in_depth.md#c-using-multiple-cores\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mSetting up output directories...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mOutput directory exists but deemed OK to reuse.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mDeleting old session data...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mOutput dir cleanup successful.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mChecking CPU core loadout...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mFound a free CPU core, try binding to #0.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mScanning 'case'...\u001b[0m\r\n\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mTest case 'case/case_31_valid_png' is too big (2.12 MB, limit is 1.00 MB), partial reading\u001b[0m\r\n\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mTest case 'case/case_62_valid_png' is too big (1.20 MB, limit is 1.00 MB), partial reading\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mLoaded a total of 100 seeds.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mCreating hard links for all input files...\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mValidating target binary...\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mNo auto-generated dictionary tokens to reuse.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000000,time:0,execs:0,orig:case_100_crc_error_png'...\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mSpinning up the fork server...\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mAll right - fork server is up.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mTarget map size: 65536\u001b[0m\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 23182 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000001,time:0,execs:0,orig:case_10_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 1759 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000002,time:0,execs:0,orig:case_11_valid_png'...\u001b[0m\r\n\r\nexit\r\n\r\n\r\n\u001b[1;90m len = 223268, map size = 987, exec speed = 151063 us, hash = 3c4265c898f340c7\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000003,time:0,execs:0,orig:case_12_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1613 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000004,time:0,execs:0,orig:case_13_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 786 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000005,time:0,execs:0,orig:case_14_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10354 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000006,time:0,execs:0,orig:case_15_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 785 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000007,time:0,execs:0,orig:case_16_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10243 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000008,time:0,execs:0,orig:case_17_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10335 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000009,time:0,execs:0,orig:case_18_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1319 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000010,time:0,execs:0,orig:case_19_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10356 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000011,time:0,execs:0,orig:case_1_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 38047, map size = 889, exec speed = 26912 us, hash = 3d4a8f21f437bf86\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000012,time:0,execs:0,orig:case_20_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1327 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000013,time:0,execs:0,orig:case_21_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 802 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000014,time:0,execs:0,orig:case_22_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 139863, map size = 534, exec speed = 679 us, hash = cb63e0ac702eb436\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000015,time:0,execs:0,orig:case_23_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1349 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000016,time:0,execs:0,orig:case_24_invalid_size_png'...\u001b[0m\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1351 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000017,time:0,execs:0,orig:case_25_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10341 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000018,time:0,execs:0,orig:case_26_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1341 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000019,time:0,execs:0,orig:case_27_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 791 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000020,time:0,execs:0,orig:case_28_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10307 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000021,time:0,execs:0,orig:case_29_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10267 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000022,time:0,execs:0,orig:case_2_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 374356, map size = 531, exec speed = 782 us, hash = 18c980e731eba575\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000023,time:0,execs:0,orig:case_30_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 798 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000024,time:0,execs:0,orig:case_31_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 1048576, map size = 776, exec speed = 121010 us, hash = 3a42e2b54338ea28\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000025,time:0,execs:0,orig:case_32_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 810 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000026,time:0,execs:0,orig:case_33_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1339 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000027,time:0,execs:0,orig:case_34_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10312 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000028,time:0,execs:0,orig:case_35_invalid_size_png'...\u001b[0m\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1335 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000029,time:0,execs:0,orig:case_36_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 804 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000030,time:0,execs:0,orig:case_37_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10328 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000031,time:0,execs:0,orig:case_38_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 794 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000032,time:0,execs:0,orig:case_39_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1338 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000033,time:0,execs:0,orig:case_3_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 798 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000034,time:0,execs:0,orig:case_40_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 7055, map size = 795, exec speed = 1075 us, hash = 5ff7786d2d6f0eaf\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000035,time:0,execs:0,orig:case_41_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 804 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000036,time:0,execs:0,orig:case_42_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 17522, map size = 531, exec speed = 584 us, hash = 18c980e731eba575\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000037,time:0,execs:0,orig:case_43_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 793 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000038,time:0,execs:0,orig:case_44_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1356 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000039,time:0,execs:0,orig:case_45_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 800 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000040,time:0,execs:0,orig:case_46_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1364 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000041,time:0,execs:0,orig:case_47_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10379 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000042,time:0,execs:0,orig:case_48_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10361 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000043,time:0,execs:0,orig:case_49_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10398 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000044,time:0,execs:0,orig:case_4_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 802 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000045,time:0,execs:0,orig:case_50_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 799 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000046,time:0,execs:0,orig:case_51_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1322 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000047,time:0,execs:0,orig:case_52_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1335 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000048,time:0,execs:0,orig:case_53_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 800 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000049,time:0,execs:0,orig:case_54_invalid_size_png'...\u001b[0m\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1334 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000050,time:0,execs:0,orig:case_55_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10382 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000051,time:0,execs:0,orig:case_56_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 804 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000052,time:0,execs:0,orig:case_57_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 793 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000053,time:0,execs:0,orig:case_58_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1342 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000054,time:0,execs:0,orig:case_59_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 382707, map size = 531, exec speed = 775 us, hash = 18c980e731eba575\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000055,time:0,execs:0,orig:case_5_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 18523, map size = 890, exec speed = 13155 us, hash = 1d648eac62241924\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000056,time:0,execs:0,orig:case_60_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 13868, map size = 531, exec speed = 598 us, hash = 78e91e36b17b8856\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000057,time:0,execs:0,orig:case_61_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 798 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000058,time:0,execs:0,orig:case_62_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 1048576, map size = 775, exec speed = 121467 us, hash = 1a2825879c459294\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000059,time:0,execs:0,orig:case_63_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 70168, map size = 907, exec speed = 46574 us, hash = b0863e927e65d0b7\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000060,time:0,execs:0,orig:case_64_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 442042, map size = 531, exec speed = 789 us, hash = 18c980e731eba575\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000061,time:0,execs:0,orig:case_65_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 823 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000062,time:0,execs:0,orig:case_66_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 193, map size = 1093, exec speed = 862 us, hash = 17a1ea291e671a6f\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000063,time:0,execs:0,orig:case_67_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10339 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000064,time:0,execs:0,orig:case_68_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10282 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000065,time:0,execs:0,orig:case_69_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 807 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000066,time:0,execs:0,orig:case_6_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 792 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000067,time:0,execs:0,orig:case_70_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1347 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000068,time:0,execs:0,orig:case_71_invalid_size_png'...\u001b[0m\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1347 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000069,time:0,execs:0,orig:case_72_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 2056, map size = 1093, exec speed = 2226 us, hash = 14b424733e03838a\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000070,time:0,execs:0,orig:case_73_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 240177, map size = 909, exec speed = 159500 us, hash = dad5d2994c5a49d0\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000071,time:0,execs:0,orig:case_74_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10246 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000072,time:0,execs:0,orig:case_75_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10236 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000073,time:0,execs:0,orig:case_76_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 798 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000074,time:0,execs:0,orig:case_77_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 355377, map size = 786, exec speed = 1307 us, hash = 415b9968c1ffd3d4\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000075,time:0,execs:0,orig:case_78_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 236538, map size = 911, exec speed = 157292 us, hash = fea8db6efa986c2c\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000076,time:0,execs:0,orig:case_79_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1337 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000077,time:0,execs:0,orig:case_7_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 803 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000078,time:0,execs:0,orig:case_80_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1336 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000079,time:0,execs:0,orig:case_81_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 796 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000080,time:0,execs:0,orig:case_82_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10344 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000081,time:0,execs:0,orig:case_83_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1343 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000082,time:0,execs:0,orig:case_84_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10284 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000083,time:0,execs:0,orig:case_85_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1337 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000084,time:0,execs:0,orig:case_86_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 92733, map size = 531, exec speed = 631 us, hash = d119490928bfffee\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000085,time:0,execs:0,orig:case_87_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10275 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000086,time:0,execs:0,orig:case_88_zlib_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 797 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000087,time:0,execs:0,orig:case_89_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1337 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000088,time:0,execs:0,orig:case_8_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1351 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000089,time:0,execs:0,orig:case_90_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1341 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000090,time:0,execs:0,orig:case_91_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 24449, map size = 531, exec speed = 592 us, hash = 78e91e36b17b8856\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000091,time:0,execs:0,orig:case_92_valid_png'...\u001b[0m\r\n\u001b[1;90m len = 357617, map size = 784, exec speed = 1217 us, hash = fc3e41b717ba7be5\r\n\u001b[0m\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000092,time:0,execs:0,orig:case_93_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1353 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000093,time:0,execs:0,orig:case_94_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 836 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000094,time:0,execs:0,orig:case_95_valid_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 366441, map size = 531, exec speed = 777 us, hash = d119490928bfffee\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000095,time:0,execs:0,orig:case_96_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1369 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000096,time:0,execs:0,orig:case_97_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1333 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000097,time:0,execs:0,orig:case_98_zlib_error_png'...\u001b[0m\r\n\u001b[1;90m len = 3172, map size = 856, exec speed = 796 us, hash = 51b1f8a5f4e7d2c5\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000098,time:0,execs:0,orig:case_99_crc_error_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 12420, map size = 1106, exec speed = 10241 us, hash = f503321530a3e9aa\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;94m[*] \u001b[0mAttempting dry run with 'id:000099,time:0,execs:0,orig:case_9_invalid_size_png'...\u001b[0m\r\n\r\n\u001b[1;90m len = 852, map size = 1151, exec speed = 1341 us, hash = 948e7f699c6c9b4c\r\n\u001b[0m\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mNo new instrumentation output, test case may be useless.\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mAll test cases processed.\u001b[0m\r\n\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0m\u001b[1;91mSome test cases are huge (1.00 MB) - see /usr/local/share/doc/afl/fuzzing_in_depth.md#i-improve-the-speed\u001b[0m\r\n\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0m\u001b[1;91mSome test cases look useless. Consider using a smaller set.\u001b[0m\r\n\u001b[1;93m[!] \u001b[1;97mWARNING: \u001b[0mYou have lots of input files; try starting small.\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mHere are some useful stats:\r\n\r\n\u001b[1;90m Test case count : \u001b[0m13 favored, 0 variable, 80 ignored, 100 total\r\n\u001b[1;90m Bitmap range : \u001b[0m531 to 1151 bits (average: 969.05 bits)\r\n\u001b[1;90m Exec timing : \u001b[0m584 to 159k us (average: 11.1k us)\r\n\u001b[0m\r\n\u001b[1;94m[*] \u001b[0m-t option specified. We'll use an exec timeout of 3000 ms.\u001b[0m\r\n\u001b[1;92m[+] \u001b[0mAll set and ready to roll!\u001b[0m\r\n\r\n\u001b[H\u001b[2J\u001b[?25l\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0mnone seen yet \u001b[1;90m│ corpus count : \u001b[0m100 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m62.0 (62.0%) \u001b[1;90m│ map density : \u001b[0m1.67% / 2.23% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.51 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mtrim 16/16 \u001b[1;90m│ favored items : \u001b[0m13 (13.00%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m0/12 (0.00%) \u001b[1;90m│ new edges on : \u001b[0m15 (15.00%) \u001b[1;90m│\r\n│ total execs : \u001b[0m701 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m701k/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m1 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m20 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m10 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m0 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m0/0, 0/0 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0mn/a, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 3%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 2 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m137 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m36.0 (26.3%) \u001b[1;90m│ map density : \u001b[0m0.81% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.57 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mhavoc \u001b[1;90m│ favored items : \u001b[0m13 (9.49%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m3583/3584 (99.97%) \u001b[1;90m│ new edges on : \u001b[0m39 (28.47%) \u001b[1;90m│\r\n│ total execs : \u001b[0m4660 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1758/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m2 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m56 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m9 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m37 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m0/0, 0/0 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/117, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 5%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 2 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m137 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m36.0 (26.3%) \u001b[1;90m│ map density : \u001b[0m0.81% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.57 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0msplice 11 \u001b[1;90m│ favored items : \u001b[0m13 (9.49%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m13/14 (92.86%) \u001b[1;90m│ new edges on : \u001b[0m39 (28.47%) \u001b[1;90m│\r\n│ total execs : \u001b[0m4814 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1696/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m2 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m56 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m9 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m37 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m37/3584, 0/140 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/117, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 3%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 2 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m139 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m107.0 (77.0%) \u001b[1;90m│ map density : \u001b[0m0.79% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.58 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mhavoc \u001b[1;90m│ favored items : \u001b[0m35 (25.18%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m99/224 (44.20%) \u001b[1;90m│ new edges on : \u001b[0m39 (28.06%) \u001b[1;90m│\r\n│ total execs : \u001b[0m5148 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1685/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m55 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m28 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m39 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m38/3734, 0/210 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.31%/131, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 2%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 2 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m139 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m107.0 (77.0%) \u001b[1;90m│ map density : \u001b[0m0.79% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.58 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0msplice 12 \u001b[1;90m│ favored items : \u001b[0m35 (25.18%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m13/14 (92.86%) \u001b[1;90m│ new edges on : \u001b[0m39 (28.06%) \u001b[1;90m│\r\n│ total execs : \u001b[0m5440 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1668/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m55 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m28 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m39 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/3958, 0/364 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.31%/131, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 3%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 3 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m140 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.3%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mtrim 16/16 \u001b[1;90m│ favored items : \u001b[0m34 (24.29%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m9/118 (7.63%) \u001b[1;90m│ new edges on : \u001b[0m39 (27.86%) \u001b[1;90m│\r\n│ total execs : \u001b[0m5763 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1655/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m53 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m40 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/4070, 1/434 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/279, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 2%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 3 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m140 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.3%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mtrim 8/8 \u001b[1;90m│ favored items : \u001b[0m34 (24.29%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m156/236 (66.10%) \u001b[1;90m│ new edges on : \u001b[0m39 (27.86%) \u001b[1;90m│\r\n│ total execs : \u001b[0m6027 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1630/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m53 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m40 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/4070, 1/434 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/543, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 3%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 3 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m140 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.3%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mtrim 4/4 \u001b[1;90m│ favored items : \u001b[0m34 (24.29%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m197/470 (41.91%) \u001b[1;90m│ new edges on : \u001b[0m39 (27.86%) \u001b[1;90m│\r\n│ total execs : \u001b[0m6303 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1605/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m53 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m40 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/4070, 1/434 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/819, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 5%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 3 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m140 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.3%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.31% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mtrim 4/4 \u001b[1;90m│ favored items : \u001b[0m34 (24.29%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m453/470 (96.38%) \u001b[1;90m│ new edges on : \u001b[0m39 (27.86%) \u001b[1;90m│\r\n│ total execs : \u001b[0m6559 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1582/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m53 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m40 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/4070, 1/434 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m98.66%/1075, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 1%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 3 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m141 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.1%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.32% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0mhavoc \u001b[1;90m│ favored items : \u001b[0m34 (24.11%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m217/300 (72.33%) \u001b[1;90m│ new edges on : \u001b[0m40 (28.37%) \u001b[1;90m│\r\n│ total execs : \u001b[0m6799 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m1554/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m54 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m41 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m39/4070, 1/434 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m91.14%/1090, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 5%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n\u001b[H\r\n \u001b[1;93mAFL \u001b[1;96m++4.09a\u001b[1;94m {default} \u001b[1;92m(...aseGenerator/testdata/libpng/libpng/pngfix) \u001b[1;95m[fast]\r\n\u001b[1;90m┌─\u001b[0;36m process timing \u001b[1;90m────────────────────────────────────┬─\u001b[0;36m overall results \u001b[1;90m────┐\r\n│ run time : \u001b[0m0 days, 0 hrs, 0 min, 4 sec \u001b[1;90m│ cycles done : \u001b[0;35m0 \u001b[1;90m│\r\n│ last new find : \u001b[0m0 days, 0 hrs, 0 min, 0 sec \u001b[1;90m│ corpus count : \u001b[0m141 \u001b[1;90m│\r\n│last saved crash : \u001b[0mnone seen yet \u001b[1;90m│saved crashes : \u001b[0m0 \u001b[1;90m│\r\n│ last saved hang : \u001b[0mnone seen yet \u001b[1;90m│ saved hangs : \u001b[0m0 \u001b[1;90m│\r\n├─\u001b[0;36m cycle progress \u001b[1;90m─────────────────────┬─\u001b[0;36m map coverage\u001b[1;90m┴──────────────────────┤\r\n│ now processing : \u001b[0m34.0 (24.1%) \u001b[1;90m│ map density : \u001b[0m1.21% / 2.32% \u001b[1;90m│\r\n│ runs timed out : \u001b[0m0 (0.00%) \u001b[1;90m│ count coverage : \u001b[0m1.59 bits/tuple \u001b[1;90m│\r\n├─\u001b[0;36m stage progress \u001b[1;90m─────────────────────┼─\u001b[0;36m findings in depth \u001b[1;90m─────────────────┤\r\n│ now trying : \u001b[0msplice 2 \u001b[1;90m│ favored items : \u001b[0m34 (24.11%) \u001b[1;90m│\r\n│ stage execs : \u001b[0m17/18 (94.44%) \u001b[1;90m│ new edges on : \u001b[0m40 (28.37%) \u001b[1;90m│\r\n│ total execs : \u001b[0m6917 \u001b[1;90m│ total crashes : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n│ exec speed : \u001b[0m199.3/sec \u001b[1;90m│ total tmouts : \u001b[0m0 (0 saved) \u001b[1;90m│\r\n├─\u001b[0;36m fuzzing strategy yields \u001b[1;90m────────────┴─────────────┬─\u001b[0;36m item geometry \u001b[1;90m───────┤\r\n│ bit flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ levels : \u001b[0m3 \u001b[1;90m│\r\n│ byte flips : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pending : \u001b[0m54 \u001b[1;90m│\r\n│ arithmetics : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ pend fav : \u001b[0m25 \u001b[1;90m│\r\n│ known ints : \u001b[0mdisabled (default, enable with -D) \u001b[1;90m│ own finds : \u001b[0m41 \u001b[1;90m│\r\n│ dictionary : \u001b[0mn/a \u001b[1;90m│ imported : \u001b[0m0 \u001b[1;90m│\r\n│havoc/splice : \u001b[0m40/4370, 1/452 \u001b[1;90m│ stability : \u001b[0m100.00% \u001b[1;90m│\r\n│py/custom/rq : \u001b[0munused, unused, unused, unused \u001b[1;90m├───────────────────────┘\r\n│ trim/eff : \u001b[0m91.14%/1090, disabled \u001b[1;90m│ \u001b[1;90m[cpu000:\u001b[1;92m 3%\u001b[1;90m]\r\u001b[0m\r\n\u001b[1;90m└─\u001b[0;36m strategy:\u001b[1;95m explore \u001b[1;90m──────────\u001b[0;36m state:\u001b[1;95m started :-) \u001b[1;90m──┘\u001b[0m\r\n");
diff --git a/ops-server/src/test/java/cd/casic/server/ZipFileTest.java b/ops-server/src/test/java/cd/casic/server/ZipFileTest.java
index 9c43c154..c79110e6 100644
--- a/ops-server/src/test/java/cd/casic/server/ZipFileTest.java
+++ b/ops-server/src/test/java/cd/casic/server/ZipFileTest.java
@@ -1,6 +1,5 @@
package cd.casic.server;
-import cd.casic.ci.process.process.dataObject.machine.MachineInfo;
import cd.casic.ci.process.properties.TargetFileUploadProperties;
import cd.casic.ci.process.util.CryptogramUtil;
import cd.casic.ci.process.util.SftpUploadUtil;