@Override public RemoteChunkingMasterStepBuilder<I, O> chunk(CompletionPolicy completionPolicy) { super.chunk(completionPolicy); return this; }
@Override public RemoteChunkingMasterStepBuilder<I, O> chunk(int chunkSize) { super.chunk(chunkSize); return this; }
@Test public void testRetryReadError() throws Exception{ reader.failCount = 10; Step step = builder.faultTolerant().retry(RuntimeException.class).retryLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(25, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(0, stepExecution.getSkipCount()); assertEquals(25, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(27, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(1, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testSkipReadError() throws Exception{ reader.failCount = 10; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertNotNull(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(25, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(1, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(25, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(27, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(1, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testSkipProcessError() throws Exception{ processor.failCount = 10; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertNotNull(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(24, writer.results.size()); assertEquals(1, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(24, stepExecution.getWriteCount()); assertEquals(1, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(24, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(1, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testRetryProcessError() throws Exception{ processor.failCount = 10; Step step = builder.faultTolerant().retry(RuntimeException.class).retryLimit(20).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertNotNull(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(26, processor.count); assertEquals(25, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(0, stepExecution.getSkipCount()); assertEquals(25, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(0, stepExecution.getFailureExceptions().size()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(26, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(1, listener.beforeWriteCount); assertEquals(1, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(0, listener.onWriteError); }
@Test public void testRetryWriteError() throws Exception{ writer.fail = true; Step step = builder.faultTolerant().retry(RuntimeException.class).retryLimit(25).chunk(25).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertEquals(25, processor.count); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(0, stepExecution.getSkipCount()); assertEquals(25, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(0, stepExecution.getWriteSkipCount()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(1, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(2, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(1, listener.onWriteError); }
@Test public void testSkipWriteError() throws Exception{ writer.fail = true; Step step = builder.faultTolerant().skip(RuntimeException.class).skipLimit(25).chunk(7).reader(reader).processor(processor).writer(writer).listener((ItemReadListener<String>) listener).build(); runStep(step); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals(25, processor.count); assertEquals(18, writer.results.size()); assertEquals(0, stepExecution.getProcessSkipCount()); assertEquals(25, stepExecution.getReadCount()); assertEquals(0, stepExecution.getReadSkipCount()); assertEquals(1, stepExecution.getSkipCount()); assertEquals(18, stepExecution.getWriteCount()); assertEquals(0, stepExecution.getFilterCount()); assertEquals(1, stepExecution.getWriteSkipCount()); assertEquals(25, listener.afterProcess); assertEquals(25, listener.afterRead); assertEquals(3, listener.afterWrite); assertEquals(25, listener.beforeProcess); assertEquals(26, listener.beforeRead); assertEquals(4, listener.beforeWriteCount); assertEquals(0, listener.onProcessError); assertEquals(0, listener.onReadError); assertEquals(1, listener.onWriteError); assertEquals(0, listener.onSkipInRead); assertEquals(0, listener.onSkipInProcess); assertEquals(1, listener.onSkipInWrite); }