/** * Convenience method to get the current job parameters. * * @return the {@link JobParameters} from the enclosing job, or empty if * that is null */ public JobParameters getJobParameters() { if (jobExecution == null) { return new JobParameters(); } return jobExecution.getJobParameters(); }
/** * @return a new JobParameters object containing only a parameter for the * current timestamp, to ensure that the job instance will be unique */ private JobParameters makeUniqueJobParameters() { Map<String, JobParameter> parameters = new HashMap<>(); parameters.put("timestamp", new JobParameter(new Date().getTime())); return new JobParameters(parameters); } }
@Test(expected = JobInstanceAlreadyCompleteException.class) public void testCreateJobExecutionAlreadyComplete() throws Exception { jobExecution.setStatus(BatchStatus.COMPLETED); jobExecution.setEndTime(new Date()); when(jobInstanceDao.getJobInstance("foo", new JobParameters())).thenReturn(jobInstance); when(jobExecutionDao.findJobExecutions(jobInstance)).thenReturn(Arrays.asList(jobExecution)); jobRepository.createJobExecution("foo", new JobParameters()); }
@Test public void testSerializeEmptyJobParameters() throws IOException { Map<String, Object> m1 = new HashMap<>(); m1.put("params", new JobParameters()); Map<String, Object> m2 = serializationRoundTrip(m1); compareContexts(m1, m2); }
@Test public void testHashCodeEqualWhenEmpty() throws Exception { int code = new JobParameters().hashCode(); assertEquals(code, new JobParameters().hashCode()); }
@Test public void testWildcardPrefix() { MapJobInstanceDao mapJobInstanceDao = new MapJobInstanceDao(); mapJobInstanceDao.createJobInstance("testJob", new JobParameters()); mapJobInstanceDao.createJobInstance("Jobtest", new JobParameters()); List<JobInstance> jobInstances = mapJobInstanceDao.findJobInstancesByName("*Job", 0, 2); assertTrue("Invalid matching job instances found, expected 1, got: " + jobInstances.size(), jobInstances.size() == 1); }
@Test public void testGetNullString() { parameters = new JobParameters(Collections.singletonMap("string.key1", new JobParameter((String) null, true))); assertNull(parameters.getDate("string.key1")); }
@Test public void testGetNullDate() { parameters = new JobParameters(Collections.singletonMap("date.key1", new JobParameter((Date)null, true))); assertNull(parameters.getDate("date.key1")); }
@Test public void testGetStepExecutionSummariesNoSuchExecution() throws Exception { jobParameters = new JobParameters(); jobExplorer.getJobExecution(111L); try { jobOperator.getStepExecutionSummaries(111L); fail("Expected NoSuchJobExecutionException"); } catch (NoSuchJobExecutionException e) { // expected } }
@Test public void testGetLastInstancesNoSuchJob() throws Exception { jobParameters = new JobParameters(); jobExplorer.getJobInstances("no-such-job", 0, 2); try { jobOperator.getJobInstances("no-such-job", 0, 2); fail("Expected NoSuchJobException"); } catch (NoSuchJobException e) { // expected } }
protected void runStep(Step step) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobInterruptedException { JobExecution jobExecution = repository.createJobExecution("job1", new JobParameters()); stepExecution = new StepExecution("step1", jobExecution); repository.add(stepExecution); step.execute(stepExecution); }
@Test public void testFailedStepOnError() throws Exception { JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", new JobParameter("error")))); assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); assertEquals(9, stepExecution.getReadCount()); // In principle the write count could be more than 2 and less than 9... assertEquals(7, stepExecution.getWriteCount()); }
@Transactional @Test public void testCreationAddsVersion() { JobInstance jobInstance = new JobInstance((long) 1, "testVersionAndId"); assertNull(jobInstance.getVersion()); jobInstance = dao.createJobInstance("testVersion", new JobParameters()); assertNotNull(jobInstance.getVersion()); }
@Test public void testFindOrCreateJob() throws Exception { job.setName("foo"); int before = 0; JobExecution execution = repository.createJobExecution(job.getName(), new JobParameters()); int after = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE", Integer.class); assertEquals(before + 1, after); assertNotNull(execution.getId()); }
@Test public void testSunnyDayFaultTolerant() throws Exception { JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", new JobParameter("3")))); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); assertEquals(9, stepExecution.getReadCount()); assertEquals(9, stepExecution.getWriteCount()); }
@Test public void testFlowJob() throws Exception { assertNotNull(job1); JobExecution jobExecution = jobRepository.createJobExecution(job1.getName(), new JobParameters()); job1.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); List<String> stepNames = getStepNames(jobExecution); assertEquals(4, stepNames.size()); assertEquals("[s1, s2, s3, s4]", stepNames.toString()); }
@Test public void testFlowInSplit() throws Exception { assertNotNull(job4); JobExecution jobExecution = jobRepository.createJobExecution(job4.getName(), new JobParameters()); job4.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); List<String> stepNames = getStepNames(jobExecution); assertEquals(4, stepNames.size()); assertEquals("[s2, s3, s2, s3]", stepNames.toString()); }
@Test public void testRepeatedFlow() throws Exception { assertNotNull(job3); JobExecution jobExecution = jobRepository.createJobExecution(job3.getName(), new JobParameters()); job3.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); List<String> stepNames = getStepNames(jobExecution); assertEquals(6, stepNames.size()); assertEquals("[job3.flow, s2, s3, job3.flow, s2, s3]", stepNames.toString()); }
@Test public void testDecisionState() throws Exception { assertNotNull(job); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals(1, jobExecution.getStepExecutions().size()); }
@Test public void testMultiListenerSimpleStep() throws Exception { bootstrap(MultiListenerTestConfiguration.class); JobExecution execution = jobLauncher.run(job, new JobParameters()); assertEquals(BatchStatus.FAILED, execution.getStatus()); assertEquals(1, callChecker.beforeStepCalled); assertEquals(1, callChecker.beforeChunkCalled); assertEquals(1, callChecker.beforeWriteCalled); assertEquals(0, callChecker.skipInWriteCalled); }