BATCH-1923: add stop() methods to FlowBuilder
This commit is contained in:
@@ -21,6 +21,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.batch.core.BatchStatus;
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.JobInterruptedException;
|
||||
import org.springframework.batch.core.JobParameters;
|
||||
@@ -54,6 +55,16 @@ public class FlowJobBuilderTests {
|
||||
}
|
||||
};
|
||||
|
||||
private StepSupport fails = new StepSupport("fails") {
|
||||
@Override
|
||||
public void execute(StepExecution stepExecution) throws JobInterruptedException,
|
||||
UnexpectedJobExecutionException {
|
||||
stepExecution.upgradeStatus(BatchStatus.FAILED);
|
||||
stepExecution.setExitStatus(ExitStatus.FAILED);
|
||||
jobRepository.update(stepExecution);
|
||||
}
|
||||
};
|
||||
|
||||
private StepSupport step2 = new StepSupport("step2") {
|
||||
@Override
|
||||
public void execute(StepExecution stepExecution) throws JobInterruptedException,
|
||||
@@ -164,4 +175,41 @@ public class FlowJobBuilderTests {
|
||||
assertEquals(2, execution.getStepExecutions().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuildWithCustomEndState() throws Exception {
|
||||
SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1);
|
||||
builder.on("COMPLETED").end("FOO");
|
||||
builder.preventRestart();
|
||||
builder.build().execute(execution);
|
||||
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
|
||||
assertEquals("FOO", execution.getExitStatus().getExitCode());
|
||||
assertEquals(1, execution.getStepExecutions().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuildWithStop() throws Exception {
|
||||
SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step1);
|
||||
builder.on("COMPLETED").stop();
|
||||
builder.preventRestart();
|
||||
builder.build().execute(execution);
|
||||
assertEquals(BatchStatus.STOPPED, execution.getStatus());
|
||||
assertEquals("STOPPED", execution.getExitStatus().getExitCode());
|
||||
assertEquals(1, execution.getStepExecutions().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBuildWithStopAndRestart() throws Exception {
|
||||
SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(fails);
|
||||
builder.on("FAILED").stopAndRestart(step2);
|
||||
Job job = builder.build();
|
||||
job.execute(execution);
|
||||
assertEquals(BatchStatus.STOPPED, execution.getStatus());
|
||||
assertEquals(1, execution.getStepExecutions().size());
|
||||
execution = jobRepository.createJobExecution("flow", new JobParameters());
|
||||
job.execute(execution);
|
||||
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
|
||||
assertEquals(1, execution.getStepExecutions().size());
|
||||
assertEquals("step2", execution.getStepExecutions().iterator().next().getStepName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user