diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRetryTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRetryTests.java index 82159d78b..95788f689 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRetryTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanRetryTests.java @@ -131,6 +131,8 @@ public class FaultTolerantStepFactoryBeanRetryTests { @Test public void testProcessAllItemsWhenErrorInWriterTransformation() throws Exception { + final int RETRY_LIMIT = 3; + final List ITEM_LIST = Arrays.asList("1", "2", "3"); FaultTolerantStepFactoryBean factory = new FaultTolerantStepFactoryBean(); factory.setBeanName("step"); @@ -138,9 +140,6 @@ public class FaultTolerantStepFactoryBeanRetryTests { new ArrayList())); factory.setJobRepository(repository); factory.setTransactionManager(new ResourcelessTransactionManager()); - @SuppressWarnings("unchecked") - Map, Boolean> exceptionMap = getExceptionMap(Exception.class); - factory.setRetryableExceptionClasses(exceptionMap); ItemWriter failingWriter = new ItemWriter() { public void write(List data) throws Exception { int count = 0; @@ -159,11 +158,14 @@ public class FaultTolerantStepFactoryBeanRetryTests { return Integer.parseInt(item); } }; - ItemReader reader = new ListItemReader(Arrays.asList( - "1", "2", "3")); + ItemReader reader = new ListItemReader(ITEM_LIST); factory.setCommitInterval(3); - factory.setRetryLimit(3); - factory.setSkippableExceptionClasses(new HashMap, Boolean>()); + factory.setRetryLimit(RETRY_LIMIT); + factory.setSkipLimit(1); + @SuppressWarnings("unchecked") + Map, Boolean> exceptionMap = getExceptionMap(Exception.class); + factory.setSkippableExceptionClasses(exceptionMap); + factory.setRetryableExceptionClasses(exceptionMap); factory.setItemReader(reader); factory.setItemProcessor(processor); factory.setItemWriter(failingWriter); @@ -173,11 +175,15 @@ public class FaultTolerantStepFactoryBeanRetryTests { jobExecution); repository.add(stepExecution); step.execute(stepExecution); - System.out.println(stepExecution.getWriteCount()); - System.out.println(processed.size()); - System.out.println(processed); - System.out.println(written); - assertEquals((1 + 3) * 3, processed.size()); // (Initial try + retry limit)*item count +// System.out.println(stepExecution.getWriteCount()); +// System.out.println(processed.size()); +// System.out.println(processed); +// System.out.println(written); + /* + * Each chunk tried up to RETRY_LIMIT, then the scan processes each item + * once, identfiying the skip as it goes + */ + assertEquals((RETRY_LIMIT +1) * ITEM_LIST.size(), processed.size()); } @Test @@ -218,16 +224,14 @@ public class FaultTolerantStepFactoryBeanRetryTests { jobExecution); repository.add(stepExecution); step.execute(stepExecution); - System.out.println(processed); + // System.out.println(processed); assertEquals(ExitStatus.COMPLETED.getExitCode(), stepExecution .getExitStatus().getExitCode()); /* - * Each chunk tried up to RETRY_LIMIT, then the scan processes 1 full - * chunk and fails on the scan, identfies the skip, and then - * re-processes the other n-1 items + * Each chunk tried up to RETRY_LIMIT, then the scan processes each item + * once, identfiying the skip as it goes */ - assertEquals(RETRY_LIMIT * ITEM_LIST.size() + ITEM_LIST.size() - + ITEM_LIST.size() - 1, processed.size()); + assertEquals((RETRY_LIMIT +1) * ITEM_LIST.size(), processed.size()); } @Test diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java index 96b308e10..552028ca3 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java @@ -717,9 +717,9 @@ public class FaultTolerantStepFactoryBeanTests { assertEquals(1, stepExecution.getSkipCount()); assertEquals(2, stepExecution.getRollbackCount()); - // 1,2,3,4,3,4,4 - two re-processing attempts until the item is + // 1,2,3,4,3,4 - one scan until the item is // identified and finally skipped on the second attempt - assertEquals("[1, 2, 3, 4, 3, 4, 4]", processor.getProcessed().toString()); + assertEquals("[1, 2, 3, 4, 3, 4]", processor.getProcessed().toString()); assertStepExecutionsAreEqual(stepExecution, repository.getLastStepExecution(jobExecution.getJobInstance(), step .getName())); }