@Test public void testFail() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { throw new RuntimeException("Foo!"); } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { fail("Not expecting to get this far"); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"), new JobParameters()))); try { handler.execute(contribution, context); fail("Expected RuntimeException"); } catch (RuntimeException e) { assertEquals("Foo!", e.getMessage()); } assertEquals(0, contribution.getReadCount()); }
@Test public void testExitCode() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { contribution.incrementReadCount(); Chunk<String> chunk = new Chunk<>(); chunk.add("foo"); chunk.setEnd(); return chunk; } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { contribution.incrementWriteCount(1); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"), new JobParameters()))); ExitStatus expected = contribution.getExitStatus(); handler.execute(contribution, context); // The tasklet does not change the exit code assertEquals(expected, contribution.getExitStatus()); }
@Test public void testHandle() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { contribution.incrementReadCount(); Chunk<String> chunk = new Chunk<>(); chunk.add("foo"); return chunk; } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { contribution.incrementWriteCount(1); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"),new JobParameters()))); handler.execute(contribution, context); assertEquals(1, contribution.getReadCount()); assertEquals(1, contribution.getWriteCount()); assertEquals(0, context.attributeNames().length); }