BATCH-677: tidied up some loose ends with BatchStatus (e.g. PAUSED->WAITING).
This commit is contained in:
@@ -44,6 +44,42 @@ public class BatchStatusTests {
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.max(BatchStatus.FAILED,BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.max(BatchStatus.COMPLETED, BatchStatus.FAILED));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.max(BatchStatus.FAILED, BatchStatus.FAILED));
|
||||
assertEquals(BatchStatus.STARTED, BatchStatus.max(BatchStatus.STARTED, BatchStatus.STARTING));
|
||||
assertEquals(BatchStatus.STARTED, BatchStatus.max(BatchStatus.COMPLETED, BatchStatus.STARTED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpgradeStatusFinished() {
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.FAILED.upgradeTo(BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.COMPLETED.upgradeTo(BatchStatus.FAILED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpgradeStatusUnfinished() {
|
||||
assertEquals(BatchStatus.COMPLETED, BatchStatus.STARTING.upgradeTo(BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.COMPLETED, BatchStatus.COMPLETED.upgradeTo(BatchStatus.STARTING));
|
||||
assertEquals(BatchStatus.STARTED, BatchStatus.STARTING.upgradeTo(BatchStatus.STARTED));
|
||||
assertEquals(BatchStatus.STARTED, BatchStatus.STARTED.upgradeTo(BatchStatus.STARTING));
|
||||
assertEquals(BatchStatus.COMPLETED, BatchStatus.COMPLETED.upgradeTo(BatchStatus.WAITING));
|
||||
assertEquals(BatchStatus.STARTED, BatchStatus.STARTED.upgradeTo(BatchStatus.WAITING));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsRunning() {
|
||||
assertFalse(BatchStatus.FAILED.isRunning());
|
||||
assertFalse(BatchStatus.COMPLETED.isRunning());
|
||||
assertTrue(BatchStatus.STARTED.isRunning());
|
||||
assertTrue(BatchStatus.STARTING.isRunning());
|
||||
assertTrue(BatchStatus.WAITING.isRunning());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsUnsuccessful() {
|
||||
assertTrue(BatchStatus.FAILED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.COMPLETED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.STARTED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.STARTING.isUnsuccessful());
|
||||
assertFalse(BatchStatus.WAITING.isUnsuccessful());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -109,12 +109,34 @@ public class JobExecutionTests {
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pause()}.
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPause() {
|
||||
execution.pause();
|
||||
assertEquals(BatchStatus.PAUSED, execution.getStatus());
|
||||
public void testPauseAndWait() {
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.WAITING, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPauseAndWaitWhenFailed() {
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPauseAndWaitWhenStarted() {
|
||||
execution.setStatus(BatchStatus.STARTED);
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.WAITING, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -275,6 +275,49 @@ public class StepExecutionTests {
|
||||
assertEquals(exception, execution.getFailureExceptions().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPauseAndWait() {
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.WAITING, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPauseAndWaitWhenFailed() {
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#pauseAndWait()}.
|
||||
*/
|
||||
@Test
|
||||
public void testPauseAndWaitWhenStarted() {
|
||||
execution.setStatus(BatchStatus.STARTED);
|
||||
execution.pauseAndWait();
|
||||
assertEquals(BatchStatus.WAITING, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for
|
||||
* {@link org.springframework.batch.core.JobExecution#getStatus()}.
|
||||
*/
|
||||
@Test
|
||||
public void testDowngradeStatus() {
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.upgradeStatus(BatchStatus.COMPLETED);
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
}
|
||||
|
||||
private StepExecution newStepExecution(Step step, Long long2) {
|
||||
JobInstance job = new JobInstance(new Long(3), new JobParameters(), "testJob");
|
||||
StepExecution execution = new StepExecution(step.getName(), new JobExecution(job, long2), new Long(4));
|
||||
|
||||
@@ -76,6 +76,7 @@ public class SimpleJobExplorerTests extends TestCase {
|
||||
public void testGetStepExecution() throws Exception {
|
||||
expect(jobExecutionDao.getJobExecution(123L)).andReturn(jobExecution);
|
||||
expect(stepExecutionDao.getStepExecution(jobExecution, "foo")).andReturn(null);
|
||||
expect(stepExecutionDao.getStepExecutions(jobExecution)).andReturn(null);
|
||||
replay(jobExecutionDao, stepExecutionDao);
|
||||
jobExplorer.getStepExecution(123L,"foo");
|
||||
verify(jobExecutionDao, stepExecutionDao);
|
||||
|
||||
@@ -313,6 +313,16 @@ public class SimpleJobTests {
|
||||
ex.getMessage().indexOf("start limit exceeded") >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStepAlreadyComplete() throws Exception {
|
||||
stepExecution1.setStatus(BatchStatus.COMPLETED);
|
||||
jobRepository.add(stepExecution1);
|
||||
job.execute(jobExecution);
|
||||
assertEquals(0, jobExecution.getFailureExceptions().size());
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
assertEquals(stepExecution2.getStepName(), jobExecution.getStepExecutions().iterator().next().getStepName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoSteps() throws Exception {
|
||||
job.setSteps(new ArrayList<Step>());
|
||||
|
||||
@@ -265,7 +265,7 @@ public class FlowJobTests {
|
||||
if (!jobExecution.getAllFailureExceptions().isEmpty()) {
|
||||
throw jobExecution.getAllFailureExceptions().get(0);
|
||||
}
|
||||
assertEquals(BatchStatus.PAUSED, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.WAITING, jobExecution.getStatus());
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
|
||||
job.execute(jobExecution);
|
||||
|
||||
@@ -194,7 +194,7 @@ public class SimpleJobLauncherTests {
|
||||
public void testResumePausedInstance() throws Exception {
|
||||
long id = 9;
|
||||
JobExecution jobExecution = new JobExecution(null, id);
|
||||
jobExecution.pause();
|
||||
jobExecution.pauseAndWait();
|
||||
expect(jobRepository.getLastJobExecution(job.getName(), jobParameters)).andReturn(jobExecution);
|
||||
replay(jobRepository);
|
||||
|
||||
|
||||
@@ -402,7 +402,7 @@ public class SimpleJobOperatorTests {
|
||||
jobOperator.pause(111L);
|
||||
verify(jobExplorer);
|
||||
verify(jobRepository);
|
||||
assertEquals(BatchStatus.PAUSED, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.WAITING, jobExecution.getStatus());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class StepExecutionAggregatorTests {
|
||||
stepExecution2.setStatus(BatchStatus.COMPLETED);
|
||||
aggregator.aggregate(result, Arrays.<StepExecution> asList(stepExecution1, stepExecution2));
|
||||
assertNotNull(result);
|
||||
assertEquals(BatchStatus.COMPLETED, result.getStatus());
|
||||
assertEquals(BatchStatus.STARTING, result.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -224,6 +224,7 @@ public abstract class AbstractJobExecutionDaoTests extends AbstractTransactional
|
||||
JobExecution value = dao.getJobExecution(exec.getId());
|
||||
|
||||
assertEquals(exec, value);
|
||||
// N.B. the job instance is not re-hydrated in the JDBC case...
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -77,9 +77,10 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
dao = getStepExecutionDao();
|
||||
}
|
||||
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveExecutionAssignsIdAndVersion() throws Exception {
|
||||
|
||||
|
||||
assertNull(stepExecution.getId());
|
||||
assertNull(stepExecution.getVersion());
|
||||
dao.saveStepExecution(stepExecution);
|
||||
@@ -87,9 +88,10 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
assertNotNull(stepExecution.getVersion());
|
||||
}
|
||||
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveAndGetExecution() {
|
||||
|
||||
|
||||
stepExecution.setStatus(BatchStatus.STARTED);
|
||||
stepExecution.setReadSkipCount(7);
|
||||
stepExecution.setWriteSkipCount(5);
|
||||
@@ -102,18 +104,26 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
dao.saveStepExecution(stepExecution);
|
||||
|
||||
StepExecution retrieved = dao.getStepExecution(jobExecution, step.getName());
|
||||
|
||||
|
||||
assertStepExecutionsAreEqual(stepExecution, retrieved);
|
||||
assertNotNull(retrieved.getVersion());
|
||||
assertNotNull(retrieved.getJobExecution());
|
||||
assertNotNull(retrieved.getJobExecution().getId());
|
||||
|
||||
assertNotNull(retrieved.getJobExecution().getJobId());
|
||||
assertNotNull(retrieved.getJobExecution().getJobInstance());
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveAndGetNonExistentExecution() {
|
||||
assertNull(dao.getStepExecution(jobExecution, "not-existing step"));
|
||||
}
|
||||
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveAndFindExecution() {
|
||||
|
||||
|
||||
stepExecution.setStatus(BatchStatus.STARTED);
|
||||
stepExecution.setReadSkipCount(7);
|
||||
stepExecution.setWriteSkipCount(5);
|
||||
@@ -124,7 +134,8 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
assertStepExecutionsAreEqual(stepExecution, retrieved.get(0));
|
||||
}
|
||||
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testGetForNotExistingJobExecution() {
|
||||
assertNull(dao.getStepExecution(new JobExecution(jobInstance, (long) 777), step.getName()));
|
||||
}
|
||||
@@ -132,7 +143,8 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
/**
|
||||
* To-be-saved execution must not already have an id.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveExecutionWithIdAlreadySet() {
|
||||
stepExecution.setId((long) 7);
|
||||
try {
|
||||
@@ -147,7 +159,8 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
/**
|
||||
* To-be-saved execution must not already have a version.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testSaveExecutionWithVersionAlreadySet() {
|
||||
stepExecution.incrementVersion();
|
||||
try {
|
||||
@@ -163,7 +176,8 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
* Update and retrieve updated StepExecution - make sure the update is
|
||||
* reflected as expected and version number has been incremented
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testUpdateExecution() {
|
||||
stepExecution.setStatus(BatchStatus.STARTED);
|
||||
dao.saveStepExecution(stepExecution);
|
||||
@@ -184,7 +198,8 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
* Exception should be raised when the version of update argument doesn't
|
||||
* match the version of persisted entity.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testConcurrentModificationException() {
|
||||
step = new StepSupport("foo");
|
||||
|
||||
@@ -210,7 +225,7 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void assertStepExecutionsAreEqual(StepExecution expected, StepExecution actual) {
|
||||
assertEquals(expected.getId(), actual.getId());
|
||||
assertEquals(expected.getStartTime(), actual.getStartTime());
|
||||
|
||||
Reference in New Issue
Block a user