File tree Expand file tree Collapse file tree 3 files changed +37
-1
lines changed
spring-batch-integration/src/main/java/org/springframework/batch/integration/chunk
main/resources/org/springframework/batch/samples/chunking/local/data
test/java/org/springframework/batch/samples/chunking/local Expand file tree Collapse file tree 3 files changed +37
-1
lines changed Original file line number Diff line number Diff line change 1515 */
1616package org .springframework .batch .integration .chunk ;
1717
18+ import org .springframework .batch .core .BatchStatus ;
1819import org .springframework .batch .core .ExitStatus ;
1920import org .springframework .batch .core .step .StepContribution ;
2021import org .springframework .batch .core .step .StepExecution ;
@@ -84,14 +85,21 @@ public void beforeStep(StepExecution stepExecution) {
8485 @ Override
8586 public ExitStatus afterStep (StepExecution stepExecution ) {
8687 try {
88+ ExitStatus exitStatus = ExitStatus .COMPLETED
89+ .addExitDescription ("Waited for " + this .responses .size () + " results." );
8790 for (StepContribution contribution : getStepContributions ()) {
8891 stepExecution .apply (contribution );
92+ if (ExitStatus .FAILED .getExitCode ().equals (contribution .getExitStatus ().getExitCode ())) {
93+ exitStatus = contribution .getExitStatus ();
94+ stepExecution .setStatus (BatchStatus .FAILED );
95+ }
8996 }
97+ return exitStatus ;
9098 }
9199 catch (ExecutionException | InterruptedException e ) {
100+ stepExecution .setStatus (BatchStatus .FAILED );
92101 return ExitStatus .FAILED .addExitDescription (e );
93102 }
94- return ExitStatus .COMPLETED .addExitDescription ("Waited for " + this .responses .size () + " results." );
95103 }
96104
97105 private Collection <StepContribution > getStepContributions () throws ExecutionException , InterruptedException {
Original file line number Diff line number Diff line change 1+ foo1,bar1
2+ foo2,bar2
3+ fooooooooooooooooooooooooooooo3,baaaaaaaaaaaaaaaaaaaaaaaaaaaar3
4+ foo4,bar4
5+ foo5,bar5
6+ foo6,bar6
Original file line number Diff line number Diff line change 2929import org .springframework .test .jdbc .JdbcTestUtils ;
3030
3131import static org .junit .jupiter .api .Assertions .assertEquals ;
32+ import static org .junit .jupiter .api .Assertions .assertTrue ;
3233
3334public class LocalChunkingJobFunctionalTests {
3435
@@ -52,4 +53,25 @@ public void testLaunchJobWithJavaConfig() throws Exception {
5253 assertEquals (6 , vetsCount );
5354 }
5455
56+ @ Test
57+ public void testLaunchJobWithJavaConfigFailure () throws Exception {
58+ // given
59+ ApplicationContext context = new AnnotationConfigApplicationContext (LocalChunkingJobConfiguration .class );
60+ JdbcTemplate jdbcTemplate = context .getBean (JdbcTemplate .class );
61+ JobOperator jobOperator = context .getBean (JobOperator .class );
62+ Job job = context .getBean (Job .class );
63+ JobParameters jobParameters = new JobParametersBuilder ()
64+ .addString ("inputFile" , "org/springframework/batch/samples/chunking/local/data/vets-bad-data.csv" )
65+ .toJobParameters ();
66+
67+ // when
68+ JobExecution jobExecution = jobOperator .start (job , jobParameters );
69+
70+ // then
71+ assertEquals (BatchStatus .FAILED , jobExecution .getStatus ());
72+ assertTrue (jobExecution .getExitStatus ().getExitDescription ().contains ("size limit: 30" ));
73+ int vetsCount = JdbcTestUtils .countRowsInTable (jdbcTemplate , "vets" );
74+ assertEquals (4 , vetsCount );
75+ }
76+
5577}
You can’t perform that action at this time.
0 commit comments