@Test public void testRestart() throws Exception { JobParametersBuilder paramBuilder = new JobParametersBuilder(); paramBuilder.addDate("value", new Date()); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), paramBuilder.toJobParameters()); job.execute(jobExecution); jobExecution = jobRepository.createJobExecution(job.getName(), paramBuilder.toJobParameters()); job.execute(jobExecution); int count = jobRepository.getStepExecutionCount(jobExecution.getJobInstance(), "simpleJob.step1"); assertEquals(2, count); } }
Assert.state(this.jobExplorer != null, "A JobExplorer is required to get next job parameters"); Assert.notNull(job, "Job must not be null"); Assert.notNull(job.getJobParametersIncrementer(), "No job parameters incrementer found for job=" + job.getName()); String name = job.getName(); JobParameters nextParameters; List<JobInstance> lastInstances = this.jobExplorer.getJobInstances(name, 0, 1); JobParametersIncrementer incrementer = job.getJobParametersIncrementer(); if (lastInstances.isEmpty()) {
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); } }
@Override public void run() { JsrJobContextFactoryBean factoryBean = null; try { factoryBean = (JsrJobContextFactoryBean) batchContext.getBean("&" + JSR_JOB_CONTEXT_BEAN_NAME); factoryBean.setJobExecution(jobExecution); final Job job = batchContext.getBean(Job.class); if(!job.isRestartable()) { throw new JobRestartException("Job " + jobName + " is not restartable"); } semaphore.release(); // Initialization of the JobExecution for job level dependencies jobRegistry.register(job, jobExecution); job.execute(jobExecution); jobRegistry.remove(jobExecution); } catch (Exception e) { exceptionHolder.add(e); } finally { if(factoryBean != null) { factoryBean.close(); } batchContext.close(); if(semaphore.availablePermits() == 0) { semaphore.release(); } } } });
/** * Just return the name of instance passed in on initialization. * * @see JobFactory#getJobName() */ @Override public String getJobName() { return job.getName(); }
@Override @Nullable public JobParametersIncrementer getJobParametersIncrementer() { return delegate.getJobParametersIncrementer(); }
@Override public void run() { job.execute(jobExecution); } }).start();
@Override public boolean isRestartable() { return delegate.isRestartable(); }
@Override public JobParametersValidator getJobParametersValidator() { return delegate.getJobParametersValidator(); }
/** * Just return the name of instance passed in on initialization. * * @see JobFactory#getJobName() */ @Override public String getJobName() { return job.getName(); }
@Override public JobParametersIncrementer getJobParametersIncrementer() { return delegate.getJobParametersIncrementer(); }
@Around("execution(void org.springframework.batch.core.Job+.execute(*)) && target(job) && args(jobExecution)") public void execute(Job job, JobExecution jobExecution) { JobSynchronizationManager.register(jobExecution); try { job.execute(jobExecution); } finally { JobSynchronizationManager.release(); } }
@Override public boolean isRestartable() { return delegate.isRestartable(); }
@Override public JobParametersValidator getJobParametersValidator() { return delegate.getJobParametersValidator(); }
@Test public void testSplitJob() throws Exception { assertNotNull(job); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals(4, jobExecution.getStepExecutions().size()); ArrayList<String> names = new ArrayList<>(((StepLocator) job).getStepNames()); Collections.sort(names); assertEquals("[s1, s2, s3, s4]", names.toString()); }
public JobExecution run(Job job, JobParameters jobParameters){ jobs.add(job); parameters.add(jobParameters); return new JobExecution(new JobInstance(jobId.getAndIncrement(), job.getName()), jobParameters); }
JobExecution lastExecution = jobRepository.getLastJobExecution(job.getName(), jobParameters); if (lastExecution != null) { if (!job.isRestartable()) { throw new JobRestartException("JobInstance already exists and is not restartable"); job.getJobParametersValidator().validate(jobParameters); jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
public JobParametersIncrementer getJobParametersIncrementer() { return delegate.getJobParametersIncrementer(); }
@Override public void afterPropertiesSet() throws Exception { JobExecution jobExecution = new JobExecution(11L); job.execute(jobExecution); // expect no errors }
@Override public boolean isRestartable() { return delegate.isRestartable(); }