BATCH-1011: Refactor BatchStatus again so that FAILED has the same meaning as before (1.1.x etc.) and ABANDONED is introduced to signify a step that failed but does not need to be replayed on restart (formerly known as INCOMPLETE).
This commit is contained in:
@@ -40,22 +40,22 @@ public class BatchStatusTests {
|
||||
*/
|
||||
@Test
|
||||
public void testToString() {
|
||||
assertEquals("FAILED", BatchStatus.FAILED.toString());
|
||||
assertEquals("ABANDONED", BatchStatus.ABANDONED.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMaxStatus() {
|
||||
assertEquals(BatchStatus.INCOMPLETE, BatchStatus.max(BatchStatus.INCOMPLETE,BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.INCOMPLETE, BatchStatus.max(BatchStatus.COMPLETED, BatchStatus.INCOMPLETE));
|
||||
assertEquals(BatchStatus.INCOMPLETE, BatchStatus.max(BatchStatus.INCOMPLETE, BatchStatus.INCOMPLETE));
|
||||
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.INCOMPLETE, BatchStatus.INCOMPLETE.upgradeTo(BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.INCOMPLETE, BatchStatus.COMPLETED.upgradeTo(BatchStatus.INCOMPLETE));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.FAILED.upgradeTo(BatchStatus.COMPLETED));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.COMPLETED.upgradeTo(BatchStatus.FAILED));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -68,7 +68,7 @@ public class BatchStatusTests {
|
||||
|
||||
@Test
|
||||
public void testIsRunning() {
|
||||
assertFalse(BatchStatus.INCOMPLETE.isRunning());
|
||||
assertFalse(BatchStatus.FAILED.isRunning());
|
||||
assertFalse(BatchStatus.COMPLETED.isRunning());
|
||||
assertTrue(BatchStatus.STARTED.isRunning());
|
||||
assertTrue(BatchStatus.STARTING.isRunning());
|
||||
@@ -76,7 +76,7 @@ public class BatchStatusTests {
|
||||
|
||||
@Test
|
||||
public void testIsUnsuccessful() {
|
||||
assertTrue(BatchStatus.INCOMPLETE.isUnsuccessful());
|
||||
assertTrue(BatchStatus.FAILED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.COMPLETED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.STARTED.isUnsuccessful());
|
||||
assertFalse(BatchStatus.STARTING.isUnsuccessful());
|
||||
@@ -84,7 +84,7 @@ public class BatchStatusTests {
|
||||
|
||||
@Test
|
||||
public void testGetStatus() {
|
||||
assertEquals(BatchStatus.INCOMPLETE, BatchStatus.valueOf(BatchStatus.INCOMPLETE.toString()));
|
||||
assertEquals(BatchStatus.FAILED, BatchStatus.valueOf(BatchStatus.FAILED.toString()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -113,9 +113,9 @@ public class JobExecutionTests {
|
||||
*/
|
||||
@Test
|
||||
public void testDowngradeStatus() {
|
||||
execution.setStatus(BatchStatus.INCOMPLETE);
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.upgradeStatus(BatchStatus.COMPLETED);
|
||||
assertEquals(BatchStatus.INCOMPLETE, execution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -286,9 +286,9 @@ public class StepExecutionTests {
|
||||
*/
|
||||
@Test
|
||||
public void testDowngradeStatus() {
|
||||
execution.setStatus(BatchStatus.INCOMPLETE);
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.upgradeStatus(BatchStatus.COMPLETED);
|
||||
assertEquals(BatchStatus.INCOMPLETE, execution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
}
|
||||
|
||||
private StepExecution newStepExecution(Step step, Long long2) {
|
||||
|
||||
@@ -46,7 +46,7 @@ public class OsgiBundleXmlApplicationContextFactoryTests {
|
||||
expect(bundleContext.getBundle()).andReturn(bundle).anyTimes();
|
||||
replay(bundleContext, bundle);
|
||||
factory.setBundleContext(bundleContext);
|
||||
// TODO: finish this...
|
||||
// TODO: mock out the OSGi bundle resource...
|
||||
// factory.createApplicationContext();
|
||||
verify(bundleContext, bundle);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class DefaultFailureJobParserTests extends AbstractJobParserTests {
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
@@ -52,7 +52,7 @@ public class DefaultFailureJobParserTests extends AbstractJobParserTests {
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class EndTransitionDefaultStatusJobParserTests extends AbstractJobParserT
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution1.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution1.getExitStatus().getExitCode());
|
||||
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class EndTransitionJobParserTests extends AbstractJobParserTests {
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
//
|
||||
|
||||
@@ -17,7 +17,6 @@ package org.springframework.batch.core.configuration.xml;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -25,7 +24,6 @@ import org.springframework.batch.core.BatchStatus;
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -50,28 +48,27 @@ public class FailTransitionJobParserTests extends AbstractJobParserTests {
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals("EARLY TERMINATION (FAIL)", jobExecution.getExitStatus().getExitCode());
|
||||
assertEquals("EARLY TERMINATION (FAIL)", jobExecution.getExitStatus()
|
||||
.getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2
|
||||
.getExitStatus().getExitCode());
|
||||
|
||||
//
|
||||
// Second Launch
|
||||
//
|
||||
stepNamesList.clear();
|
||||
try {
|
||||
jobExecution = createJobExecution();
|
||||
fail("JobInstanceAlreadyCompleteException expected");
|
||||
} catch (JobInstanceAlreadyCompleteException e) {
|
||||
//
|
||||
// Expected
|
||||
//
|
||||
}
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public class NextAttributeJobParserTests extends AbstractJobParserTests {
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals("FAILED", jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
@@ -53,7 +53,7 @@ public class NextAttributeJobParserTests extends AbstractJobParserTests {
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ public class SplitDifferentResultsFailFirstJobParserTests extends AbstractJobPar
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
@@ -52,7 +52,7 @@ public class SplitDifferentResultsFailFirstJobParserTests extends AbstractJobPar
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class SplitDifferentResultsFailSecondJobParserTests extends AbstractJobPa
|
||||
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(3, stepNamesList.size());
|
||||
assertEquals("Wrong step anmes: "+stepNamesList, 3, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
assertTrue(stepNamesList.contains("s3"));
|
||||
@@ -53,7 +53,7 @@ public class SplitDifferentResultsFailSecondJobParserTests extends AbstractJobPa
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution1.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution2.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution2.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution3 = getStepExecution(jobExecution, "s3");
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright 2006-2007 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.configuration.xml;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.batch.core.BatchStatus;
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
/**
|
||||
* @author Dave Syer
|
||||
*
|
||||
*/
|
||||
@ContextConfiguration
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
public class StopAndRestartJobParserTests extends AbstractJobParserTests {
|
||||
|
||||
@Test
|
||||
public void testStopIncomplete() throws Exception {
|
||||
|
||||
//
|
||||
// First Launch
|
||||
//
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.STOPPED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED.getExitCode(), stepExecution1.getExitStatus().getExitCode());
|
||||
|
||||
//
|
||||
// Second Launch
|
||||
//
|
||||
stepNamesList.clear();
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertEquals(1, stepNamesList.size()); // step1 is not executed
|
||||
assertTrue(stepNamesList.contains("s2"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
|
||||
StepExecution stepExecution2 = getStepExecution(jobExecution, "s2");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution2.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, stepExecution2.getExitStatus());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,7 +24,6 @@ import org.springframework.batch.core.BatchStatus;
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.core.job.flow.JobExecutionDecider;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -44,14 +43,14 @@ public class StopIncompleteJobParserTests extends AbstractJobParserTests {
|
||||
//
|
||||
JobExecution jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertTrue("Wrong steps executed: "+stepNamesList, stepNamesList.contains("fail"));
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("fail"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.STOPPED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "fail");
|
||||
assertEquals(BatchStatus.FAILED, stepExecution1.getStatus());
|
||||
assertEquals(BatchStatus.ABANDONED, stepExecution1.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution1.getExitStatus().getExitCode());
|
||||
|
||||
//
|
||||
@@ -60,8 +59,8 @@ public class StopIncompleteJobParserTests extends AbstractJobParserTests {
|
||||
stepNamesList.clear();
|
||||
jobExecution = createJobExecution();
|
||||
job.execute(jobExecution);
|
||||
assertTrue("Wrong steps executed: "+stepNamesList, stepNamesList.contains("s2"));
|
||||
assertEquals(1, stepNamesList.size()); // step1 is not executed
|
||||
assertTrue(stepNamesList.contains("s2"));
|
||||
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
@@ -72,10 +71,4 @@ public class StopIncompleteJobParserTests extends AbstractJobParserTests {
|
||||
|
||||
}
|
||||
|
||||
public static class TestDecider implements JobExecutionDecider {
|
||||
public String decide(JobExecution jobExecution, StepExecution stepExecution) {
|
||||
return "FOO";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,8 +47,8 @@ public class StopJobParserTests extends AbstractJobParserTests {
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.STOPPED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
|
||||
@@ -61,8 +61,8 @@ public class StopRestartOnCompletedStepJobParserTests extends AbstractJobParserT
|
||||
assertEquals(1, stepNamesList.size());
|
||||
assertTrue(stepNamesList.contains("s1"));
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(ExitStatus.STOPPED.getExitCode(), jobExecution.getExitStatus().getExitCode());
|
||||
|
||||
StepExecution stepExecution1 = getStepExecution(jobExecution, "s1");
|
||||
assertEquals(BatchStatus.COMPLETED, stepExecution1.getStatus());
|
||||
|
||||
@@ -140,7 +140,7 @@ public class AbstractJobTests {
|
||||
|
||||
// simulate restart and check the job execution context's content survives
|
||||
execution.setEndTime(new Date());
|
||||
execution.setStatus(BatchStatus.INCOMPLETE);
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
repository.update(execution);
|
||||
|
||||
JobExecution restarted = repository.createJobExecution("testHandleStepJob", new JobParameters());
|
||||
|
||||
@@ -248,10 +248,10 @@ public class SimpleJobTests {
|
||||
final JobInterruptedException exception = new JobInterruptedException("Interrupt!");
|
||||
step1.setProcessException(exception);
|
||||
job.execute(jobExecution);
|
||||
assertEquals(2, jobExecution.getAllFailureExceptions().size());
|
||||
assertEquals(1, jobExecution.getAllFailureExceptions().size());
|
||||
assertEquals(exception, jobExecution.getStepExecutions().iterator().next().getFailureExceptions().get(0));
|
||||
assertEquals(0, list.size());
|
||||
checkRepository(BatchStatus.INCOMPLETE, ExitStatus.FAILED);
|
||||
checkRepository(BatchStatus.STOPPED, ExitStatus.STOPPED);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -265,8 +265,8 @@ public class SimpleJobTests {
|
||||
assertEquals(1, jobExecution.getAllFailureExceptions().size());
|
||||
assertEquals(exception, jobExecution.getAllFailureExceptions().get(0));
|
||||
assertEquals(0, list.size());
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
checkRepository(BatchStatus.INCOMPLETE, ExitStatus.FAILED);
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
checkRepository(BatchStatus.FAILED, ExitStatus.FAILED);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -283,7 +283,7 @@ public class SimpleJobTests {
|
||||
assertEquals(1, jobExecution.getAllFailureExceptions().size());
|
||||
assertEquals(exception, jobExecution.getAllFailureExceptions().get(0));
|
||||
assertEquals(1, list.size());
|
||||
checkRepository(BatchStatus.INCOMPLETE, ExitStatus.FAILED);
|
||||
checkRepository(BatchStatus.FAILED, ExitStatus.FAILED);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -297,7 +297,7 @@ public class SimpleJobTests {
|
||||
assertEquals(1, jobExecution.getAllFailureExceptions().size());
|
||||
assertEquals(exception, jobExecution.getAllFailureExceptions().get(0));
|
||||
assertEquals(0, list.size());
|
||||
checkRepository(BatchStatus.INCOMPLETE, ExitStatus.FAILED);
|
||||
checkRepository(BatchStatus.FAILED, ExitStatus.FAILED);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -352,7 +352,7 @@ public class SimpleJobTests {
|
||||
job.execute(jobExecution);
|
||||
|
||||
assertEquals(0, list.size());
|
||||
checkRepository(BatchStatus.INCOMPLETE, ExitStatus.NOOP);
|
||||
checkRepository(BatchStatus.FAILED, ExitStatus.NOOP);
|
||||
ExitStatus exitStatus = jobExecution.getExitStatus();
|
||||
assertEquals(ExitStatus.NOOP.getExitCode(), exitStatus.getExitCode());
|
||||
}
|
||||
@@ -386,7 +386,7 @@ public class SimpleJobTests {
|
||||
job.setJobExecutionListeners(new JobExecutionListener[] { listener });
|
||||
|
||||
job.execute(jobExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
|
||||
verify(listener);
|
||||
}
|
||||
@@ -438,7 +438,7 @@ public class SimpleJobTests {
|
||||
|
||||
job.setSteps(Arrays.asList(new Step[] { step1, step2 }));
|
||||
job.execute(jobExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(1, jobExecution.getAllFailureExceptions().size());
|
||||
Throwable expected = jobExecution.getAllFailureExceptions().get(0);
|
||||
assertTrue("Wrong exception " + expected, expected instanceof JobInterruptedException);
|
||||
@@ -534,21 +534,27 @@ public class SimpleJobTests {
|
||||
jobRepository.update(stepExecution);
|
||||
jobRepository.updateExecutionContext(stepExecution);
|
||||
|
||||
if (exception instanceof JobInterruptedException) {
|
||||
stepExecution.setExitStatus(ExitStatus.FAILED);
|
||||
stepExecution.setStatus(BatchStatus.FAILED);
|
||||
stepExecution.addFailureException(exception);
|
||||
throw (JobInterruptedException)exception;
|
||||
}
|
||||
if (exception instanceof RuntimeException) {
|
||||
stepExecution.setExitStatus(ExitStatus.FAILED);
|
||||
stepExecution.setStatus(BatchStatus.INCOMPLETE);
|
||||
stepExecution.setStatus(BatchStatus.FAILED);
|
||||
stepExecution.addFailureException(exception);
|
||||
return;
|
||||
}
|
||||
if (exception instanceof Error) {
|
||||
stepExecution.setExitStatus(ExitStatus.FAILED);
|
||||
stepExecution.setStatus(BatchStatus.INCOMPLETE);
|
||||
stepExecution.setStatus(BatchStatus.FAILED);
|
||||
stepExecution.addFailureException(exception);
|
||||
return;
|
||||
}
|
||||
if (exception instanceof JobInterruptedException) {
|
||||
stepExecution.setExitStatus(ExitStatus.FAILED);
|
||||
stepExecution.setStatus(BatchStatus.STOPPING);
|
||||
stepExecution.setStatus(BatchStatus.FAILED);
|
||||
stepExecution.addFailureException(exception);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class FlowExecutionTests {
|
||||
public void testBasicProperties() throws Exception {
|
||||
FlowExecution execution = new FlowExecution("foo", new FlowExecutionStatus("BAR"));
|
||||
assertEquals("foo",execution.getName());
|
||||
assertEquals("BAR",execution.getStatus().getExitStatus().getExitCode());
|
||||
assertEquals("BAR",execution.getStatus().getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -45,7 +45,7 @@ public class FlowExecutionTests {
|
||||
@Test
|
||||
public void testEnumOrdering() throws Exception {
|
||||
FlowExecution first = new FlowExecution("foo", FlowExecutionStatus.COMPLETED);
|
||||
FlowExecution second = new FlowExecution("foo", FlowExecutionStatus.INCOMPLETE);
|
||||
FlowExecution second = new FlowExecution("foo", FlowExecutionStatus.FAILED);
|
||||
assertTrue("Should be negative",first.compareTo(second)<0);
|
||||
assertTrue("Should be positive",second.compareTo(first)>0);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class FlowJobTests {
|
||||
private JobExecution jobExecution;
|
||||
|
||||
private JobRepository jobRepository;
|
||||
|
||||
|
||||
private boolean fail = false;
|
||||
|
||||
@Before
|
||||
@@ -64,18 +64,26 @@ public class FlowJobTests {
|
||||
factory.afterPropertiesSet();
|
||||
jobRepository = (JobRepository) factory.getObject();
|
||||
job.setJobRepository(jobRepository);
|
||||
jobExecution = jobRepository.createJobExecution("job", new JobParameters());
|
||||
jobExecution = jobRepository.createJobExecution("job",
|
||||
new JobParameters());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTwoSteps() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
@@ -89,11 +97,18 @@ public class FlowJobTests {
|
||||
public void testFailedStep() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StateSupport("step1", FlowExecutionStatus.INCOMPLETE), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StateSupport(
|
||||
"step1", FlowExecutionStatus.FAILED), "step2"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
@@ -108,24 +123,30 @@ public class FlowJobTests {
|
||||
public void testFailedStepRestarted() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
State step2State = new StateSupport("step2") {
|
||||
@Override
|
||||
public FlowExecutionStatus handle(FlowExecutor executor) throws Exception {
|
||||
public FlowExecutionStatus handle(FlowExecutor executor)
|
||||
throws Exception {
|
||||
JobExecution jobExecution = executor.getJobExecution();
|
||||
jobExecution.getStepExecutions().add(new StepExecution(getName(), jobExecution));
|
||||
jobExecution.getStepExecutions().add(
|
||||
new StepExecution(getName(), jobExecution));
|
||||
if (fail) {
|
||||
return FlowExecutionStatus.INCOMPLETE;
|
||||
}
|
||||
else {
|
||||
return FlowExecutionStatus.FAILED;
|
||||
} else {
|
||||
return FlowExecutionStatus.COMPLETED;
|
||||
}
|
||||
}
|
||||
};
|
||||
transitions.add(StateTransition.createStateTransition(step2State, ExitStatus.COMPLETED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(step2State, ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(step2State,
|
||||
ExitStatus.COMPLETED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(step2State,
|
||||
ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
@@ -134,7 +155,8 @@ public class FlowJobTests {
|
||||
assertEquals(ExitStatus.FAILED, jobExecution.getExitStatus());
|
||||
assertEquals(2, jobExecution.getStepExecutions().size());
|
||||
jobRepository.update(jobExecution);
|
||||
jobExecution = jobRepository.createJobExecution("job", new JobParameters());
|
||||
jobExecution = jobRepository.createJobExecution("job",
|
||||
new JobParameters());
|
||||
fail = false;
|
||||
job.execute(jobExecution);
|
||||
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
|
||||
@@ -145,64 +167,77 @@ public class FlowJobTests {
|
||||
public void testStoppingStep() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
State state2 = new StateSupport("step2", FlowExecutionStatus.INCOMPLETE);
|
||||
transitions.add(StateTransition.createStateTransition(state2, ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(state2, ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end0"), "step3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), "end2"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end2")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
State state2 = new StateSupport("step2", FlowExecutionStatus.FAILED);
|
||||
transitions.add(StateTransition.createStateTransition(state2,
|
||||
ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(state2,
|
||||
ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(
|
||||
BatchStatus.STOPPED, ExitStatus.STOPPED, "end0"), "step3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step3")), "end2"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end2")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
try {
|
||||
job.doExecute(jobExecution);
|
||||
fail("Expected JobInterruptedException");
|
||||
}
|
||||
catch (JobInterruptedException e) {
|
||||
// expected
|
||||
}
|
||||
job.doExecute(jobExecution);
|
||||
assertEquals(2, jobExecution.getStepExecutions().size());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEndStateStopped() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(
|
||||
BatchStatus.STOPPED, ExitStatus.STOPPED, "end"), "step2"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
try {
|
||||
job.doExecute(jobExecution);
|
||||
fail("Expected JobInterruptedException");
|
||||
}
|
||||
catch (JobInterruptedException e) {
|
||||
// expected
|
||||
}
|
||||
job.doExecute(jobExecution);
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
}
|
||||
|
||||
public void testEndStateFailed() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end"), "step2"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
job.doExecute(jobExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
}
|
||||
|
||||
@@ -210,22 +245,31 @@ public class FlowJobTests {
|
||||
public void testEndStateStoppedWithRestart() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "end"));
|
||||
transitions.add(StateTransition.createStateTransition(new EndState(
|
||||
BatchStatus.STOPPED, ExitStatus.STOPPED, "end"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end0"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end1")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
|
||||
// To test a restart we have to use the AbstractJob.execute()...
|
||||
job.execute(jobExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, jobExecution.getStatus());
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
|
||||
jobExecution = jobRepository.createJobExecution("job", new JobParameters());
|
||||
jobExecution = jobRepository.createJobExecution("job",
|
||||
new JobParameters());
|
||||
job.execute(jobExecution);
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
assertEquals(1, jobExecution.getStepExecutions().size());
|
||||
@@ -236,16 +280,30 @@ public class FlowJobTests {
|
||||
public void testBranching() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "COMPLETED", "step3"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), ExitStatus.FAILED.getExitCode(), "end2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), ExitStatus.COMPLETED.getExitCode(), "end3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end2")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end3")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "COMPLETED", "step3"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end0"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step3")),
|
||||
ExitStatus.FAILED.getExitCode(), "end2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step3")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end2")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end3")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
@@ -259,8 +317,10 @@ public class FlowJobTests {
|
||||
public void testBasicFlow() throws Throwable {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
flow.setStateTransitions(transitions);
|
||||
job.setFlow(flow);
|
||||
job.execute(jobExecution);
|
||||
@@ -275,24 +335,40 @@ public class FlowJobTests {
|
||||
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
JobExecutionDecider decider = new JobExecutionDecider() {
|
||||
public String decide(JobExecution jobExecution, StepExecution stepExecution) {
|
||||
public String decide(JobExecution jobExecution,
|
||||
StepExecution stepExecution) {
|
||||
assertNotNull(stepExecution);
|
||||
return "SWITCH";
|
||||
}
|
||||
};
|
||||
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "decision"));
|
||||
transitions.add(StateTransition.createStateTransition(new DecisionState(decider, "decision"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new DecisionState(decider, "decision"), "SWITCH", "step3"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(), "end0"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), ExitStatus.FAILED.getExitCode(), "end2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), ExitStatus.COMPLETED.getExitCode(), "end3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.INCOMPLETE, ExitStatus.FAILED, "end2")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end3")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "decision"));
|
||||
transitions.add(StateTransition.createStateTransition(
|
||||
new DecisionState(decider, "decision"), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(
|
||||
new DecisionState(decider, "decision"), "SWITCH", "step3"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end0"));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step2")),
|
||||
ExitStatus.FAILED.getExitCode(), "end1"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end1")));
|
||||
transitions.add(StateTransition
|
||||
.createStateTransition(new StepState(new StubStep("step3")),
|
||||
ExitStatus.FAILED.getExitCode(), "end2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step3")), ExitStatus.COMPLETED.getExitCode(),
|
||||
"end3"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.FAILED, ExitStatus.FAILED, "end2")));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end3")));
|
||||
flow.setStateTransitions(transitions);
|
||||
|
||||
job.setFlow(flow);
|
||||
@@ -311,14 +387,17 @@ public class FlowJobTests {
|
||||
public void testGetStepExists() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
flow.setStateTransitions(transitions);
|
||||
flow.afterPropertiesSet();
|
||||
job.setFlow(flow);
|
||||
job.afterPropertiesSet();
|
||||
|
||||
|
||||
Step step = job.getStep("step2");
|
||||
assertNotNull(step);
|
||||
assertEquals("step2", step.getName());
|
||||
@@ -328,9 +407,12 @@ public class FlowJobTests {
|
||||
public void testGetStepNotExists() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
flow.setStateTransitions(transitions);
|
||||
flow.afterPropertiesSet();
|
||||
job.setFlow(flow);
|
||||
@@ -339,14 +421,17 @@ public class FlowJobTests {
|
||||
Step step = job.getStep("foo");
|
||||
assertNull(step);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testGetStepNotStepState() throws Exception {
|
||||
SimpleFlow flow = new SimpleFlow("job");
|
||||
List<StateTransition> transitions = new ArrayList<StateTransition>();
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(BatchStatus.COMPLETED, "end0")));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step1")), "step2"));
|
||||
transitions.add(StateTransition.createStateTransition(new StepState(
|
||||
new StubStep("step2")), "end0"));
|
||||
transitions.add(StateTransition.createEndStateTransition(new EndState(
|
||||
BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end0")));
|
||||
flow.setStateTransitions(transitions);
|
||||
flow.afterPropertiesSet();
|
||||
job.setFlow(flow);
|
||||
@@ -355,7 +440,7 @@ public class FlowJobTests {
|
||||
Step step = job.getStep("end0");
|
||||
assertNull(step);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @author Dave Syer
|
||||
*
|
||||
@@ -366,7 +451,8 @@ public class FlowJobTests {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public void execute(StepExecution stepExecution) throws JobInterruptedException {
|
||||
public void execute(StepExecution stepExecution)
|
||||
throws JobInterruptedException {
|
||||
stepExecution.setStatus(BatchStatus.COMPLETED);
|
||||
stepExecution.setExitStatus(ExitStatus.COMPLETED);
|
||||
jobRepository.update(stepExecution);
|
||||
@@ -379,15 +465,15 @@ public class FlowJobTests {
|
||||
* @param stepName
|
||||
* @return the StepExecution corresponding to the specified step
|
||||
*/
|
||||
private StepExecution getStepExecution(JobExecution jobExecution, String stepName)
|
||||
{
|
||||
for(StepExecution stepExecution : jobExecution.getStepExecutions()) {
|
||||
if(stepExecution.getStepName().equals(stepName)) {
|
||||
private StepExecution getStepExecution(JobExecution jobExecution,
|
||||
String stepName) {
|
||||
for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
|
||||
if (stepExecution.getStepName().equals(stepName)) {
|
||||
return stepExecution;
|
||||
}
|
||||
}
|
||||
fail("No stepExecution found with name: [" + stepName + "]");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -47,4 +47,7 @@ public class JobFlowExecutorSupport implements FlowExecutor {
|
||||
public void close(FlowExecution result) {
|
||||
}
|
||||
|
||||
public void updateStepExecutionStatus() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ public class SimpleFlowTests {
|
||||
flow.setStateTransitions(collect(StateTransition.createStateTransition(new StubState("step1") {
|
||||
@Override
|
||||
public FlowExecutionStatus handle(FlowExecutor executor) {
|
||||
return FlowExecutionStatus.INCOMPLETE;
|
||||
return FlowExecutionStatus.FAILED;
|
||||
}
|
||||
}, "step2"), StateTransition.createEndStateTransition(new StubState("step2"))));
|
||||
flow.afterPropertiesSet();
|
||||
|
||||
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.batch.core.BatchStatus;
|
||||
import org.springframework.batch.core.ExitStatus;
|
||||
import org.springframework.batch.core.JobExecution;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutor;
|
||||
import org.springframework.batch.core.job.flow.support.JobFlowExecutorSupport;
|
||||
@@ -47,7 +48,7 @@ public class EndStateTests {
|
||||
|
||||
BatchStatus status = jobExecution.getStatus();
|
||||
|
||||
EndState state = new EndState(BatchStatus.UNKNOWN, "end");
|
||||
EndState state = new EndState(BatchStatus.UNKNOWN, ExitStatus.UNKNOWN, "end");
|
||||
state.handle(new JobFlowExecutorSupport() {
|
||||
@Override
|
||||
public JobExecution getJobExecution() {
|
||||
@@ -68,7 +69,7 @@ public class EndStateTests {
|
||||
|
||||
jobExecution.createStepExecution("foo");
|
||||
|
||||
EndState state = new EndState(BatchStatus.UNKNOWN, "end");
|
||||
EndState state = new EndState(BatchStatus.UNKNOWN, ExitStatus.UNKNOWN, "end");
|
||||
state.handle(new JobFlowExecutorSupport() {
|
||||
@Override
|
||||
public JobExecution getJobExecution() {
|
||||
@@ -76,7 +77,7 @@ public class EndStateTests {
|
||||
}
|
||||
});
|
||||
|
||||
assertEquals(BatchStatus.STARTING, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.UNKNOWN, jobExecution.getStatus());
|
||||
|
||||
}
|
||||
|
||||
@@ -87,10 +88,10 @@ public class EndStateTests {
|
||||
@Test
|
||||
public void testHandleOngoingAttemptedDowngrade() throws Exception {
|
||||
|
||||
jobExecution.setStatus(BatchStatus.INCOMPLETE);
|
||||
jobExecution.setStatus(BatchStatus.FAILED);
|
||||
jobExecution.createStepExecution("foo");
|
||||
|
||||
EndState state = new EndState(BatchStatus.COMPLETED, "end");
|
||||
EndState state = new EndState(BatchStatus.COMPLETED, ExitStatus.COMPLETED, "end");
|
||||
state.handle(new JobFlowExecutorSupport() {
|
||||
@Override
|
||||
public JobExecution getJobExecution() {
|
||||
@@ -98,8 +99,8 @@ public class EndStateTests {
|
||||
}
|
||||
});
|
||||
|
||||
// Can't downgrade a status - if it failed then it failed
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
// An EndState can downgrade a status - if it failed then it can be unfailed
|
||||
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -36,10 +36,10 @@ public class SimpleFlowExecutionAggregatorTests {
|
||||
@Test
|
||||
public void testFailed() throws Exception {
|
||||
FlowExecution first = new FlowExecution("foo", FlowExecutionStatus.COMPLETED);
|
||||
FlowExecution second = new FlowExecution("foo", FlowExecutionStatus.INCOMPLETE);
|
||||
FlowExecution second = new FlowExecution("foo", FlowExecutionStatus.FAILED);
|
||||
assertTrue("Should be negative", first.compareTo(second)<0);
|
||||
assertTrue("Should be positive", second.compareTo(first)>0);
|
||||
assertEquals(FlowExecutionStatus.INCOMPLETE, aggregator.aggregate(Arrays.asList(first, second)));
|
||||
assertEquals(FlowExecutionStatus.FAILED, aggregator.aggregate(Arrays.asList(first, second)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -78,7 +78,7 @@ public class RestartIntegrationTests {
|
||||
int beforePartition = jdbcTemplate.queryForInt("SELECT COUNT(*) from BATCH_STEP_EXECUTION where STEP_NAME like 'step1:partition%'");
|
||||
|
||||
JobExecution execution = jobLauncher.run(job, jobParameters);
|
||||
assertEquals(BatchStatus.INCOMPLETE,execution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED,execution.getStatus());
|
||||
assertNotNull(jobLauncher.run(job, jobParameters));
|
||||
|
||||
int afterMaster = jdbcTemplate.queryForInt("SELECT COUNT(*) from BATCH_STEP_EXECUTION where STEP_NAME='step1:master'");
|
||||
|
||||
@@ -88,7 +88,7 @@ public class PartitionStepTests {
|
||||
throws Exception {
|
||||
Set<StepExecution> executions = stepSplitter.split(stepExecution, 2);
|
||||
for (StepExecution execution : executions) {
|
||||
execution.setStatus(BatchStatus.INCOMPLETE);
|
||||
execution.setStatus(BatchStatus.FAILED);
|
||||
execution.setExitStatus(ExitStatus.FAILED);
|
||||
}
|
||||
return executions;
|
||||
@@ -101,7 +101,7 @@ public class PartitionStepTests {
|
||||
step.execute(stepExecution);
|
||||
// one master and two workers
|
||||
assertEquals(3, stepExecution.getJobExecution().getStepExecutions().size());
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -45,21 +45,21 @@ public class StepExecutionAggregatorTests {
|
||||
|
||||
@Test
|
||||
public void testAggregateStatusFromFailure() {
|
||||
result.setStatus(BatchStatus.INCOMPLETE);
|
||||
result.setStatus(BatchStatus.FAILED);
|
||||
stepExecution1.setStatus(BatchStatus.COMPLETED);
|
||||
stepExecution2.setStatus(BatchStatus.COMPLETED);
|
||||
aggregator.aggregate(result, Arrays.<StepExecution> asList(stepExecution1, stepExecution2));
|
||||
assertNotNull(result);
|
||||
assertEquals(BatchStatus.INCOMPLETE, result.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, result.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregateStatusIncomplete() {
|
||||
stepExecution1.setStatus(BatchStatus.COMPLETED);
|
||||
stepExecution2.setStatus(BatchStatus.INCOMPLETE);
|
||||
stepExecution2.setStatus(BatchStatus.FAILED);
|
||||
aggregator.aggregate(result, Arrays.<StepExecution> asList(stepExecution1, stepExecution2));
|
||||
assertNotNull(result);
|
||||
assertEquals(BatchStatus.INCOMPLETE, result.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, result.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -184,7 +184,7 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
dao.saveStepExecution(stepExecution);
|
||||
Integer versionAfterSave = stepExecution.getVersion();
|
||||
|
||||
stepExecution.setStatus(BatchStatus.FAILED);
|
||||
stepExecution.setStatus(BatchStatus.ABANDONED);
|
||||
stepExecution.setLastUpdated(new Date(System.currentTimeMillis()));
|
||||
dao.updateStepExecution(stepExecution);
|
||||
assertEquals(versionAfterSave + 1, stepExecution.getVersion().intValue());
|
||||
@@ -192,7 +192,7 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
|
||||
StepExecution retrieved = dao.getStepExecution(jobExecution, stepExecution.getId());
|
||||
assertEquals(stepExecution, retrieved);
|
||||
assertEquals(stepExecution.getLastUpdated(), retrieved.getLastUpdated());
|
||||
assertEquals(BatchStatus.FAILED, retrieved.getStatus());
|
||||
assertEquals(BatchStatus.ABANDONED, retrieved.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -113,10 +113,10 @@ public class SimpleJobRepositoryIntegrationTests {
|
||||
// first execution failed
|
||||
firstJobExec.setStartTime(new Date(4));
|
||||
firstStepExec.setStartTime(new Date(5));
|
||||
firstStepExec.setStatus(BatchStatus.INCOMPLETE);
|
||||
firstStepExec.setStatus(BatchStatus.FAILED);
|
||||
firstStepExec.setEndTime(new Date(6));
|
||||
jobRepository.update(firstStepExec);
|
||||
firstJobExec.setStatus(BatchStatus.INCOMPLETE);
|
||||
firstJobExec.setStatus(BatchStatus.FAILED);
|
||||
firstJobExec.setEndTime(new Date(7));
|
||||
jobRepository.update(firstJobExec);
|
||||
|
||||
@@ -182,7 +182,7 @@ public class SimpleJobRepositoryIntegrationTests {
|
||||
@Test
|
||||
public void testGetLastJobExecution() throws Exception {
|
||||
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
|
||||
jobExecution.setStatus(BatchStatus.INCOMPLETE);
|
||||
jobExecution.setStatus(BatchStatus.FAILED);
|
||||
jobExecution.setEndTime(new Date());
|
||||
jobRepository.update(jobExecution);
|
||||
Thread.sleep(10);
|
||||
|
||||
@@ -204,7 +204,7 @@ public class AbstractStepTests {
|
||||
tested.setStepExecutionListeners(new StepExecutionListener[] { listener1, listener2 });
|
||||
|
||||
tested.execute(execution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, execution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, execution.getStatus());
|
||||
Throwable expected = execution.getFailureExceptions().get(0);
|
||||
assertEquals("crash!", expected.getMessage());
|
||||
|
||||
@@ -242,7 +242,7 @@ public class AbstractStepTests {
|
||||
tested.setStepExecutionListeners(new StepExecutionListener[] { listener1, listener2 });
|
||||
|
||||
tested.execute(execution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, execution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, execution.getStatus());
|
||||
Throwable expected = execution.getFailureExceptions().get(0);
|
||||
assertEquals("JobExecution interrupted.", expected.getMessage());
|
||||
|
||||
@@ -256,7 +256,7 @@ public class AbstractStepTests {
|
||||
assertEquals("close", events.get(i++));
|
||||
assertEquals(7, events.size());
|
||||
|
||||
assertEquals("INTERRUPTED", execution.getExitStatus().getExitCode());
|
||||
assertEquals("STOPPED", execution.getExitStatus().getExitCode());
|
||||
|
||||
assertTrue("Execution context modifications made by listener should be persisted", repository.saved
|
||||
.containsKey("afterStep"));
|
||||
|
||||
@@ -343,7 +343,7 @@ public class FaultTolerantStepFactoryBeanRetryTests {
|
||||
StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
|
||||
repository.add(stepExecution);
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
|
||||
List<String> expectedOutput = Arrays.asList(StringUtils.commaDelimitedListToStringArray(""));
|
||||
assertEquals(expectedOutput, written);
|
||||
@@ -439,7 +439,7 @@ public class FaultTolerantStepFactoryBeanRetryTests {
|
||||
StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
|
||||
repository.add(stepExecution);
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
|
||||
List<String> expectedOutput = Arrays.asList(StringUtils.commaDelimitedListToStringArray(""));
|
||||
assertEquals(expectedOutput, written);
|
||||
@@ -488,7 +488,7 @@ public class FaultTolerantStepFactoryBeanRetryTests {
|
||||
StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
|
||||
repository.add(stepExecution);
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
|
||||
// We added a bogus cache so no items are actually skipped
|
||||
// because they aren't recognised as eligible
|
||||
|
||||
@@ -112,7 +112,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution.getExitStatus().getExitCode());
|
||||
assertTrue(stepExecution.getExitStatus().getExitDescription().contains("Non-skippable exception during read"));
|
||||
|
||||
@@ -141,7 +141,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
assertEquals(1, reader.processed.size());
|
||||
assertEquals(ExitStatus.FAILED.getExitCode(), stepExecution.getExitStatus().getExitCode());
|
||||
assertTrue(stepExecution.getExitStatus().getExitDescription().contains("non-skippable exception"));
|
||||
@@ -335,7 +335,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
|
||||
assertEquals(3, stepExecution.getSkipCount());
|
||||
assertEquals(2, stepExecution.getReadSkipCount());
|
||||
@@ -374,7 +374,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
assertEquals("oops", stepExecution.getFailureExceptions().get(0).getCause().getMessage());
|
||||
|
||||
// listeners are called only once chunk is about to commit, so
|
||||
@@ -408,7 +408,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
assertEquals("oops", stepExecution.getFailureExceptions().get(0).getCause().getMessage());
|
||||
assertEquals(1, stepExecution.getSkipCount());
|
||||
assertEquals(0, stepExecution.getReadSkipCount());
|
||||
@@ -521,7 +521,7 @@ public class FaultTolerantStepFactoryBeanTests {
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
assertEquals("bad skip count", 3, stepExecution.getSkipCount());
|
||||
assertEquals("bad read skip count", 2, stepExecution.getReadSkipCount());
|
||||
assertEquals("bad write skip count", 1, stepExecution.getWriteSkipCount());
|
||||
|
||||
@@ -159,7 +159,7 @@ public class SimpleStepFactoryBeanTests {
|
||||
job.execute(jobExecution);
|
||||
assertEquals("Error!", jobExecution.getAllFailureExceptions().get(0).getMessage());
|
||||
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
assertEquals(0, written.size());
|
||||
// provider should be at second item
|
||||
assertEquals("bar", reader.read());
|
||||
@@ -182,7 +182,7 @@ public class SimpleStepFactoryBeanTests {
|
||||
|
||||
job.execute(jobExecution);
|
||||
assertEquals("Foo", jobExecution.getAllFailureExceptions().get(0).getMessage());
|
||||
assertEquals(BatchStatus.INCOMPLETE, jobExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, jobExecution.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -7,8 +7,8 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.springframework.batch.core.BatchStatus.COMPLETED;
|
||||
import static org.springframework.batch.core.BatchStatus.INCOMPLETE;
|
||||
import static org.springframework.batch.core.BatchStatus.FAILED;
|
||||
import static org.springframework.batch.core.BatchStatus.STOPPED;
|
||||
import static org.springframework.batch.core.BatchStatus.UNKNOWN;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -73,14 +73,14 @@ public class TaskletStepExceptionTests {
|
||||
public void testApplicationException() throws Exception {
|
||||
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(FAILED, stepExecution.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterrupted() throws Exception {
|
||||
taskletStep.setStepExecutionListeners(new StepExecutionListener[] { new InterruptionListener() });
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(STOPPED, stepExecution.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -94,7 +94,7 @@ public class TaskletStepExceptionTests {
|
||||
} });
|
||||
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(FAILED, stepExecution.getStatus());
|
||||
assertTrue(stepExecution.getFailureExceptions().contains(exception));
|
||||
assertEquals(2, jobRepository.getUpdateCount());
|
||||
}
|
||||
@@ -110,7 +110,7 @@ public class TaskletStepExceptionTests {
|
||||
}
|
||||
} });
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(FAILED, stepExecution.getStatus());
|
||||
assertTrue(stepExecution.getFailureExceptions().contains(exception));
|
||||
assertEquals(2, jobRepository.getUpdateCount());
|
||||
}
|
||||
@@ -152,7 +152,7 @@ public class TaskletStepExceptionTests {
|
||||
}
|
||||
} });
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(FAILED, stepExecution.getStatus());
|
||||
assertTrue(stepExecution.getFailureExceptions().contains(taskletException));
|
||||
assertFalse(stepExecution.getFailureExceptions().contains(exception));
|
||||
assertEquals(2, jobRepository.getUpdateCount());
|
||||
@@ -170,7 +170,7 @@ public class TaskletStepExceptionTests {
|
||||
} });
|
||||
|
||||
taskletStep.execute(stepExecution);
|
||||
assertEquals(INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(FAILED, stepExecution.getStatus());
|
||||
assertTrue(stepExecution.getFailureExceptions().contains(taskletException));
|
||||
assertTrue(stepExecution.getFailureExceptions().contains(exception));
|
||||
assertEquals(2, jobRepository.getUpdateCount());
|
||||
|
||||
@@ -114,7 +114,7 @@ public class StepExecutorInterruptionTests extends TestCase {
|
||||
|
||||
assertTrue("Timed out waiting for step to be interrupted.", count < 1000);
|
||||
assertFalse(processingThread.isAlive());
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, stepExecution.getStatus());
|
||||
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ public class StepExecutorInterruptionTests extends TestCase {
|
||||
|
||||
assertTrue("Timed out waiting for step to be interrupted.", count < 1000);
|
||||
assertFalse(processingThread.isAlive());
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, stepExecution.getStatus());
|
||||
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ public class StepExecutorInterruptionTests extends TestCase {
|
||||
step.execute(stepExecution);
|
||||
|
||||
assertEquals("Planned!", stepExecution.getFailureExceptions().get(0).getMessage());
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -541,7 +541,7 @@ public class TaskletStepTests {
|
||||
stepExecution.setExecutionContext(foobarEc);
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.STOPPED, stepExecution.getStatus());
|
||||
String msg = stepExecution.getExitStatus().getExitDescription();
|
||||
assertTrue("Message does not contain 'JobInterruptedException': " + msg, contains(msg,
|
||||
"JobInterruptedException"));
|
||||
@@ -565,7 +565,7 @@ public class TaskletStepTests {
|
||||
// step.setLastExecution(stepExecution);
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
// The original rollback was caused by this one:
|
||||
assertEquals("Foo", stepExecution.getFailureExceptions().get(0).getMessage());
|
||||
}
|
||||
@@ -588,7 +588,7 @@ public class TaskletStepTests {
|
||||
// step.setLastExecution(stepExecution);
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
// The original rollback was caused by this one:
|
||||
assertEquals("Foo", stepExecution.getFailureExceptions().get(0).getMessage());
|
||||
}
|
||||
@@ -723,7 +723,7 @@ public class TaskletStepTests {
|
||||
StepExecution stepExecution = new StepExecution(step.getName(), new JobExecution(jobInstance));
|
||||
|
||||
step.execute(stepExecution);
|
||||
assertEquals(BatchStatus.INCOMPLETE, stepExecution.getStatus());
|
||||
assertEquals(BatchStatus.FAILED, stepExecution.getStatus());
|
||||
Throwable expected = stepExecution.getFailureExceptions().get(0);
|
||||
assertEquals("CRASH!", expected.getMessage());
|
||||
assertFalse(stepExecution.getExecutionContext().isEmpty());
|
||||
|
||||
Reference in New Issue
Block a user