private Workflow loadWorkflowSnapshot(String resourcePath) throws Exception { String content = Resources.toString(WorkflowLegacyMigrationTest.class.getResource(resourcePath), Charsets.UTF_8); String workflowId = IDGenerator.generate(); content = content.replace(WORKFLOW_INSTANCE_ID_PLACEHOLDER, workflowId); Workflow workflow = objectMapper.readValue(content, Workflow.class); workflow.setWorkflowId(workflowId); return workflow; }
protected List<String> generateWorkflows(Workflow base, int count) { List<String> workflowIds = new ArrayList<>(); for (int i = 0; i < count; i++) { String workflowId = UUID.randomUUID().toString(); base.setWorkflowId(workflowId); base.setCorrelationId("corr001"); base.setStatus(Workflow.WorkflowStatus.RUNNING); getExecutionDAO().createWorkflow(base); workflowIds.add(workflowId); } return workflowIds; } }
/** * @return a deep copy of the workflow instance * Note: This does not copy the following fields: * <ul> * <li>endTime</li> * <li>taskToDomain</li> * <li>failedReferenceTaskNames</li> * <li>externalInputPayloadStoragePath</li> * <li>externalOutputPayloadStoragePath</li> * </ul> */ public Workflow copy() { Workflow copy = new Workflow(); copy.setInput(input); copy.setOutput(output); copy.setStatus(status); copy.setWorkflowId(workflowId); copy.setParentWorkflowId(parentWorkflowId); copy.setParentWorkflowTaskId(parentWorkflowTaskId); copy.setReRunFromWorkflowId(reRunFromWorkflowId); copy.setCorrelationId(correlationId); copy.setEvent(event); copy.setReasonForIncompletion(reasonForIncompletion); copy.setWorkflowDefinition(workflowDefinition); copy.setTasks(tasks.stream() .map(Task::copy) .collect(Collectors.toList())); return copy; }
@Test(expected = ApplicationException.class) public void testRetryWorkflowNoTasks() { Workflow workflow = new Workflow(); workflow.setWorkflowId("ApplicationException"); workflow.setStatus(Workflow.WorkflowStatus.FAILED); //noinspection unchecked workflow.setTasks(new ArrayList()); when(executionDAOFacade.getWorkflowById(anyString(), anyBoolean())).thenReturn(workflow); workflowExecutor.retry(workflow.getWorkflowId()); }
@Test(expected = ApplicationException.class) public void testRetryNonTerminalWorkflow() { Workflow workflow = new Workflow(); workflow.setWorkflowId("testRetryNonTerminalWorkflow"); workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); when(executionDAOFacade.getWorkflowById(anyString(), anyBoolean())).thenReturn(workflow); workflowExecutor.retry(workflow.getWorkflowId()); }
to.setStatus( fromProto( from.getStatus() ) ); to.setEndTime( from.getEndTime() ); to.setWorkflowId( from.getWorkflowId() ); to.setParentWorkflowId( from.getParentWorkflowId() ); to.setParentWorkflowTaskId( from.getParentWorkflowTaskId() );
@Test public void testSearchArchivableWorkflows() { String workflowId = "search-workflow-id"; workflow.setWorkflowId(workflowId); workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); workflow.setCreateTime(new Date().getTime()); workflow.setUpdateTime(new Date().getTime()); workflow.setEndTime(new Date().getTime()); indexDAO.indexWorkflow(workflow); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchArchivableWorkflows("conductor",10); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
@Test public void testSearchRecentRunningWorkflows() { workflow.setWorkflowId("completed-workflow"); workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); indexDAO.indexWorkflow(workflow); String workflowId = "recent-running-workflow-id"; workflow.setWorkflowId(workflowId); workflow.setStatus(Workflow.WorkflowStatus.RUNNING); workflow.setCreateTime(new Date().getTime()); workflow.setUpdateTime(new Date().getTime()); workflow.setEndTime(new Date().getTime()); indexDAO.indexWorkflow(workflow); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchRecentRunningWorkflows(1,0); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
@Test public void testSearchRecentRunningWorkflows() { workflow.setWorkflowId("completed-workflow"); workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); indexDAO.indexWorkflow(workflow); String workflowId = "recent-running-workflow-id"; workflow.setWorkflowId(workflowId); workflow.setStatus(Workflow.WorkflowStatus.RUNNING); workflow.setCreateTime(new Date().getTime()); workflow.setUpdateTime(new Date().getTime()); workflow.setEndTime(new Date().getTime()); indexDAO.indexWorkflow(workflow); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchRecentRunningWorkflows(1,0); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
workflow.setWorkflowId("1"); workflow.setStatus(Workflow.WorkflowStatus.RUNNING); workflow.setOwnerApp("junit_test");
workflow.setWorkflowId("1"); workflow.setStatus(Workflow.WorkflowStatus.RUNNING); workflow.setOwnerApp("junit_test");
@Test public void testWorkflowSearch() { String workflowId = "search-workflow-id"; workflow.setWorkflowId(workflowId); indexDAO.indexWorkflow(workflow); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchWorkflows("", "workflowId:\"" + workflowId + "\"", 0, 100, Collections.singletonList("workflowId:ASC")).getResults(); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
@Test public void testWorkflowSearch() { String workflowId = "search-workflow-id"; workflow.setWorkflowId(workflowId); indexDAO.indexWorkflow(workflow); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchWorkflows("", "workflowId:\"" + workflowId + "\"", 0, 100, Collections.singletonList("workflowId:ASC")).getResults(); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
@Test public void testSearchArchivableWorkflows() throws IOException { String workflowId = "search-workflow-id"; Long time = DateTime.now().minusDays(2).toDate().getTime(); workflow.setWorkflowId(workflowId); workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); workflow.setCreateTime(time); workflow.setUpdateTime(time); workflow.setEndTime(time); indexDAO.indexWorkflow(workflow); assertTrue(indexExists("conductor")); await() .atMost(3, TimeUnit.SECONDS) .untilAsserted( () -> { List<String> searchIds = indexDAO.searchArchivableWorkflows("conductor",1); assertEquals(1, searchIds.size()); assertEquals(workflowId, searchIds.get(0)); } ); }
workflow.setWorkflowId("test-workflow-id"); workflow.getTasks().addAll(Arrays.asList(task_1, task_2)); workflow.setStatus(Workflow.WorkflowStatus.FAILED);
@Test public void testCaseStatement() { WorkflowDef def = createConditionalWF(); Workflow wf = new Workflow(); wf.setWorkflowDefinition(def); wf.setCreateTime(0L); wf.setWorkflowId("a"); wf.setCorrelationId("b"); wf.setStatus(WorkflowStatus.RUNNING); DeciderOutcome outcome = deciderService.decide(wf); List<Task> scheduledTasks = outcome.tasksToBeScheduled; assertNotNull(scheduledTasks); assertEquals(2, scheduledTasks.size()); assertEquals(Status.IN_PROGRESS, scheduledTasks.get(0).getStatus()); assertEquals(Status.SCHEDULED, scheduledTasks.get(1).getStatus()); }
workflow.setStartTime(90L); workflow.setStatus(Workflow.WorkflowStatus.FAILED); workflow.setWorkflowId(UUID.randomUUID().toString());
@Test public void testWorkflowCRUD() { String workflowId = IDGenerator.generate(); Workflow workflow = new Workflow(); workflow.setWorkflowId(workflowId); workflow.setInput(new HashMap<>()); workflow.setStatus(Workflow.WorkflowStatus.RUNNING); // create a new workflow in the datastore String id = executionDAO.createWorkflow(workflow); assertEquals(workflowId, id); // read the workflow from the datastore Workflow found = executionDAO.getWorkflow(workflowId); assertEquals(workflow, found); // update the workflow workflow.setStatus(Workflow.WorkflowStatus.COMPLETED); executionDAO.updateWorkflow(workflow); found = executionDAO.getWorkflow(workflowId); assertEquals(workflow, found); // remove the workflow from datastore boolean removed = executionDAO.removeWorkflow(workflowId); assertTrue(removed); // read workflow again workflow = executionDAO.getWorkflow(workflowId, true); assertNull(workflow); }
@Test public void testWorkflowCRUD() { String testWorkflowType = "testworkflow"; String testId = "1"; workflow.setWorkflowId(testId); workflow.setWorkflowType(testWorkflowType); // Create String workflowType = indexDAO.get(testId, "workflowType"); assertNull("Workflow should not exist", workflowType); // Get indexDAO.indexWorkflow(workflow); workflowType = indexDAO.get(testId, "workflowType"); assertEquals("Should have found our workflow type", testWorkflowType, workflowType); // Update String newWorkflowType = "newworkflowtype"; String[] keyChanges = {"workflowType"}; String[] valueChanges = {newWorkflowType}; indexDAO.updateWorkflow(testId, keyChanges, valueChanges); workflowType = indexDAO.get(testId, "workflowType"); assertEquals("Should have updated our new workflow type", newWorkflowType, workflowType); // Delete indexDAO.removeWorkflow(testId); workflowType = indexDAO.get(testId, "workflowType"); assertNull("We should no longer have our workflow in the system", workflowType); }
String testId = "1"; workflow.setWorkflowId(testId); workflow.setWorkflowType(testWorkflowType);