package tech.powerjob.client.test; import com.alibaba.fastjson.JSONObject; import tech.powerjob.client.PowerJobClient; import tech.powerjob.common.enums.ExecuteType; import tech.powerjob.common.enums.ProcessorType; import tech.powerjob.common.enums.TimeExpressionType; import tech.powerjob.common.enums.WorkflowNodeType; import tech.powerjob.common.model.PEWorkflowDAG; import tech.powerjob.common.request.http.SaveJobInfoRequest; import tech.powerjob.common.request.http.SaveWorkflowNodeRequest; import tech.powerjob.common.request.http.SaveWorkflowRequest; import tech.powerjob.common.response.ResultDTO; import tech.powerjob.common.response.WorkflowInfoDTO; import tech.powerjob.common.response.WorkflowInstanceInfoDTO; import tech.powerjob.common.response.WorkflowNodeInfoDTO; import com.google.common.collect.Lists; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; /** * Test cases for {@link PowerJobClient} workflow. * * @author tjq * @author Echo009 * @since 2020/6/2 */ class TestWorkflow extends ClientInitializer { private static final long WF_ID = 2; @Test void initTestData() { SaveJobInfoRequest base = new SaveJobInfoRequest(); base.setJobName("DAG-Node-"); base.setTimeExpressionType(TimeExpressionType.WORKFLOW); base.setExecuteType(ExecuteType.STANDALONE); base.setProcessorType(ProcessorType.BUILT_IN); base.setProcessorInfo("tech.powerjob.samples.workflow.WorkflowStandaloneProcessor"); for (int i = 0; i < 5; i++) { SaveJobInfoRequest request = JSONObject.parseObject(JSONObject.toJSONBytes(base), SaveJobInfoRequest.class); request.setJobName(request.getJobName() + i); ResultDTO res = powerJobClient.saveJob(request); System.out.println(res); Assertions.assertNotNull(res); } } @Test void testSaveWorkflow() { SaveWorkflowRequest req = new SaveWorkflowRequest(); req.setWfName("workflow-by-client"); req.setWfDescription("created by client"); req.setEnable(true); req.setTimeExpressionType(TimeExpressionType.API); System.out.println("req ->" + JSONObject.toJSON(req)); ResultDTO res = powerJobClient.saveWorkflow(req); System.out.println(res); Assertions.assertNotNull(res); req.setId(res.getData()); // 创建节点 SaveWorkflowNodeRequest saveWorkflowNodeRequest1 = new SaveWorkflowNodeRequest(); saveWorkflowNodeRequest1.setJobId(1L); saveWorkflowNodeRequest1.setNodeName("DAG-Node-1"); saveWorkflowNodeRequest1.setType(WorkflowNodeType.JOB.getCode()); SaveWorkflowNodeRequest saveWorkflowNodeRequest2 = new SaveWorkflowNodeRequest(); saveWorkflowNodeRequest2.setJobId(1L); saveWorkflowNodeRequest2.setNodeName("DAG-Node-2"); saveWorkflowNodeRequest2.setType(WorkflowNodeType.JOB.getCode()); SaveWorkflowNodeRequest saveWorkflowNodeRequest3 = new SaveWorkflowNodeRequest(); saveWorkflowNodeRequest3.setJobId(1L); saveWorkflowNodeRequest3.setNodeName("DAG-Node-3"); saveWorkflowNodeRequest3.setType(WorkflowNodeType.JOB.getCode()); List nodeList = powerJobClient.saveWorkflowNode(Lists.newArrayList(saveWorkflowNodeRequest1,saveWorkflowNodeRequest2,saveWorkflowNodeRequest3)).getData(); System.out.println(nodeList); Assertions.assertNotNull(nodeList); // DAG 图 List nodes = Lists.newLinkedList(); List edges = Lists.newLinkedList(); nodes.add(new PEWorkflowDAG.Node(nodeList.get(0).getId())); nodes.add(new PEWorkflowDAG.Node(nodeList.get(1).getId())); nodes.add(new PEWorkflowDAG.Node(nodeList.get(2).getId())); edges.add(new PEWorkflowDAG.Edge(nodeList.get(0).getId(), nodeList.get(1).getId())); edges.add(new PEWorkflowDAG.Edge(nodeList.get(1).getId(), nodeList.get(2).getId())); PEWorkflowDAG peWorkflowDAG = new PEWorkflowDAG(nodes, edges); // 保存完整信息 req.setDag(peWorkflowDAG); res = powerJobClient.saveWorkflow(req); System.out.println(res); Assertions.assertNotNull(res); } @Test void testCopyWorkflow() { ResultDTO res = powerJobClient.copyWorkflow(WF_ID); System.out.println(res); Assertions.assertNotNull(res); } @Test void testDisableWorkflow() { ResultDTO res = powerJobClient.disableWorkflow(WF_ID); System.out.println(res); Assertions.assertNotNull(res); } @Test void testDeleteWorkflow() { ResultDTO res = powerJobClient.deleteWorkflow(WF_ID); System.out.println(res); Assertions.assertNotNull(res); } @Test void testEnableWorkflow() { ResultDTO res = powerJobClient.enableWorkflow(WF_ID); System.out.println(res); Assertions.assertNotNull(res); } @Test void testFetchWorkflowInfo() { ResultDTO res = powerJobClient.fetchWorkflow(WF_ID); System.out.println(res); Assertions.assertNotNull(res); } @Test void testRunWorkflow() { ResultDTO res = powerJobClient.runWorkflow(WF_ID, null, 0); System.out.println(res); Assertions.assertNotNull(res); } @Test void testStopWorkflowInstance() { ResultDTO res = powerJobClient.stopWorkflowInstance(149962433421639744L); System.out.println(res); Assertions.assertNotNull(res); } @Test void testRetryWorkflowInstance() { ResultDTO res = powerJobClient.retryWorkflowInstance(149962433421639744L); System.out.println(res); Assertions.assertNotNull(res); } @Test void testMarkWorkflowNodeAsSuccess() { ResultDTO res = powerJobClient.markWorkflowNodeAsSuccess(149962433421639744L, 1L); System.out.println(res); Assertions.assertNotNull(res); } @Test void testFetchWfInstanceInfo() { ResultDTO res = powerJobClient.fetchWorkflowInstanceInfo(149962433421639744L); System.out.println(res); Assertions.assertNotNull(res); } @Test void testRunWorkflowPlus() { ResultDTO res = powerJobClient.runWorkflow(WF_ID, "this is init Params 2", 90000); System.out.println(res); Assertions.assertNotNull(res); } }