protected JobLauncher createJobLauncher() throws Exception { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); jobLauncher.afterPropertiesSet(); return jobLauncher; }
@Test public void testRunningJobExecution() throws Exception { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); MapJobRepositoryFactoryBean repositoryFactory = new MapJobRepositoryFactoryBean(); repositoryFactory.afterPropertiesSet(); JobRepository jobRepository = repositoryFactory.getObject(); jobLauncher.setJobRepository(jobRepository); jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor()); jobLauncher.afterPropertiesSet(); job.afterPropertiesSet(); jobLauncher.run(job, new JobParametersBuilder().addString("test", getClass().getName()).toJobParameters());
@Before public void setUp() throws Exception { jobLauncher = new SimpleJobLauncher(); jobRepository = mock(JobRepository.class); jobLauncher.setJobRepository(jobRepository); }
@Test public void testInitialiseWithoutRepository() throws Exception { try { new SimpleJobLauncher().afterPropertiesSet(); fail("Expected IllegalArgumentException"); } catch (IllegalStateException e) { // expected assertTrue("Message did not contain repository: " + e.getMessage(), contains(e.getMessage().toLowerCase(), "repository")); } }
@Bean public JobLauncher jobLauncher() { final SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor(); jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor); return jobLauncher; }
private void testRestartStepExecutionInvalidStatus(BatchStatus status) throws Exception { String jobName = "test_job"; JobRepository jobRepository = mock(JobRepository.class); JobParameters parameters = new JobParametersBuilder().addLong("runtime", System.currentTimeMillis()).toJobParameters(); JobExecution jobExecution = mock(JobExecution.class); Job job = mock(Job.class); JobParametersValidator validator = mock(JobParametersValidator.class); StepExecution stepExecution = mock(StepExecution.class); when(job.getName()).thenReturn(jobName); when(job.isRestartable()).thenReturn(true); when(job.getJobParametersValidator()).thenReturn(validator); when(jobRepository.getLastJobExecution(jobName, parameters)).thenReturn(jobExecution); when(stepExecution.getStatus()).thenReturn(status); when(jobExecution.getStepExecutions()).thenReturn(Arrays.asList(stepExecution)); //setup launcher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); //run jobLauncher.run(job, parameters); } }
@Bean public SimpleJobServiceFactoryBean simpleJobServiceFactoryBean(DataSource dataSource, JobRepositoryFactoryBean repositoryFactoryBean) throws Exception { SimpleJobServiceFactoryBean factoryBean = new SimpleJobServiceFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setJobRepository(repositoryFactoryBean.getObject()); factoryBean.setJobLocator(new MapJobRegistry()); factoryBean.setJobLauncher(new SimpleJobLauncher()); factoryBean.setDataSource(dataSource); return factoryBean; }
@Test public void testTaskExecutorRejects() throws Exception { final List<String> list = new ArrayList<>(); jobLauncher.setTaskExecutor(new TaskExecutor() { @Override public void execute(Runnable task) { list.add("execute"); throw new TaskRejectedException("Planned failure"); } }); JobExecution jobExecution = new JobExecution((JobInstance) null, (JobParameters) null); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn(null); when(jobRepository.createJobExecution(job.getName(), jobParameters)).thenReturn(jobExecution); jobRepository.update(jobExecution); jobLauncher.afterPropertiesSet(); try { jobLauncher.run(job, jobParameters); } finally { assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode()); } assertEquals(1, list.size()); }
@Override public void setJobRepository(JobRepository jobRepository) { super.setJobRepository(jobRepository); this.jobRepository = jobRepository; }
@Test(expected = JobParametersInvalidException.class) public void testRunWithValidator() throws Exception { job.setJobParametersValidator(new DefaultJobParametersValidator(new String[] { "missing-and-required" }, new String[0])); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn(null); jobLauncher.afterPropertiesSet(); jobLauncher.run(job, jobParameters); }
@Test public void testTaskExecutor() throws Exception { final List<String> list = new ArrayList<>(); jobLauncher.setTaskExecutor(new TaskExecutor() { @Override public void execute(Runnable task) { list.add("execute"); task.run(); } }); testRun(); assertEquals(1, list.size()); }
@Test public void testRunRestartableJobInstanceTwice() throws Exception { job = new JobSupport("foo") { @Override public boolean isRestartable() { return true; } @Override public void execute(JobExecution execution) { execution.setExitStatus(ExitStatus.COMPLETED); return; } }; testRun(); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn( new JobExecution(new JobInstance(1L, job.getName()), jobParameters)); when(jobRepository.createJobExecution(job.getName(), jobParameters)).thenReturn( new JobExecution(new JobInstance(1L, job.getName()), jobParameters)); jobLauncher.run(job, jobParameters); }
@Bean @Autowired public JobLauncher jobLauncher(JobRepository jobRepository) { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); jobLauncher.setTaskExecutor(taskExecutor()); return jobLauncher; }
@Bean public JobLauncher synchronousJobLauncher() { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository( getJobRepository() ); return jobLauncher; }
@Bean public SimpleJobServiceFactoryBean simpleJobServiceFactoryBean(DataSource dataSource, JobRepositoryFactoryBean repositoryFactoryBean, JobExplorer jobExplorer, PlatformTransactionManager dataSourceTransactionManager) throws Exception { SimpleJobServiceFactoryBean factoryBean = new SimpleJobServiceFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setJobRepository(repositoryFactoryBean.getObject()); factoryBean.setJobLocator(new MapJobRegistry()); factoryBean.setJobLauncher(new SimpleJobLauncher()); factoryBean.setDataSource(dataSource); factoryBean.setJobExplorer(jobExplorer); factoryBean.setTransactionManager(dataSourceTransactionManager); return factoryBean; }
@Override public void setJobRepository(JobRepository jobRepository) { super.setJobRepository(jobRepository); this.jobRepository = jobRepository; }
private void run(ExitStatus exitStatus) throws Exception { JobExecution jobExecution = new JobExecution((JobInstance) null, (JobParameters) null); when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn(null); when(jobRepository.createJobExecution(job.getName(), jobParameters)).thenReturn(jobExecution); jobLauncher.afterPropertiesSet(); try { jobLauncher.run(job, jobParameters); } finally { assertEquals(exitStatus, jobExecution.getExitStatus()); } }
public JobLauncher createJobLauncher() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(4); taskExecutor.setMaxPoolSize(4); taskExecutor.afterPropertiesSet(); SimpleJobLauncher launcher = (SimpleJobLauncher) super.createJobLauncher(); launcher.setTaskExecutor(taskExecutor); return launcher; }
@Test public void testRunNonRestartableJobInstanceTwice() throws Exception { job = new JobSupport("foo") { @Override public boolean isRestartable() { return false; } @Override public void execute(JobExecution execution) { execution.setExitStatus(ExitStatus.COMPLETED); return; } }; testRun(); try { when(jobRepository.getLastJobExecution(job.getName(), jobParameters)).thenReturn( new JobExecution(new JobInstance(1L, job.getName()), jobParameters)); jobLauncher.run(job, jobParameters); fail("Expected JobRestartException"); } catch (JobRestartException e) { // expected } }
@Test public void testInitialiseWithRepository() throws Exception { jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); jobLauncher.afterPropertiesSet(); // no error }