Fix for Batch-40, SqlStepDao was not storing Exit-Code correctly.

This commit is contained in:
lucasward
2007-09-19 04:06:34 +00:00
parent 6b72d3933a
commit 464b1393b6
3 changed files with 29 additions and 8 deletions

View File

@@ -69,10 +69,10 @@ public class SqlJobDao implements JobDao, InitializingBean {
// Job Execution SqlStatements
private static final String UPDATE_JOB_EXECUTION = "UPDATE %PREFIX%JOB_EXECUTION set START_TIME = ?, END_TIME = ?, "
+ " STATUS = ? where ID = ?";
+ " STATUS = ?, EXIT_CODE = ? where ID = ?";
private static final String SAVE_JOB_EXECUTION = "INSERT into %PREFIX%JOB_EXECUTION(ID, JOB_ID, START_TIME, END_TIME, STATUS)"
+ " values (?, ?, ?, ?, ?)";
private static final String SAVE_JOB_EXECUTION = "INSERT into %PREFIX%JOB_EXECUTION(ID, JOB_ID, START_TIME, " +
"END_TIME, STATUS, EXIT_CODE) values (?, ?, ?, ?, ?, ?)";
private static final String CHECK_JOB_EXECUTION_EXISTS = "SELECT COUNT(*) FROM %PREFIX%JOB_EXECUTION WHERE ID=?";
@@ -190,7 +190,8 @@ public class SqlJobDao implements JobDao, InitializingBean {
jobExecution.setId(new Long(jobExecutionIncrementer.nextLongValue()));
Object[] parameters = new Object[] { jobExecution.getId(),
jobExecution.getJobId(), jobExecution.getStartTime(),
jobExecution.getEndTime(), jobExecution.getStatus().toString() };
jobExecution.getEndTime(), jobExecution.getStatus().toString(),
jobExecution.getExitCode()};
jdbcTemplate.update(getSaveJobExecutionQuery(), parameters);
}
@@ -208,7 +209,7 @@ public class SqlJobDao implements JobDao, InitializingBean {
Object[] parameters = new Object[] { jobExecution.getStartTime(),
jobExecution.getEndTime(), jobExecution.getStatus().toString(),
jobExecution.getId() };
jobExecution.getExitCode(), jobExecution.getId() };
if (jobExecution.getId() == null) {
throw new IllegalArgumentException(

View File

@@ -175,7 +175,7 @@ public class DefaultJobExecutorTests extends TestCase {
});
jobExecutor.run(jobConfiguration, jobExecutionContext);
assertEquals(2, list.size());
checkRepository(BatchStatus.COMPLETED);
checkRepository(BatchStatus.COMPLETED, ExitStatus.FINISHED.getExitCode());
}

View File

@@ -40,7 +40,7 @@ import org.springframework.util.ClassUtils;
public abstract class AbstractJobDaoTests extends
AbstractTransactionalDataSourceSpringContextTests {
private static final String GET_JOB_EXECUTION = "SELECT JOB_ID, START_TIME, END_TIME, STATUS from "
private static final String GET_JOB_EXECUTION = "SELECT JOB_ID, START_TIME, END_TIME, STATUS, EXIT_CODE from "
+ "BATCH_JOB_EXECUTION where ID = ?";
protected JobDao jobDao;
@@ -164,12 +164,21 @@ public abstract class AbstractJobDaoTests extends
public void testUpdateJobExecution() {
jobExecution.setStatus(BatchStatus.COMPLETED);
jobExecution.setExitCode("COMPLETED");
jobExecution.setEndTime(new Timestamp(System.currentTimeMillis()));
jobDao.update(jobExecution);
List executions = retrieveJobExecution(jobExecution.getId());
assertEquals(executions.size(), 1);
assertEquals(jobExecution, ((JobExecution) executions.get(0)));
validateJobExecution(jobExecution, (JobExecution) executions.get(0));
}
public void testSaveJobExecution(){
List executions = retrieveJobExecution(jobExecution.getId());
assertEquals(executions.size(), 1);
validateJobExecution(jobExecution, (JobExecution) executions.get(0));
}
public void testUpdateInvalidJobExecution() {
@@ -231,6 +240,16 @@ public abstract class AbstractJobDaoTests extends
assertEquals(job.getName(), ((Map) jobs.get(0)).get("JOB_NAME"));
}
private void validateJobExecution(JobExecution lhs, JobExecution rhs){
//equals operator only checks id
assertEquals(lhs, rhs);
assertEquals(lhs.getStartTime(), rhs.getStartTime());
assertEquals(lhs.getEndTime(), rhs.getEndTime());
assertEquals(lhs.getStatus(), rhs.getStatus());
assertEquals(lhs.getExitCode(), rhs.getExitCode());
}
private List retrieveJobExecution(final Long id) {
@@ -242,6 +261,7 @@ public abstract class AbstractJobDaoTests extends
execution.setStartTime(rs.getTimestamp(2));
execution.setEndTime(rs.getTimestamp(3));
execution.setStatus(BatchStatus.getStatus(rs.getString(4)));
execution.setExitCode(rs.getString(5));
execution.setId(id);
return execution;