RESOLVED - issue BATCH-1086: JdbcJobExecutionDao.getRunningJobExecutions() ignores jobName
Change query to use job name.
This commit is contained in:
@@ -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());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user