diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRollbackTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRollbackTests.java index daa6970df..2826cd257 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRollbackTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRollbackTests.java @@ -285,12 +285,97 @@ public class FaultTolerantStepFactoryBeanRollbackTests { // Two multi-item chunks rolled back. When the item was encountered on // its own it can proceed assertEquals(2, stepExecution.getRollbackCount()); + } + @Test + public void testSkipInProcessor() throws Exception { + processor.setFailures("4"); + factory.setCommitInterval(30); + + Step step = (Step) factory.getObject(); + + step.execute(stepExecution); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); + + assertEquals("[1, 2, 3, 4, 1, 2, 3, 5]", processor.getProcessed().toString()); + assertEquals("[1, 2, 3, 5]", processor.getCommitted().toString()); + assertEquals("[1, 2, 3, 5]", writer.getWritten().toString()); + assertEquals("[1, 2, 3, 5]", writer.getCommitted().toString()); + } + + @Test + public void testMultipleSkipsInProcessor() throws Exception { + processor.setFailures("2", "4"); + factory.setCommitInterval(30); + + Step step = (Step) factory.getObject(); + + step.execute(stepExecution); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); + + // TODO: Fix this with BATCH-1259? + assertEquals("[1, 2, 1, 3, 4, 1, 3, 5]", processor.getProcessed().toString()); + assertEquals("[1, 3, 5]", processor.getCommitted().toString()); + assertEquals("[1, 3, 5]", writer.getWritten().toString()); + assertEquals("[1, 3, 5]", writer.getCommitted().toString()); + } + + @Test + public void testFilterInProcessor() throws Exception { + processor.setFailures("4"); + processor.setFilter(true); + factory.setCommitInterval(30); + + Step step = (Step) factory.getObject(); + + step.execute(stepExecution); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); + + assertEquals("[1, 2, 3, 4, 5]", processor.getProcessed().toString()); + assertEquals("[1, 2, 3, 5]", processor.getCommitted().toString()); + assertEquals("[1, 2, 3, 5]", writer.getWritten().toString()); + assertEquals("[1, 2, 3, 5]", writer.getCommitted().toString()); + } + + @Test + public void testSkipInWriter() throws Exception { + writer.setFailures("4"); + factory.setCommitInterval(30); + + Step step = (Step) factory.getObject(); + + step.execute(stepExecution); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); + + // TODO: Fix this with BATCH-1256 + assertEquals("[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5]", processor.getProcessed() + .toString()); + assertEquals("[1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 5]", processor.getCommitted().toString()); + assertEquals("[1, 2, 3, 4, 1, 2, 3, 4, 5]", writer.getWritten().toString()); + assertEquals("[1, 2, 3, 5]", writer.getCommitted().toString()); + } + + @Test + public void testMultipleSkipsInWriter() throws Exception { + writer.setFailures("2", "4"); + factory.setCommitInterval(30); + + Step step = (Step) factory.getObject(); + + step.execute(stepExecution); + assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); + + // TODO: Fix this with BATCH-1256 + assertEquals("[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5]", processor.getProcessed() + .toString()); + assertEquals("[1, 2, 3, 4, 5, 3, 4, 5, 5]", processor.getCommitted().toString()); + assertEquals("[1, 2, 1, 2, 3, 4, 5]", writer.getWritten().toString()); + assertEquals("[1, 3, 5]", writer.getCommitted().toString()); } @SuppressWarnings("unchecked") - private Collection> getExceptionList(Class args) { - return Arrays.> asList(args); + private Collection> getExceptionList(Class arg) { + return Arrays.> asList(arg); } } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipProcessorStub.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipProcessorStub.java index b86719a18..84a19a1ba 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipProcessorStub.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipProcessorStub.java @@ -54,18 +54,18 @@ public class SkipProcessorStub extends ExceptionThrowingItemHandlerStub im public T process(T item) throws Exception { processed.add(item); - committed.add(item); try { checkFailure(item); } catch (Exception e) { - if(filter){ + if (filter) { return null; } - else{ + else { throw e; } } + committed.add(item); return item; } } \ No newline at end of file diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipWriterStub.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipWriterStub.java index b59f1c511..7d6a3a64e 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipWriterStub.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipWriterStub.java @@ -48,8 +48,8 @@ public class SkipWriterStub extends ExceptionThrowingItemHandlerStub imple public void write(List items) throws Exception { for (T item : items) { written.add(item); - committed.add(item); checkFailure(item); + committed.add(item); } } }