@Override public JobExecution mapRow(ResultSet rs, int rowNum) throws SQLException { Long id = rs.getLong(1); String jobConfigurationLocation = rs.getString(10); JobExecution jobExecution; if (jobParameters == null) { jobParameters = getJobParameters(id); } if (jobInstance == null) { jobExecution = new JobExecution(id, jobParameters, jobConfigurationLocation); } else { jobExecution = new JobExecution(jobInstance, id, jobParameters, jobConfigurationLocation); } jobExecution.setStartTime(rs.getTimestamp(2)); jobExecution.setEndTime(rs.getTimestamp(3)); jobExecution.setStatus(BatchStatus.valueOf(rs.getString(4))); jobExecution.setExitStatus(new ExitStatus(rs.getString(5), rs.getString(6))); jobExecution.setCreateTime(rs.getTimestamp(7)); jobExecution.setLastUpdated(rs.getTimestamp(8)); jobExecution.setVersion(rs.getInt(9)); return jobExecution; }
/** * Test method for * {@link org.springframework.batch.core.JobExecution#getStartTime()}. */ @Test public void testGetStartTime() { execution.setStartTime(new Date(0L)); assertEquals(0L, execution.getStartTime().getTime()); }
private JobExecution createJobExecution(JobInstance jobInstance, BatchStatus status) { JobExecution jobExecution = new JobExecution(jobInstance, 1L, jobParameters, null); jobExecution.setStatus(status); jobExecution.setStartTime(new Date()); if (status != BatchStatus.STARTED) { jobExecution.setEndTime(new Date()); } return jobExecution; }
@Test(expected=JobExecutionIsRunningException.class) public void testAbandonJobRunning() throws Exception { JobExecution jobExecution = new JobExecution(5L); jobExecution.setStartTime(new Date(1L)); when(jobExplorer.getJobExecution(5L)).thenReturn(jobExecution); jsrJobOperator.abandon(5L); }
@Override public void run() { try { JobExecution execution = repository.createJobExecution(job.getName(), new JobParameters()); //simulate running execution execution.setStartTime(new Date()); repository.update(execution); cacheJobIds(execution); list.add(execution); Thread.sleep(1000); } catch (Exception e) { list.add(e); } } }).start();
@Test(expected = JobExecutionAlreadyRunningException.class) public void testCreateJobExecutionAlreadyRunning() throws Exception { jobExecution.setStatus(BatchStatus.STARTED); jobExecution.setStartTime(new Date()); jobExecution.setEndTime(null); when(jobInstanceDao.getJobInstance("foo", new JobParameters())).thenReturn(jobInstance); when(jobExecutionDao.findJobExecutions(jobInstance)).thenReturn(Arrays.asList(jobExecution)); jobRepository.createJobExecution("foo", new JobParameters()); }
/** * Save and find a job execution. */ @Transactional @Test public void testSaveAndFind() { execution.setStartTime(new Date(System.currentTimeMillis())); execution.setLastUpdated(new Date(System.currentTimeMillis())); execution.setExitStatus(ExitStatus.UNKNOWN); execution.setEndTime(new Date(System.currentTimeMillis())); dao.saveJobExecution(execution); List<JobExecution> executions = dao.findJobExecutions(jobInstance); assertEquals(1, executions.size()); assertEquals(execution, executions.get(0)); assertExecutionsAreEqual(execution, executions.get(0)); }
@Before public void onSetUpInTransaction() throws Exception { // Create job. jobInstance = jobInstanceDao.createJobInstance(jobName, jobParameters); // Create an execution jobExecutionStartTime = new Date(System.currentTimeMillis()); jobExecution = new JobExecution(jobInstance, jobParameters); jobExecution.setStartTime(jobExecutionStartTime); jobExecution.setStatus(BatchStatus.STARTED); jobExecutionDao.saveJobExecution(jobExecution); }
/** * Test method for * {@link org.springframework.batch.core.JobExecution#getEndTime()}. */ @Test public void testIsRunning() { execution.setStartTime(new Date()); assertTrue(execution.isRunning()); execution.setEndTime(new Date(100L)); assertFalse(execution.isRunning()); }
@Transactional @Test public void testOnlyOneJobExecutionAllowedRunning() throws Exception { job.setRestartable(true); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters); //simulating a running job execution jobExecution.setStartTime(new Date()); jobRepository.update(jobExecution); try { jobRepository.createJobExecution(job.getName(), jobParameters); fail(); } catch (JobExecutionAlreadyRunningException e) { // expected } }
/** * Test method for * {@link org.springframework.batch.core.JobExecution#getEndTime()}. */ @Test public void testIsRunningWithStoppedExecution() { execution.setStartTime(new Date()); assertTrue(execution.isRunning()); execution.stop(); assertTrue(execution.isRunning()); assertTrue(execution.isStopping()); }
exec.setStartTime(new Date(1L)); exec.setEndTime(new Date(2L)); exec.setLastUpdated(new Date(5L)); exec.setStartTime(new Date(2L)); exec.setLastUpdated(new Date(5L)); exec.createStepExecution("step");
@Transactional @Test public void testCreateAndFindWithNoStartDate() throws Exception { job.setRestartable(true); JobExecution firstExecution = jobRepository.createJobExecution(job.getName(), jobParameters); firstExecution.setStartTime(new Date(0)); firstExecution.setEndTime(new Date(1)); jobRepository.update(firstExecution); JobExecution secondExecution = jobRepository.createJobExecution(job.getName(), jobParameters); assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance()); assertEquals(job.getName(), secondExecution.getJobInstance().getJobName()); }
/** * Use the factory to create repository and check the explorer remembers * created executions. */ @Test public void testCreateExplorer() throws Exception { MapJobRepositoryFactoryBean repositoryFactory = new MapJobRepositoryFactoryBean(); JobRepository jobRepository = repositoryFactory.getObject(); JobExecution jobExecution = jobRepository.createJobExecution("foo", new JobParameters()); //simulating a running job execution jobExecution.setStartTime(new Date()); jobRepository.update(jobExecution); MapJobExplorerFactoryBean tested = new MapJobExplorerFactoryBean(repositoryFactory); tested.afterPropertiesSet(); JobExplorer explorer = tested.getObject(); assertEquals(1, explorer.findRunningJobExecutions("foo").size()); }
@Before public void setUp() throws Exception { JobInstance instance = new JobInstance(2L, "job name"); JobParameters params = new JobParametersBuilder().addString("key1", "value1").toJobParameters(); org.springframework.batch.core.JobExecution execution = new org.springframework.batch.core.JobExecution(instance, params); execution.setId(5L); execution.setCreateTime(new Date(0)); execution.setEndTime(new Date(999999999L)); execution.setExitStatus(new ExitStatus("exit status")); execution.setLastUpdated(new Date(12345)); execution.setStartTime(new Date(98765)); execution.setStatus(BatchStatus.FAILED); execution.setVersion(21); adapter = new JsrJobExecution(execution, new JobParametersConverterSupport()); }
/** * Use the factory to create repository and check the repository remembers * created executions. */ @Test public void testCreateRepository() throws Exception { tested.afterPropertiesSet(); JobRepository repository = tested.getObject(); Job job = new JobSupport("jobName"); JobParameters jobParameters = new JobParameters(); JobExecution jobExecution = repository.createJobExecution(job.getName(), jobParameters); // simulate a running execution jobExecution.setStartTime(new Date()); repository.update(jobExecution); try { repository.createJobExecution(job.getName(), jobParameters); fail("Expected JobExecutionAlreadyRunningException"); } catch (JobExecutionAlreadyRunningException e) { // expected } } }
/** * Modifications to saved entity do not affect the persisted object. */ @Test public void testPersistentCopy() { JobExecutionDao tested = new MapJobExecutionDao(); JobExecution jobExecution = new JobExecution(new JobInstance((long) 1, "mapJob"), new JobParameters()); assertNull(jobExecution.getStartTime()); tested.saveJobExecution(jobExecution); jobExecution.setStartTime(new Date()); JobExecution retrieved = tested.getJobExecution(jobExecution.getId()); assertNull(retrieved.getStartTime()); tested.updateJobExecution(jobExecution); jobExecution.setEndTime(new Date()); assertNull(retrieved.getEndTime()); }
@Transactional @Test public void testSaveExecutionContext() throws Exception { @SuppressWarnings("serial") ExecutionContext ctx = new ExecutionContext() { { putLong("crashedPosition", 7); } }; JobExecution jobExec = jobRepository.createJobExecution(job.getName(), jobParameters); jobExec.setStartTime(new Date(0)); jobExec.setExecutionContext(ctx); Step step = new StepSupport("step1"); StepExecution stepExec = new StepExecution(step.getName(), jobExec); stepExec.setExecutionContext(ctx); jobRepository.add(stepExec); StepExecution retrievedStepExec = jobRepository.getLastStepExecution(jobExec.getJobInstance(), step.getName()); assertEquals(stepExec, retrievedStepExec); assertEquals(ctx, retrievedStepExec.getExecutionContext()); // JobExecution retrievedJobExec = // jobRepository.getLastJobExecution(jobExec.getJobInstance()); // assertEquals(jobExec, retrievedJobExec); // assertEquals(ctx, retrievedJobExec.getExecutionContext()); }
@Transactional @Test public void testCreateAndFind() throws Exception { job.setRestartable(true); JobParametersBuilder builder = new JobParametersBuilder(); builder.addString("stringKey", "stringValue").addLong("longKey", 1L).addDouble("doubleKey", 1.1).addDate( "dateKey", new Date(1L)); JobParameters jobParams = builder.toJobParameters(); JobExecution firstExecution = jobRepository.createJobExecution(job.getName(), jobParams); firstExecution.setStartTime(new Date()); assertNotNull(firstExecution.getLastUpdated()); assertEquals(job.getName(), firstExecution.getJobInstance().getJobName()); jobRepository.update(firstExecution); firstExecution.setEndTime(new Date()); jobRepository.update(firstExecution); JobExecution secondExecution = jobRepository.createJobExecution(job.getName(), jobParams); assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance()); assertEquals(job.getName(), secondExecution.getJobInstance().getJobName()); }
@Transactional @Test public void testGetStepExecutionCountAndLastStepExecution() throws Exception { job.setRestartable(true); StepSupport step = new StepSupport("restartedStep"); // first execution JobExecution firstJobExec = jobRepository.createJobExecution(job.getName(), jobParameters); StepExecution firstStepExec = new StepExecution(step.getName(), firstJobExec); jobRepository.add(firstStepExec); assertEquals(1, jobRepository.getStepExecutionCount(firstJobExec.getJobInstance(), step.getName())); assertEquals(firstStepExec, jobRepository.getLastStepExecution(firstJobExec.getJobInstance(), step.getName())); // first execution failed firstJobExec.setStartTime(new Date(4)); firstStepExec.setStartTime(new Date(5)); firstStepExec.setStatus(BatchStatus.FAILED); firstStepExec.setEndTime(new Date(6)); jobRepository.update(firstStepExec); firstJobExec.setStatus(BatchStatus.FAILED); firstJobExec.setEndTime(new Date(7)); jobRepository.update(firstJobExec); // second execution JobExecution secondJobExec = jobRepository.createJobExecution(job.getName(), jobParameters); StepExecution secondStepExec = new StepExecution(step.getName(), secondJobExec); jobRepository.add(secondStepExec); assertEquals(2, jobRepository.getStepExecutionCount(secondJobExec.getJobInstance(), step.getName())); assertEquals(secondStepExec, jobRepository.getLastStepExecution(secondJobExec.getJobInstance(), step.getName())); }