@Test public void testOneStepWithListenerCallsClose() throws Exception { flow.setStateTransitions(Collections.singletonList(StateTransition.createEndStateTransition(new StubState( "step1")))); flow.afterPropertiesSet(); final List<FlowExecution> list = new ArrayList<>(); executor = new JobFlowExecutorSupport() { @Override public void close(FlowExecution result) { list.add(result); } }; FlowExecution execution = flow.start(executor); assertEquals(1, list.size()); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step1", execution.getName()); }
@Test public void testOneStep() throws Exception { flow.setStateTransitions(Collections.singletonList(StateTransition.createEndStateTransition(new StubState( "step1")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step1", execution.getName()); }
@Test public void testBasicProperties() throws Exception { FlowExecution execution = new FlowExecution("foo", new FlowExecutionStatus("BAR")); assertEquals("foo",execution.getName()); assertEquals("BAR",execution.getStatus().getName()); }
@Test public void testUnconnectedSteps() throws Exception { flow.setStateTransitions(collect(StateTransition.createEndStateTransition(new StubState("step1")), StateTransition.createEndStateTransition(new StubState("step2")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step1", execution.getName()); }
@Test public void testTwoSteps() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step1"), "step2"), StateTransition.createEndStateTransition(new StubState("step2")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step2", execution.getName()); }
@Test public void testStepLoop() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StateSupport("step"), ExitStatus.FAILED.getExitCode(), "step"), StateTransition.createEndStateTransition(new StateSupport("step")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step", execution.getName()); }
@Test public void testFailedStep() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step1") { @Override public FlowExecutionStatus handle(FlowExecutor executor) { return FlowExecutionStatus.FAILED; } }, "step2"), StateTransition.createEndStateTransition(new StubState("step2")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step2", execution.getName()); }
@Test public void testResume() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step1"), "step2"), StateTransition.createEndStateTransition(new StubState("step2")))); flow.afterPropertiesSet(); FlowExecution execution = flow.resume("step2", executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step2", execution.getName()); }
@Test public void testExplicitStartStep() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step"), ExitStatus.FAILED.getExitCode(), "step"), StateTransition.createEndStateTransition(new StubState("step")))); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step", execution.getName()); }
@Test public void testBranching() throws Exception { flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step1"), "step2"), StateTransition.createStateTransition(new StubState("step1"), ExitStatus.COMPLETED.getExitCode(), "step3"), StateTransition.createEndStateTransition(new StubState("step2")), StateTransition .createEndStateTransition(new StubState("step3")))); flow.setStateTransitionComparator(new DefaultStateTransitionComparator()); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.COMPLETED, execution.getStatus()); assertEquals("step3", execution.getName()); }
@Test public void testNextBasedOnBatchStatus() throws Exception { StepExecution stepExecution = new StepExecution("step1", new JobExecution(5L)); stepExecution.setExitStatus(new ExitStatus("unmapped exit code")); stepExecution.setStatus(BatchStatus.FAILED); executor = new FlowExecutor(stepExecution); State startState = new StateSupport("step1", new FlowExecutionStatus("unmapped exit code")); State endState = new StateSupport("failed", FlowExecutionStatus.FAILED); StateTransition failureTransition = StateTransition.createStateTransition(startState, "FAILED", "failed"); StateTransition endTransition = StateTransition.createEndStateTransition(endState); flow.setStateTransitions(collect(failureTransition, endTransition)); flow.afterPropertiesSet(); FlowExecution execution = flow.start(executor); assertEquals(FlowExecutionStatus.FAILED, execution.getStatus()); assertEquals("failed", execution.getName()); }