Fix for Batch-40, SqlStepDao was not storing Exit-Code correctly.
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user