Add simple integration test for restart using JobLauncher

This commit is contained in:
dsyer
2009-07-07 08:48:59 +00:00
parent e516cbd4a0
commit ee6e6a17b5
4 changed files with 125 additions and 0 deletions

10
archetypes/.classpath Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="simple-cli/target/classes" path="simple-cli/src/main/java"/>
<classpathentry excluding="**" kind="src" output="simple-cli/target/classes" path="simple-cli/src/main/resources"/>
<classpathentry kind="src" output="simple-cli/target/test-classes" path="simple-cli/src/test/java"/>
<classpathentry excluding="**" kind="src" output="simple-cli/target/test-classes" path="simple-cli/src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@@ -60,6 +60,7 @@
<config>src/test/resources/org/springframework/batch/core/configuration/xml/StopRestartOnCompletedStepJobParserTests-context.xml</config>
<config>src/test/resources/org/springframework/batch/core/configuration/xml/StopRestartOnFailedStepJobParserTests-context.xml</config>
<config>src/test/resources/org/springframework/batch/core/configuration/xml/JobRegistryJobParserTests-context.xml</config>
<config>src/test/resources/org/springframework/batch/core/launch/JobLauncherIntegrationTests-context.xml</config>
</configs>
<configSets>
<configSet>

View File

@@ -0,0 +1,76 @@
package org.springframework.batch.core.launch;
import static org.junit.Assert.assertEquals;
import java.util.Calendar;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class JobLauncherIntegrationTests {
private SimpleJdbcTemplate jdbcTemplate;
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
@Autowired
public void setDataSource(DataSource dataSource) {
jdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
@Test
public void testLaunchAndRelaunch() throws Exception {
int before = jdbcTemplate.queryForInt("select count(*) from BATCH_JOB_INSTANCE");
JobExecution jobExecution = launch(true,0);
launch(false, jobExecution.getJobId());
launch(false, jobExecution.getJobId());
int after = jdbcTemplate.queryForInt("select count(*) from BATCH_JOB_INSTANCE");
assertEquals(before+1, after);
}
private JobExecution launch(boolean start, long jobInstanceID) throws Exception {
if (start) {
Calendar c = Calendar.getInstance();
JobParametersBuilder builder = new JobParametersBuilder();
builder.addDate("TIMESTAMP", c.getTime());
return jobLauncher.run(job, builder.toJobParameters());
} else {
JdbcJobInstanceDao dao = new JdbcJobInstanceDao();
dao.setJdbcTemplate(jdbcTemplate);
JobInstance instance = dao.getJobInstance(jobInstanceID);
if (instance != null) {
return jobLauncher.run(job, instance.getJobParameters());
}
return null;
}
}
}

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<job id="job" xmlns="http://www.springframework.org/schema/batch">
<step id="step"><tasklet ref="tasklet"/></step>
</job>
<job-repository id="jobRepository" xmlns="http://www.springframework.org/schema/batch"/>
<bean id="tasklet" class="org.springframework.batch.core.configuration.xml.FailingTasklet"/>
<bean class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository"/>
</bean>
<bean class="test.jdbc.datasource.DataSourceInitializer">
<property name="dataSource" ref="dataSource" />
<property name="initScripts">
<list>
<value>schema-hsqldb.sql</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:testdb;sql.enforce_strict_size=true" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>