@Test public void testInterruptedAfterUnknownStatus() throws Exception { step1.setStartLimit(5); step2.setStartLimit(5); final JobInterruptedException exception = new JobInterruptedException("Interrupt!", BatchStatus.UNKNOWN); step1.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); assertEquals(exception, jobExecution.getStepExecutions().iterator().next().getFailureExceptions().get(0)); assertEquals(0, list.size()); checkRepository(BatchStatus.UNKNOWN, ExitStatus.STOPPED); }
@Test public void testFailedWithError() throws Exception { step1.setStartLimit(5); step2.setStartLimit(5); final Error exception = new Error("Foo!"); step1.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); assertEquals(exception, jobExecution.getAllFailureExceptions().get(0)); assertEquals(0, list.size()); checkRepository(BatchStatus.FAILED, ExitStatus.FAILED); }
@Test public void testInterrupted() throws Exception { step1.setStartLimit(5); step2.setStartLimit(5); final JobInterruptedException exception = new JobInterruptedException("Interrupt!"); step1.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); assertEquals(exception, jobExecution.getStepExecutions().iterator().next().getFailureExceptions().get(0)); assertEquals(0, list.size()); checkRepository(BatchStatus.STOPPED, ExitStatus.STOPPED); }
/** * Execution context should be restored on restart. */ @Test public void testRestartAndExecutionContextRestored() throws Exception { job.setRestartable(true); step1.setAllowStartIfComplete(true); final RuntimeException exception = new RuntimeException("Foo!"); step2.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); Throwable e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); assertTrue(step1.passedInJobContext.isEmpty()); assertFalse(step2.passedInJobContext.isEmpty()); assertFalse(jobExecution.getExecutionContext().isEmpty()); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); assertFalse(step1.passedInJobContext.isEmpty()); assertFalse(step2.passedInJobContext.isEmpty()); }
@Test public void testRestartWithNullParameter() throws Exception { JobParameters jobParameters = new JobParametersBuilder().addString("foo", null).toJobParameters(); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); jobInstance = jobExecution.getJobInstance(); step1.setAllowStartIfComplete(true); final RuntimeException exception = new RuntimeException("Foo!"); step2.setProcessException(exception); job.execute(jobExecution); Throwable e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); job.execute(jobExecution); e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); assertTrue(step1.passedInStepContext.isEmpty()); assertFalse(step2.passedInStepContext.isEmpty()); }
@Test public void testRestart() throws Exception { step1.setAllowStartIfComplete(true); final RuntimeException exception = new RuntimeException("Foo!"); step2.setProcessException(exception); job.execute(jobExecution); Throwable e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); job.execute(jobExecution); e = jobExecution.getAllFailureExceptions().get(0); assertSame(exception, e); assertTrue(step1.passedInStepContext.isEmpty()); assertFalse(step2.passedInStepContext.isEmpty()); }
@Test public void testFailedWithListener() throws Exception { job.setJobExecutionListeners(new JobExecutionListenerSupport[] { new JobExecutionListenerSupport() { @Override public void afterJob(JobExecution jobExecution) { list.add("afterJob"); } } }); final RuntimeException exception = new RuntimeException("Foo!"); step1.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); assertEquals(exception, jobExecution.getAllFailureExceptions().get(0)); assertEquals(1, list.size()); checkRepository(BatchStatus.FAILED, ExitStatus.FAILED); }
@Test public void testFailed() throws Exception { step1.setStartLimit(5); step2.setStartLimit(5); final RuntimeException exception = new RuntimeException("Foo!"); step1.setProcessException(exception); job.execute(jobExecution); assertEquals(1, jobExecution.getAllFailureExceptions().size()); assertEquals(exception, jobExecution.getAllFailureExceptions().get(0)); assertEquals(0, list.size()); assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); checkRepository(BatchStatus.FAILED, ExitStatus.FAILED); }
@Test public void testInterruptWithListener() throws Exception { step1.setProcessException(new JobInterruptedException("job interrupted!")); JobExecutionListener listener = mock(JobExecutionListener.class); listener.beforeJob(jobExecution); listener.afterJob(jobExecution); job.setJobExecutionListeners(new JobExecutionListener[] { listener }); job.execute(jobExecution); assertEquals(BatchStatus.STOPPED, jobExecution.getStatus()); }