From 17dc808d21a7eae4a10e82304c6558b343d09713 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Mon, 2 Jun 2025 20:53:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=A1=A5=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/manager/impl/MemoryLogManager.java | 6 +- .../service/stage/impl/StageServiceImpl.java | 4 + .../test/java/cd/casic/server/LogTest.java | 16 +++- .../cd/casic/server/PipelineExecuteTest.java | 27 ++++++ .../test/java/cd/casic/server/SSETest.java | 31 ++++++ .../test/java/cd/casic/server/StageTest.java | 50 ++++++++++ .../test/java/cd/casic/server/TaskTest.java | 96 +++++++++++++++++++ 7 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 ops-server/src/test/java/cd/casic/server/PipelineExecuteTest.java create mode 100644 ops-server/src/test/java/cd/casic/server/SSETest.java create mode 100644 ops-server/src/test/java/cd/casic/server/StageTest.java create mode 100644 ops-server/src/test/java/cd/casic/server/TaskTest.java diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java index 392e1ae4..d2ab5801 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java @@ -43,12 +43,14 @@ public class MemoryLogManager implements LoggerManager { private PipTaskLogDao logDao; @Override public SseEmitter subscribe(String taskId,HttpServletRequest request) { - String ipAddr = IpUtil.getIpAddr(request); + if (request!=null) { + String ipAddr = IpUtil.getIpAddr(request); + log.info("当前请求ip:{}",ipAddr); + } SseEmitter emitter = new SseEmitter(30000L); emitterInit(emitter,taskId); Long loginUserId = WebFrameworkUtils.getLoginUserId(); log.info("SSE连接建立"); - log.info("当前请求ip:{}",ipAddr); log.info("当前用户id:{}",loginUserId); log.info("当前taskId:{}",loginUserId); List taskIdSSEList = taskIdSSEMap.computeIfAbsent(taskId, k->new ArrayList<>(1)); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java index 076710d6..24a7afcb 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java @@ -298,6 +298,8 @@ public class StageServiceImpl extends ServiceImpl impleme if (pipStage.getStageSort()>oldStageSort&&pipStage.getStageSort()<=currStageSort) { pipStage.setStageSort(pipStage.getStageSort()-1); } + } else{ + pipStage.setStageSort(currStageSort); } } } else { @@ -307,6 +309,8 @@ public class StageServiceImpl extends ServiceImpl impleme if (pipStage.getStageSort()=currStageSort) { pipStage.setStageSort(pipStage.getStageSort()+1); } + } else { + pipStage.setStageSort(currStageSort); } } } diff --git a/ops-server/src/test/java/cd/casic/server/LogTest.java b/ops-server/src/test/java/cd/casic/server/LogTest.java index 0c215006..cfded76e 100644 --- a/ops-server/src/test/java/cd/casic/server/LogTest.java +++ b/ops-server/src/test/java/cd/casic/server/LogTest.java @@ -1,6 +1,20 @@ package cd.casic.server; +import cd.casic.ci.process.engine.manager.LoggerManager; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") public class LogTest { - public static void main(String[] args) { + @Resource + LoggerManager loggerManager; + @Test + public void getLogContent(){ + String logContent = loggerManager.getLogContent("712969147377651712"); } + } diff --git a/ops-server/src/test/java/cd/casic/server/PipelineExecuteTest.java b/ops-server/src/test/java/cd/casic/server/PipelineExecuteTest.java new file mode 100644 index 00000000..3f12b34e --- /dev/null +++ b/ops-server/src/test/java/cd/casic/server/PipelineExecuteTest.java @@ -0,0 +1,27 @@ +package cd.casic.server; + +import cd.casic.ci.process.engine.executor.PipelineExecutor; +import cd.casic.ci.process.process.service.pipeline.PipelineService; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") +public class PipelineExecuteTest { + @Resource + PipelineExecutor pipelineExecutor; + @Resource + PipelineService pipelineService; + // 执行pipeline + @Test + public void executePipeline(){ + pipelineExecutor.execute("716299522803896320"); + } + // 获取pipeline执行状态 + @Test + public void getRunState(){ + pipelineService.getPipelineRunState("716299522803896320"); + } +} diff --git a/ops-server/src/test/java/cd/casic/server/SSETest.java b/ops-server/src/test/java/cd/casic/server/SSETest.java new file mode 100644 index 00000000..bfe9c3bb --- /dev/null +++ b/ops-server/src/test/java/cd/casic/server/SSETest.java @@ -0,0 +1,31 @@ +package cd.casic.server; + +import cd.casic.ci.process.engine.manager.LoggerManager; +import cd.casic.ci.process.engine.manager.RunContextManager; +import cd.casic.ci.process.engine.message.TaskRunMessage; +import cd.casic.ci.process.engine.runContext.PipelineRunContext; +import cd.casic.ci.process.engine.runContext.SecondStageRunContext; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.framework.mq.redis.core.RedisMQTemplate; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") +public class SSETest { + @Resource + LoggerManager loggerManager; + @Test + public void subscribe(){ + loggerManager.subscribe("716299524330622976",null); + } + +} diff --git a/ops-server/src/test/java/cd/casic/server/StageTest.java b/ops-server/src/test/java/cd/casic/server/StageTest.java new file mode 100644 index 00000000..ef0e7236 --- /dev/null +++ b/ops-server/src/test/java/cd/casic/server/StageTest.java @@ -0,0 +1,50 @@ +package cd.casic.server; + +import cd.casic.ci.process.dal.req.stage.StageUpdateReq; +import cd.casic.ci.process.process.service.stage.StageService; +import com.alibaba.fastjson.JSON; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") +public class StageTest { + @Resource + StageService stageService; + @Test + public void getStageRunState(){ + + } + + // 修改名称 + @Test + public void updateStage(){ + String reqStr = "{\n" + + " \"id\": \"716299524129296385\",\n" + + " \"stageName\": \"测试用例生成1\"\n" + + "}"; + StageUpdateReq req = JSON.parseObject(reqStr, StageUpdateReq.class); + stageService.updateStagesTask(req); + } + // 修改阶段排序 + @Test + public void updateStage2(){ + StageUpdateReq req = new StageUpdateReq(); + req.setPipelineId("716299522803896320"); + req.setId("716299524129296385"); + req.setStageSort(3); + stageService.updateStagesTask(req); + } + // 复制阶段 + @Test + public void copyStage(){ + stageService.copyStage("716299524133490688"); + } + // 删除阶段 + @Test + public void deleteStage(){ + stageService.deleteFirstStage("717473535303487488"); + } +} diff --git a/ops-server/src/test/java/cd/casic/server/TaskTest.java b/ops-server/src/test/java/cd/casic/server/TaskTest.java new file mode 100644 index 00000000..da2c7df3 --- /dev/null +++ b/ops-server/src/test/java/cd/casic/server/TaskTest.java @@ -0,0 +1,96 @@ +package cd.casic.server; + +import cd.casic.ci.process.dal.req.stage.StageCreateReq; +import cd.casic.ci.process.dal.req.task.TaskUpdateReq; +import cd.casic.ci.process.engine.manager.RunContextManager; +import cd.casic.ci.process.engine.message.TaskRunMessage; +import cd.casic.ci.process.engine.runContext.PipelineRunContext; +import cd.casic.ci.process.engine.runContext.SecondStageRunContext; +import cd.casic.ci.process.engine.runContext.TaskRunContext; +import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.ci.process.process.service.stage.StageService; +import cd.casic.ci.process.process.service.task.TaskService; +import cd.casic.framework.mq.redis.core.RedisMQTemplate; +import com.alibaba.fastjson.JSON; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.test.context.ActiveProfiles; + +import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") +public class TaskTest { + @Resource + StageService stageService; + @Resource + TaskService taskService; + // 添加串行任务 + @Test + public void createStageAndTask1(){ + // 传入一级stageid ,传入task所属二级stageId,因为结合sort 创建task + String reqStr = "{\n" + + " \"stageId\": \"716299524129296385\",\n" + + " \"task\": {\n" + + " \"taskType\": \"AFL\",\n" + + " \"taskSort\": 2,\n" + + " \"stageId\": \"716299524129296386\",\n" + + " \"taskName\": \"AFL执行\",\n" + + " \"taskProperties\": {},\n" + + " \"pipelineId\": \"716299522803896320\"\n" + + " }\n" + + "}"; + StageCreateReq req = JSON.parseObject(reqStr,StageCreateReq.class); + stageService.createStagesOrTask(req); + } + // 添加并行任务 + @Test + public void createStageAndTask2(){ + // 因为添加并行任务添加顺序固定,而且需要创建二级stage所以不传二级stageid,且不传sort + String reqStr = "{\n" + + " \"stageId\": \"716299524129296385\",\n" + + " \"task\": {\n" + + " \"taskType\": \"AFL\",\n" + + " \"taskName\": \"AFL执行\",\n" + + " \"taskProperties\": {},\n" + + " \"pipelineId\": \"716299522803896320\"\n" + + " }\n" + + "}"; + StageCreateReq req = JSON.parseObject(reqStr,StageCreateReq.class); + stageService.createStagesOrTask(req); + } + // 添加阶段并添加task + @Test + public void createStageAndTask3(){ + // 添加阶段所以一级stageId 不传,改为传stageSort,因为二级stage,task永远是第一个,所以都taskSort,和二级stage的stageSort都不需要传 + String reqStr = "{\n" + + " \"stageSort\": 4,\n" + + " \"task\": {\n" + + " \"taskType\": \"AFL\",\n" + + " \"taskName\": \"AFL执行\",\n" + + " \"taskProperties\": {},\n" + + " \"pipelineId\": \"716299522803896320\"\n" + + " }\n" + + "}"; + StageCreateReq req = JSON.parseObject(reqStr,StageCreateReq.class); + stageService.createStagesOrTask(req); + } + @Test + public void updateTask(){ + String reqStr = "{\n" + + " \"id\": \"716299524330622976\",\n" + + " \"taskType\": \"TEST_CASE_GENERATION\",\n" + + " \"taskName\": \"测试用例生成\",\n" + + " \"taskProperties\": {\n" + + " \"buildScript\": \"cd /home/casic/706/yunqi/CaseGenerator\\nPYTHONPATH=$PWD/src python3 ./src/CaseGenerator/main.py --work-dir ./testdata/libpng/libpng/ --binary ./testdata/libpng/libpng/pngfix --output-dir ../case --count 100\"\n" + + " }\n" + + "}"; + TaskUpdateReq req = JSON.parseObject(reqStr, TaskUpdateReq.class); + taskService.updateTask(req); + } +}