IN PROGRESS - BATCH-505: Job-level ExecutionContext
JobExecutionContext is now persisted (together with StepExecutionContext) and retrieved on restart (changed jobExecution's start time to be not null so that last execution can be always found).
This commit is contained in:
@@ -71,7 +71,6 @@ public class JobExecutionTests extends TestCase {
|
||||
* {@link org.springframework.batch.core.JobExecution#getStartTime()}.
|
||||
*/
|
||||
public void testGetStartTime() {
|
||||
assertNull(execution.getStartTime());
|
||||
execution.setStartTime(new Date(0L));
|
||||
assertEquals(0L, execution.getStartTime().getTime());
|
||||
}
|
||||
|
||||
@@ -164,6 +164,9 @@ public class SimpleJobTests extends TestCase {
|
||||
checkRepository(BatchStatus.COMPLETED);
|
||||
assertNotNull(jobExecution.getEndTime());
|
||||
assertNotNull(jobExecution.getStartTime());
|
||||
|
||||
assertTrue(step1.passedInJobContext.isEmpty());
|
||||
assertFalse(step2.passedInJobContext.isEmpty());
|
||||
}
|
||||
|
||||
public void testRunNormallyWithListener() throws Exception {
|
||||
@@ -342,8 +345,8 @@ public class SimpleJobTests extends TestCase {
|
||||
catch (RuntimeException e) {
|
||||
assertSame(exception, e);
|
||||
}
|
||||
assertTrue(step1.passedInContext.isEmpty());
|
||||
assertFalse(step2.passedInContext.isEmpty());
|
||||
assertTrue(step1.passedInStepContext.isEmpty());
|
||||
assertFalse(step2.passedInStepContext.isEmpty());
|
||||
|
||||
}
|
||||
|
||||
@@ -397,7 +400,9 @@ public class SimpleJobTests extends TestCase {
|
||||
|
||||
private JobRepository jobRepository;
|
||||
|
||||
private Properties passedInContext;
|
||||
private Properties passedInStepContext;
|
||||
|
||||
private Properties passedInJobContext;
|
||||
|
||||
/**
|
||||
* @param string
|
||||
@@ -427,8 +432,10 @@ public class SimpleJobTests extends TestCase {
|
||||
public void execute(StepExecution stepExecution) throws JobInterruptedException,
|
||||
UnexpectedJobExecutionException {
|
||||
|
||||
passedInContext = stepExecution.getExecutionContext().getProperties();
|
||||
stepExecution.getExecutionContext().putString("key", "value");
|
||||
passedInJobContext = stepExecution.getJobExecution().getExecutionContext().getProperties();
|
||||
passedInStepContext = stepExecution.getExecutionContext().getProperties();
|
||||
stepExecution.getExecutionContext().putString("stepKey", "stepValue");
|
||||
stepExecution.getJobExecution().getExecutionContext().putString("jobKey", "jobValue");
|
||||
jobRepository.saveOrUpdateExecutionContext(stepExecution);
|
||||
|
||||
if (exception instanceof RuntimeException) {
|
||||
|
||||
@@ -112,6 +112,16 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
|
||||
ExecutionContext retrieved = dao.findExecutionContext(execution);
|
||||
assertEquals(ctx, retrieved);
|
||||
}
|
||||
|
||||
public void testSaveAndFindEmptyContext() {
|
||||
dao.saveJobExecution(execution);
|
||||
ExecutionContext ctx = new ExecutionContext();
|
||||
execution.setExecutionContext(ctx);
|
||||
dao.saveOrUpdateExecutionContext(execution);
|
||||
|
||||
ExecutionContext retrieved = dao.findExecutionContext(execution);
|
||||
assertEquals(ctx, retrieved);
|
||||
}
|
||||
|
||||
public void testUpdateContext() {
|
||||
dao.saveJobExecution(execution);
|
||||
|
||||
@@ -161,6 +161,16 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
ExecutionContext retrieved = dao.findExecutionContext(stepExecution);
|
||||
assertEquals(ctx, retrieved);
|
||||
}
|
||||
|
||||
public void testSaveAndFindEmptyContext() {
|
||||
dao.saveStepExecution(stepExecution);
|
||||
ExecutionContext ctx = new ExecutionContext();
|
||||
stepExecution.setExecutionContext(ctx);
|
||||
dao.saveOrUpdateExecutionContext(stepExecution);
|
||||
|
||||
ExecutionContext retrieved = dao.findExecutionContext(stepExecution);
|
||||
assertEquals(ctx, retrieved);
|
||||
}
|
||||
|
||||
public void testUpdateContext() {
|
||||
dao.saveStepExecution(stepExecution);
|
||||
|
||||
@@ -89,7 +89,8 @@ public class SimpleJobRepositoryIntegrationTests extends AbstractTransactionalDa
|
||||
job.setRestartable(true);
|
||||
|
||||
JobExecution firstExecution = jobRepository.createJobExecution(job, jobParameters);
|
||||
firstExecution.setEndTime(new Date());
|
||||
firstExecution.setStartTime(new Date(0));
|
||||
firstExecution.setEndTime(new Date(1));
|
||||
jobRepository.saveOrUpdate(firstExecution);
|
||||
JobExecution secondExecution = jobRepository.createJobExecution(job, jobParameters);
|
||||
|
||||
@@ -163,6 +164,8 @@ public class SimpleJobRepositoryIntegrationTests extends AbstractTransactionalDa
|
||||
}
|
||||
};
|
||||
JobExecution jobExec = jobRepository.createJobExecution(job, jobParameters);
|
||||
jobExec.setStartTime(new Date(0));
|
||||
jobExec.setExecutionContext(ctx);
|
||||
Step step = new StepSupport("step1");
|
||||
StepExecution stepExec = new StepExecution(step.getName(), jobExec);
|
||||
stepExec.setExecutionContext(ctx);
|
||||
@@ -170,9 +173,13 @@ public class SimpleJobRepositoryIntegrationTests extends AbstractTransactionalDa
|
||||
jobRepository.saveOrUpdate(stepExec);
|
||||
jobRepository.saveOrUpdateExecutionContext(stepExec);
|
||||
|
||||
StepExecution retrievedExec = jobRepository.getLastStepExecution(jobExec.getJobInstance(), step);
|
||||
assertEquals(stepExec, retrievedExec);
|
||||
assertEquals(ctx, retrievedExec.getExecutionContext());
|
||||
StepExecution retrievedStepExec = jobRepository.getLastStepExecution(jobExec.getJobInstance(), step);
|
||||
assertEquals(stepExec, retrievedStepExec);
|
||||
assertEquals(ctx, retrievedStepExec.getExecutionContext());
|
||||
|
||||
// JobExecution retrievedJobExec = jobRepository.getLastJobExecution(jobExec.getJobInstance());
|
||||
// assertEquals(jobExec, retrievedJobExec);
|
||||
// assertEquals(ctx, retrievedJobExec.getExecutionContext());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -68,4 +68,12 @@ public class JobRepositorySupport implements JobRepository {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getJobExecutionCount(JobInstance jobInstance) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public JobExecution getLastJobExecution(JobInstance jobInstance) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user