IN PROGRESS - issue BATCH-453: Killed batches cannot be restarted
http://jira.springframework.org/browse/BATCH-453 Minor adjustments to repository dao's (JobExecution no longer needs instance and step execution)
This commit is contained in:
@@ -100,7 +100,7 @@ public class JobExecutionTests extends TestCase {
|
||||
* {@link org.springframework.batch.core.JobExecution#getJobId()}.
|
||||
*/
|
||||
public void testGetJobIdForNullJob() {
|
||||
execution = new JobExecution(null);
|
||||
execution = new JobExecution(null, null);
|
||||
assertEquals(null, execution.getJobId());
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,12 @@ import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author Lucas Ward
|
||||
*
|
||||
*/
|
||||
public class ClassPathXmlJobRegistryTests {
|
||||
|
||||
ClassPathXmlJobRegistry registry;
|
||||
|
||||
@@ -117,7 +117,7 @@ public class JobExplorerFactoryBeanTests {
|
||||
|
||||
expect(incrementerFactory.isSupportedIncrementerType("foo")).andReturn(true);
|
||||
expect(incrementerFactory.getSupportedIncrementerTypes()).andReturn(new String[0]);
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ")).andReturn(new StubIncrementer()).times(2);
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ")).andReturn(new StubIncrementer());
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_EXECUTION_SEQ")).andReturn(new StubIncrementer());
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ")).andReturn(new StubIncrementer());
|
||||
replay(incrementerFactory);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.springframework.batch.core.exlore.support;
|
||||
|
||||
import static org.easymock.EasyMock.createMock;
|
||||
import static org.easymock.EasyMock.*;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.batch.core.JobParameters;
|
||||
import org.springframework.batch.core.explore.support.SimpleJobExplorer;
|
||||
import org.springframework.batch.core.repository.dao.JobExecutionDao;
|
||||
import org.springframework.batch.core.repository.dao.JobInstanceDao;
|
||||
import org.springframework.batch.core.repository.dao.StepExecutionDao;
|
||||
|
||||
/**
|
||||
* Test {@link SimpleJobExplorer}.
|
||||
@@ -44,6 +45,8 @@ public class SimpleJobExplorerTests extends TestCase {
|
||||
JobExecutionDao jobExecutionDao;
|
||||
|
||||
JobInstanceDao jobInstanceDao;
|
||||
|
||||
StepExecutionDao stepExecutionDao;
|
||||
|
||||
JobInstance jobInstance = new JobInstance(111L, new JobParameters(), "job");
|
||||
|
||||
@@ -53,72 +56,76 @@ public class SimpleJobExplorerTests extends TestCase {
|
||||
|
||||
jobExecutionDao = createMock(JobExecutionDao.class);
|
||||
jobInstanceDao = createMock(JobInstanceDao.class);
|
||||
stepExecutionDao = createMock(StepExecutionDao.class);
|
||||
|
||||
jobExplorer = new SimpleJobExplorer(jobInstanceDao, jobExecutionDao);
|
||||
jobExplorer = new SimpleJobExplorer(jobInstanceDao, jobExecutionDao, stepExecutionDao);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetJobExecution() throws Exception {
|
||||
jobExecutionDao.getJobExecution(123L);
|
||||
EasyMock.expectLastCall().andReturn(jobExecution);
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
|
||||
expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(jobInstance);
|
||||
expect(stepExecutionDao.getStepExecutions(jobExecution)).andReturn(null);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
jobExplorer.getJobExecution(123L);
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindRunningJobExecutions() throws Exception {
|
||||
jobExecutionDao.findRunningJobExecutions("job");
|
||||
EasyMock.expectLastCall().andReturn(Collections.singleton(jobExecution));
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
expect(jobExecutionDao.findRunningJobExecutions("job")).andReturn(Collections.singleton(jobExecution));
|
||||
expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(jobInstance);
|
||||
expect(stepExecutionDao.getStepExecutions(jobExecution)).andReturn(null);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
jobExplorer.findRunningJobExecutions("job");
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindJobExecutions() throws Exception {
|
||||
jobExecutionDao.findJobExecutions(jobInstance);
|
||||
EasyMock.expectLastCall().andReturn(Collections.singletonList(jobExecution));
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
expect(jobExecutionDao.findJobExecutions(jobInstance)).andReturn(Collections.singletonList(jobExecution));
|
||||
expect(jobInstanceDao.getJobInstance(jobExecution)).andReturn(jobInstance);
|
||||
expect(stepExecutionDao.getStepExecutions(jobExecution)).andReturn(null);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
jobExplorer.findJobExecutions(jobInstance);
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetJobInstance() throws Exception {
|
||||
jobInstanceDao.getJobInstance(111L);
|
||||
EasyMock.expectLastCall().andReturn(jobInstance);
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
jobExplorer.getJobInstance(111L);
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetLastJobInstances() throws Exception {
|
||||
jobInstanceDao.getLastJobInstances("foo", 1);
|
||||
EasyMock.expectLastCall().andReturn(Collections.singletonList(jobInstance));
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
jobExplorer.getLastJobInstances("foo", 1);
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsJobInstanceFalse() throws Exception {
|
||||
jobInstanceDao.getJobInstance("foo", new JobParameters());
|
||||
EasyMock.expectLastCall().andReturn(null);
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
assertFalse(jobExplorer.isJobInstanceExists("foo", new JobParameters()));
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsJobInstanceTrue() throws Exception {
|
||||
jobInstanceDao.getJobInstance("foo", new JobParameters());
|
||||
EasyMock.expectLastCall().andReturn(jobInstance);
|
||||
EasyMock.replay(jobExecutionDao, jobInstanceDao);
|
||||
replay(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
assertTrue(jobExplorer.isJobInstanceExists("foo", new JobParameters()));
|
||||
EasyMock.verify(jobExecutionDao, jobInstanceDao);
|
||||
verify(jobExecutionDao, jobInstanceDao, stepExecutionDao);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class SimpleJobLauncherTests {
|
||||
@Test
|
||||
public void testRun() throws Exception {
|
||||
|
||||
JobExecution jobExecution = new JobExecution(null);
|
||||
JobExecution jobExecution = new JobExecution(null, null);
|
||||
|
||||
expect(jobRepository.createJobExecution(job, jobParameters)).andReturn(jobExecution);
|
||||
|
||||
|
||||
@@ -160,7 +160,6 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
|
||||
JobExecution value = values.iterator().next();
|
||||
assertEquals(exec, value);
|
||||
assertEquals(5L, value.getLastUpdated().getTime());
|
||||
assertEquals(1, value.getStepExecutions().size());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -193,7 +192,6 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
|
||||
JobExecution value = dao.getJobExecution(exec.getId());
|
||||
|
||||
assertEquals(exec, value);
|
||||
assertEquals(1, value.getStepExecutions().size());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,7 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
|
||||
private static final long DATE = 777;
|
||||
|
||||
private JobInstanceDao dao = new MapJobInstanceDao();
|
||||
protected JobInstanceDao dao = new MapJobInstanceDao();
|
||||
|
||||
private String fooJob = "foo";
|
||||
|
||||
@@ -149,5 +149,10 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
|
||||
assertNotNull(jobInstance.getVersion());
|
||||
}
|
||||
|
||||
|
||||
public void testGetJobInstanceByExecutionId(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package org.springframework.batch.core.repository.dao;
|
||||
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.JobInstance;
|
||||
import org.springframework.batch.core.JobParameters;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.junit.Assert;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
|
||||
@@ -14,5 +18,16 @@ public class JdbcJobInstanceDaoTests extends AbstractJobInstanceDaoTests {
|
||||
"BATCH_JOB_PARAMS", "BATCH_JOB_INSTANCE");
|
||||
return (JobInstanceDao) applicationContext.getBean("jobInstanceDao");
|
||||
}
|
||||
|
||||
|
||||
public void testFindJobInstanceByExecution(){
|
||||
|
||||
JobExecutionDao jobExecutionDao = (JobExecutionDao) applicationContext.getBean("jobExecutionDao");
|
||||
|
||||
JobInstance jobInstance = dao.createJobInstance("testInstance", new JobParameters());
|
||||
JobExecution jobExecution = new JobExecution(jobInstance, 2L);
|
||||
jobExecutionDao.saveJobExecution(jobExecution);
|
||||
|
||||
JobInstance returnedInstance = dao.getJobInstance(jobExecution);
|
||||
Assert.assertEquals(jobInstance, returnedInstance);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,9 +140,9 @@ public class JobRepositoryFactoryBeanTests {
|
||||
|
||||
expect(incrementerFactory.isSupportedIncrementerType("foo")).andReturn(true);
|
||||
expect(incrementerFactory.getSupportedIncrementerTypes()).andReturn(new String[0]);
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ")).andReturn(new StubIncrementer()).times(2);
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ")).andReturn(new StubIncrementer());
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_EXECUTION_SEQ")).andReturn(new StubIncrementer());
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ")).andReturn(new StubIncrementer()).times(2);
|
||||
expect(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ")).andReturn(new StubIncrementer());
|
||||
replay(incrementerFactory);
|
||||
|
||||
factory.afterPropertiesSet();
|
||||
|
||||
@@ -118,7 +118,7 @@ public class SimpleJobRepositoryTests {
|
||||
public void testSaveOrUpdateInvalidJobExecution() {
|
||||
|
||||
// failure scenario - must have job ID
|
||||
JobExecution jobExecution = new JobExecution(null);
|
||||
JobExecution jobExecution = new JobExecution(null, null);
|
||||
try {
|
||||
jobRepository.update(jobExecution);
|
||||
fail();
|
||||
|
||||
Reference in New Issue
Block a user