|
|
|
@ -75,11 +75,11 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
*/
|
|
|
|
|
public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
private AnnotationConfigApplicationContext context;
|
|
|
|
|
|
|
|
|
|
@Rule
|
|
|
|
|
public ExpectedException expected = ExpectedException.none();
|
|
|
|
|
|
|
|
|
|
private AnnotationConfigApplicationContext context;
|
|
|
|
|
|
|
|
|
|
@After
|
|
|
|
|
public void close() {
|
|
|
|
|
if (this.context != null) {
|
|
|
|
@ -89,12 +89,8 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDefaultContext() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class });
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
assertThat(this.context.getBean(JobExplorer.class)).isNotNull();
|
|
|
|
|
assertThat(
|
|
|
|
@ -106,11 +102,7 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testNoDatabase() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
this.context.register(TestCustomConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
load(new Class<?>[] { TestCustomConfiguration.class });
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
JobExplorer explorer = this.context.getBean(JobExplorer.class);
|
|
|
|
|
assertThat(explorer).isNotNull();
|
|
|
|
@ -119,11 +111,8 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testNoBatchConfiguration() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
this.context.register(EmptyConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class, EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
load(new Class<?>[] { EmptyConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class });
|
|
|
|
|
assertThat(this.context.getBeanNamesForType(JobLauncher.class).length)
|
|
|
|
|
.isEqualTo(0);
|
|
|
|
|
assertThat(this.context.getBeanNamesForType(JobRepository.class).length)
|
|
|
|
@ -132,12 +121,8 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDefinesAndLaunchesJob() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
this.context.register(JobConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
load(new Class<?>[] { JobConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class });
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
this.context.getBean(JobLauncherCommandLineRunner.class).run();
|
|
|
|
|
assertThat(this.context.getBean(JobRepository.class).getLastJobExecution("job",
|
|
|
|
@ -146,14 +131,9 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDefinesAndLaunchesNamedJob() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
load(new Class<?>[] { NamedJobConfigurationWithRegisteredJob.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class },
|
|
|
|
|
"spring.batch.job.names:discreteRegisteredJob");
|
|
|
|
|
this.context.register(NamedJobConfigurationWithRegisteredJob.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
JobRepository repository = this.context.getBean(JobRepository.class);
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
this.context.getBean(JobLauncherCommandLineRunner.class).run();
|
|
|
|
@ -163,31 +143,21 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDefinesAndLaunchesLocalJob() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
load(new Class<?>[] { NamedJobConfigurationWithLocalJob.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class },
|
|
|
|
|
"spring.batch.job.names:discreteLocalJob");
|
|
|
|
|
this.context.register(NamedJobConfigurationWithLocalJob.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
this.context.getBean(JobLauncherCommandLineRunner.class).run();
|
|
|
|
|
assertThat(this.context.getBean(JobRepository.class)
|
|
|
|
|
.getLastJobExecution("discreteLocalJob", new JobParameters()))
|
|
|
|
|
.isNotNull();
|
|
|
|
|
.isNotNull();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDisableLaunchesJob() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
load(new Class<?>[] { JobConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class },
|
|
|
|
|
"spring.batch.job.enabled:false");
|
|
|
|
|
this.context.register(JobConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
assertThat(this.context.getBeanNamesForType(CommandLineRunner.class).length)
|
|
|
|
|
.isEqualTo(0);
|
|
|
|
@ -195,19 +165,14 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testDisableSchemaLoader() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
"spring.datasource.name:batchtest",
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class },
|
|
|
|
|
"spring.datasource.generate-unique-name=true",
|
|
|
|
|
"spring.batch.initializer.enabled:false");
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
assertThat(
|
|
|
|
|
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
|
|
|
|
.isFalse();
|
|
|
|
|
.isFalse();
|
|
|
|
|
this.expected.expect(BadSqlGrammarException.class);
|
|
|
|
|
new JdbcTemplate(this.context.getBean(DataSource.class))
|
|
|
|
|
.queryForList("select * from BATCH_JOB_EXECUTION");
|
|
|
|
@ -215,14 +180,9 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testUsingJpa() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
// The order is very important here: DataSource -> Hibernate -> Batch
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
HibernateJpaAutoConfiguration.class });
|
|
|
|
|
PlatformTransactionManager transactionManager = this.context
|
|
|
|
|
.getBean(PlatformTransactionManager.class);
|
|
|
|
|
// It's a lazy proxy, but it does render its target if you ask for toString():
|
|
|
|
@ -236,17 +196,12 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testRenamePrefix() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
"spring.datasource.name:batchtest",
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class },
|
|
|
|
|
"spring.datasource.generate-unique-name=true",
|
|
|
|
|
"spring.batch.schema:classpath:batch/custom-schema-hsql.sql",
|
|
|
|
|
"spring.batch.tablePrefix:PREFIX_");
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
assertThat(
|
|
|
|
|
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
|
|
|
@ -263,19 +218,15 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
@Test
|
|
|
|
|
public void testCustomTablePrefixWithDefaultSchemaDisablesInitializer()
|
|
|
|
|
throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
"spring.datasource.name:batchtest", "spring.batch.tablePrefix:PREFIX_");
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class },
|
|
|
|
|
"spring.datasource.generate-unique-name=true",
|
|
|
|
|
"spring.batch.tablePrefix:PREFIX_");
|
|
|
|
|
assertThat(this.context.getBean(JobLauncher.class)).isNotNull();
|
|
|
|
|
assertThat(
|
|
|
|
|
this.context.getBean(BatchProperties.class).getInitializer().isEnabled())
|
|
|
|
|
.isFalse();
|
|
|
|
|
.isFalse();
|
|
|
|
|
this.expected.expect(BadSqlGrammarException.class);
|
|
|
|
|
new JdbcTemplate(this.context.getBean(DataSource.class))
|
|
|
|
|
.queryForList("select * from BATCH_JOB_EXECUTION");
|
|
|
|
@ -283,16 +234,11 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testCustomizeJpaTransactionManagerUsingProperties() throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class },
|
|
|
|
|
"spring.transaction.default-timeout:30",
|
|
|
|
|
"spring.transaction.rollback-on-commit-failure:true");
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class,
|
|
|
|
|
HibernateJpaAutoConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
this.context.getBean(BatchConfigurer.class);
|
|
|
|
|
JpaTransactionManager transactionManager = JpaTransactionManager.class.cast(
|
|
|
|
|
this.context.getBean(BatchConfigurer.class).getTransactionManager());
|
|
|
|
@ -303,15 +249,10 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
@Test
|
|
|
|
|
public void testCustomizeDataSourceTransactionManagerUsingProperties()
|
|
|
|
|
throws Exception {
|
|
|
|
|
this.context = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(this.context,
|
|
|
|
|
load(new Class<?>[] { TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class },
|
|
|
|
|
"spring.transaction.default-timeout:30",
|
|
|
|
|
"spring.transaction.rollback-on-commit-failure:true");
|
|
|
|
|
this.context.register(TestConfiguration.class,
|
|
|
|
|
EmbeddedDataSourceConfiguration.class, BatchAutoConfiguration.class,
|
|
|
|
|
TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
this.context.refresh();
|
|
|
|
|
this.context.getBean(BatchConfigurer.class);
|
|
|
|
|
DataSourceTransactionManager transactionManager = DataSourceTransactionManager.class
|
|
|
|
|
.cast(this.context.getBean(BatchConfigurer.class)
|
|
|
|
@ -320,6 +261,18 @@ public class BatchAutoConfigurationTests {
|
|
|
|
|
assertThat(transactionManager.isRollbackOnCommitFailure()).isTrue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void load(Class<?>[] configs, String... environment) {
|
|
|
|
|
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
|
|
|
|
EnvironmentTestUtils.addEnvironment(ctx, environment);
|
|
|
|
|
if (configs != null) {
|
|
|
|
|
ctx.register(configs);
|
|
|
|
|
}
|
|
|
|
|
ctx.register(BatchAutoConfiguration.class, TransactionAutoConfiguration.class,
|
|
|
|
|
PropertyPlaceholderAutoConfiguration.class);
|
|
|
|
|
ctx.refresh();
|
|
|
|
|
this.context = ctx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Configuration
|
|
|
|
|
protected static class EmptyConfiguration {
|
|
|
|
|
|
|
|
|
|