BATCH-677: tidied up some loose ends with BatchStatus (e.g. PAUSED->WAITING).

This commit is contained in:
dsyer
2008-11-17 14:34:44 +00:00
parent df3b9181e3
commit 1cf7cdad54
22 changed files with 308 additions and 76 deletions

View File

@@ -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

View File

@@ -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());
}
/**

View File

@@ -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));

View File

@@ -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);

View File

@@ -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>());

View File

@@ -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);

View File

@@ -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);

View File

@@ -402,7 +402,7 @@ public class SimpleJobOperatorTests {
jobOperator.pause(111L);
verify(jobExplorer);
verify(jobRepository);
assertEquals(BatchStatus.PAUSED, jobExecution.getStatus());
assertEquals(BatchStatus.WAITING, jobExecution.getStatus());
}
}

View File

@@ -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

View File

@@ -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...
}
/**

View File

@@ -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());