RESOLVED - issue BATCH-1086: JdbcJobExecutionDao.getRunningJobExecutions() ignores jobName

Change query to use job name.
This commit is contained in:
dsyer
2009-02-18 12:54:08 +00:00
parent 7d11d3bff4
commit 7a8598e244
5 changed files with 43 additions and 16 deletions

View File

@@ -20,23 +20,24 @@ import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.StepExecution;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
public abstract class AbstractJobExecutionDaoTests extends AbstractTransactionalJUnit4SpringContextTests {
public abstract class AbstractJobExecutionDaoTests {
protected JobExecutionDao dao;
protected JobInstance jobInstance = new JobInstance(1L, new JobParameters(), "execTestJob");
protected JobInstance jobInstance;
protected JobExecution execution = new JobExecution(jobInstance);
protected JobExecution execution;
/**
* @return tested object ready for use
*/
protected abstract JobExecutionDao getJobExecutionDao();
protected abstract JobInstanceDao getJobInstanceDao();
/**
* @return tested object ready for use
*/
@@ -47,6 +48,8 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
@Before
public void onSetUp() throws Exception {
dao = getJobExecutionDao();
jobInstance = getJobInstanceDao().createJobInstance("execTestJob", new JobParameters());
execution = new JobExecution(jobInstance);
}
/**
@@ -172,27 +175,32 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
@Transactional
@Test
public void testFindRunningExecutions() {
JobExecution exec = new JobExecution(jobInstance);
exec.setCreateTime(new Date(0));
exec.setEndTime(new Date(1L));
exec.setLastUpdated(new Date(5L));
dao.saveJobExecution(exec);
exec = new JobExecution(jobInstance);
exec.setLastUpdated(new Date(5L));
exec.createStepExecution("step");
dao.saveJobExecution(exec);
StepExecutionDao stepExecutionDao = getStepExecutionDao();
if (stepExecutionDao != null) {
for (StepExecution stepExecution : exec.getStepExecutions()) {
stepExecutionDao.saveStepExecution(stepExecution);
}
}
Set<JobExecution> values = dao.findRunningJobExecutions(exec.getJobInstance().getJobName());
assertEquals(1, values.size());
JobExecution value = values.iterator().next();
assertEquals(exec, value);
assertEquals(5L, value.getLastUpdated().getTime());
}
/**

View File

@@ -22,7 +22,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import org.junit.Before;

View File

@@ -1,10 +1,13 @@
package org.springframework.batch.core.repository.dao;
import javax.sql.DataSource;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.jdbc.SimpleJdbcTestUtils;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "sql-dao-test.xml" })
@@ -16,16 +19,26 @@ public class JdbcJobExecutionDaoTests extends AbstractJobExecutionDaoTests {
@Autowired
private JobExecutionDao jobExecutionDao;
@Autowired
private JobInstanceDao jobInstanceDao;
private SimpleJdbcTemplate simpleJdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
@Override
protected JobInstanceDao getJobInstanceDao() {
return jobInstanceDao;
}
@Override
protected JobExecutionDao getJobExecutionDao() {
deleteFromTables("BATCH_JOB_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION", "BATCH_JOB_EXECUTION", "BATCH_JOB_PARAMS",
SimpleJdbcTestUtils.deleteFromTables(simpleJdbcTemplate, "BATCH_JOB_EXECUTION_CONTEXT",
"BATCH_STEP_EXECUTION_CONTEXT", "BATCH_STEP_EXECUTION", "BATCH_JOB_EXECUTION", "BATCH_JOB_PARAMS",
"BATCH_JOB_INSTANCE");
// job instance needs to exist before job execution can be created
simpleJdbcTemplate
.getJdbcOperations()
.execute(
"insert into BATCH_JOB_INSTANCE (JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) values (1,'execTestJob', '', 0)");
return jobExecutionDao;
}
@@ -33,5 +46,5 @@ public class JdbcJobExecutionDaoTests extends AbstractJobExecutionDaoTests {
protected StepExecutionDao getStepExecutionDao() {
return stepExecutionDao;
}
}

View File

@@ -14,11 +14,17 @@ import static org.junit.Assert.*;
@RunWith(JUnit4ClassRunner.class)
public class MapJobExecutionDaoTests extends AbstractJobExecutionDaoTests {
@Override
protected JobExecutionDao getJobExecutionDao() {
MapJobExecutionDao.clear();
MapJobInstanceDao.clear();
return new MapJobExecutionDao();
}
@Override
protected JobInstanceDao getJobInstanceDao() {
return new MapJobInstanceDao();
}
/**
* Modifications to saved entity do not affect the persisted object.