Add simple integration test for restart using JobLauncher
This commit is contained in:
10
archetypes/.classpath
Normal file
10
archetypes/.classpath
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user