@Test public void testNonSkippableChecked() throws Exception { writer.setExceptionType(Exception.class); StepExecution stepExecution = launchStep("nonSkippableStep"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testSkippableChecked() throws Exception { writer.setExceptionType(SkippableException.class); StepExecution stepExecution = launchStep("skippableStep"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); assertEquals("[1, 2, 4]", writer.getCommitted().toString()); }
@Test public void testRetryableFatal() throws Exception { // User wants all exceptions to be retried, but only some are skippable // FatalRuntimeException is not skippable because it is fatal, but is a // subclass of another skippable writer.setExceptionType(FatalRuntimeException.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); // BATCH-1333: assertEquals("[1, 2, 3, 1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testNoRollbackSkippableRollbackException() throws Exception { writer.setExceptionType(SkippableRuntimeException.class); StepExecution stepExecution = launchStep("noRollbackSkippable"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); assertEquals("[1, 2, 4]", writer.getCommitted().toString()); }
@Test public void testFatalOverridesSkippable() throws Exception { writer.setExceptionType(FatalRuntimeException.class); StepExecution stepExecution = launchStep("skippableFatalStep"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testRetryableButNotSkippableChecked() throws Exception { writer.setExceptionType(Exception.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3]", writer.getWritten().toString()); // BATCH-1327: assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testRetryableSkippableChecked() throws Exception { writer.setExceptionType(SkippableException.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); assertEquals("[1, 2, 4]", writer.getCommitted().toString()); }
@Test public void testNonSkippable() throws Exception { writer.setExceptionType(RuntimeException.class); StepExecution stepExecution = launchStep("nonSkippableStep"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testSkippable() throws Exception { writer.setExceptionType(SkippableRuntimeException.class); StepExecution stepExecution = launchStep("skippableStep"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); assertEquals("[1, 2, 4]", writer.getCommitted().toString()); }
@Test public void testRetryableButNotSkippable() throws Exception { writer.setExceptionType(RuntimeException.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3]", writer.getWritten().toString()); // BATCH-1327: assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testRetryableSkippable() throws Exception { writer.setExceptionType(SkippableRuntimeException.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); assertEquals("[1, 2, 4]", writer.getCommitted().toString()); }
@Test public void testNoRollbackFatalRollbackException() throws Exception { writer.setExceptionType(SkippableRuntimeException.class); StepExecution stepExecution = launchStep("noRollbackFatal"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); assertEquals("[1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testDefaultFatalChecked() throws Exception { writer.setExceptionType(Exception.class); StepExecution stepExecution = launchStep("skippableFatalStep"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); // BATCH-1327: assertEquals("[1, 2, 3]", writer.getWritten().toString()); // BATCH-1327: assertEquals("[]", writer.getCommitted().toString()); }
@Test public void testSkipInProcessor() throws Exception { processor.setFailures("4"); factory.setCommitInterval(30); 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 = factory.getObject(); step.execute(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 3, 5]", processor.getCommitted().toString()); assertEquals("[1, 3, 5]", writer.getWritten().toString()); assertEquals("[1, 3, 5]", writer.getCommitted().toString()); assertEquals("[1, 2, 1, 3, 4, 1, 3, 5]", processor.getProcessed().toString()); }
@Test public void testNoRollbackSkippableNoRollbackException() throws Exception { writer.setExceptionType(FatalRuntimeException.class); StepExecution stepExecution = launchStep("noRollbackSkippable"); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); // BATCH-1332: assertEquals("[1, 2, 3, 1, 2, 3, 4]", writer.getWritten().toString()); // BATCH-1334: // Skipped but also committed (because it was marked as no-rollback) assertEquals("[1, 2, 3, 4]", writer.getCommitted().toString()); assertEquals(1, stepExecution.getWriteSkipCount()); }
@Test public void testNoRollbackDefaultRollbackException() throws Exception { // Exception is neither no-rollback nor skippable writer.setExceptionType(Exception.class); StepExecution stepExecution = launchStep("noRollbackDefault"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); // BATCH-1318: assertEquals("[1, 2, 3]", writer.getWritten().toString()); // BATCH-1318: assertEquals("[]", writer.getCommitted().toString()); assertEquals(0, stepExecution.getWriteSkipCount()); }
@Test public void testRetryableFatalChecked() throws Exception { writer.setExceptionType(FatalSkippableException.class); StepExecution stepExecution = launchStep("retryable"); assertEquals(BatchStatus.FAILED, stepExecution.getStatus()); // BATCH-1333: assertEquals("[1, 2, 3, 1, 2, 3]", writer.getWritten().toString()); assertEquals("[]", writer.getCommitted().toString()); assertEquals(0, stepExecution.getWriteSkipCount()); }
@Test public void testSkipInWriterNonTransactionalProcessor() throws Exception { writer.setFailures("4"); factory.setCommitInterval(30); factory.setProcessorTransactional(false); Step step = factory.getObject(); step.execute(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 2, 3, 5]", writer.getCommitted().toString()); assertEquals("[1, 2, 3, 4, 1, 2, 3, 4, 5]", writer.getWritten().toString()); assertEquals("[1, 2, 3, 4, 5]", processor.getProcessed().toString()); }
@Test public void testMultipleSkipsInWriterNonTransactionalProcessor() throws Exception { writer.setFailures("2", "4"); factory.setCommitInterval(30); factory.setProcessorTransactional(false); Step step = factory.getObject(); step.execute(stepExecution); assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); assertEquals("[1, 3, 5]", writer.getCommitted().toString()); assertEquals("[1, 2, 1, 2, 3, 4, 5]", writer.getWritten().toString()); assertEquals("[1, 2, 3, 4, 5]", processor.getProcessed().toString()); }