assertEquals(2, jobExecution.getStepExecutions().size());
}
@Test
public void testFailedStepRestarted() throws Exception {
SimpleFlow flow = new JsrFlow("job");
List<StateTransition> transitions = new ArrayList<StateTransition>();
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
State step2State = new StateSupport("step2") {
@Override
public FlowExecutionStatus handle(FlowExecutor executor) throws Exception {
JobExecution jobExecution = executor.getJobExecution();
StepExecution stepExecution = jobExecution.createStepExecution(getName());
jobRepository.add(stepExecution);
if (fail) {
return FlowExecutionStatus.FAILED;
}
else {
return FlowExecutionStatus.COMPLETED;
}
}
};
transitions.add(StateTransition.createStateTransition(step2State, ExitStatus.COMPLETED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(step2State, ExitStatus.FAILED.getExitCode(), "end1"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0")));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.FAILED, "end1")));
flow.setStateTransitions(transitions);
job.setFlow(flow);
job.afterPropertiesSet();
fail = true;
job.execute(jobExecution);
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());