Skip to content

Commit 67f9cc5

Browse files
committed
Merge pull request #44800 from quaff
* pr/44800: Add Yanming to the list of contributors Polishing BatchAutoConfigurationTests Closes gh-44800
2 parents f44c17c + 1a608b7 commit 67f9cc5

File tree

1 file changed

+60
-78
lines changed

1 file changed

+60
-78
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/batch/BatchAutoConfigurationTests.java

Lines changed: 60 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
* @author Mahmoud Ben Hassine
104104
* @author Lars Uffmann
105105
* @author Lasse Wulff
106+
* @author Yanming Zhou
106107
*/
107108
@ExtendWith(OutputCaptureExtension.class)
108109
class BatchAutoConfigurationTests {
@@ -113,23 +114,22 @@ class BatchAutoConfigurationTests {
113114

114115
@Test
115116
void testDefaultContext() {
116-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
117-
.run((context) -> {
118-
assertThat(context).hasSingleBean(JobRepository.class);
119-
assertThat(context).hasSingleBean(JobLauncher.class);
120-
assertThat(context).hasSingleBean(JobExplorer.class);
121-
assertThat(context).hasSingleBean(JobRegistry.class);
122-
assertThat(context).hasSingleBean(JobOperator.class);
123-
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
124-
.isEqualTo(DatabaseInitializationMode.EMBEDDED);
125-
assertThat(new JdbcTemplate(context.getBean(DataSource.class))
126-
.queryForList("select * from BATCH_JOB_EXECUTION")).isEmpty();
127-
});
117+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
118+
assertThat(context).hasSingleBean(JobRepository.class);
119+
assertThat(context).hasSingleBean(JobLauncher.class);
120+
assertThat(context).hasSingleBean(JobExplorer.class);
121+
assertThat(context).hasSingleBean(JobRegistry.class);
122+
assertThat(context).hasSingleBean(JobOperator.class);
123+
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
124+
.isEqualTo(DatabaseInitializationMode.EMBEDDED);
125+
assertThat(new JdbcTemplate(context.getBean(DataSource.class))
126+
.queryForList("select * from BATCH_JOB_EXECUTION")).isEmpty();
127+
});
128128
}
129129

130130
@Test
131131
void autoconfigurationBacksOffEntirelyIfSpringJdbcAbsent() {
132-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
132+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
133133
.withClassLoader(new FilteredClassLoader(DatabasePopulator.class))
134134
.run((context) -> {
135135
assertThat(context).doesNotHaveBean(JobLauncherApplicationRunner.class);
@@ -253,7 +253,7 @@ void testDisableLaunchesJob() {
253253

254254
@Test
255255
void testDisableSchemaLoader() {
256-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
256+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
257257
.withPropertyValues("spring.datasource.generate-unique-name=true",
258258
"spring.batch.jdbc.initialize-schema:never")
259259
.run((context) -> {
@@ -270,7 +270,7 @@ void testDisableSchemaLoader() {
270270
@Test
271271
void testUsingJpa() {
272272
this.contextRunner
273-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
273+
.withUserConfiguration(TestJpaConfiguration.class, EmbeddedDataSourceConfiguration.class,
274274
HibernateJpaAutoConfiguration.class)
275275
.run((context) -> {
276276
PlatformTransactionManager transactionManager = context.getBean(PlatformTransactionManager.class);
@@ -288,11 +288,9 @@ void testUsingJpa() {
288288
@Test
289289
@WithPackageResources("custom-schema.sql")
290290
void testRenamePrefix() {
291-
this.contextRunner
292-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
293-
HibernateJpaAutoConfiguration.class)
291+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
294292
.withPropertyValues("spring.datasource.generate-unique-name=true",
295-
"spring.batch.jdbc.schema:classpath:custom-schema.sql", "spring.batch.jdbc.tablePrefix:PREFIX_")
293+
"spring.batch.jdbc.schema:classpath:custom-schema.sql", "spring.batch.jdbc.table-prefix:PREFIX_")
296294
.run((context) -> {
297295
assertThat(context).hasSingleBean(JobLauncher.class);
298296
assertThat(context.getBean(BatchProperties.class).getJdbc().getInitializeSchema())
@@ -309,7 +307,7 @@ void testRenamePrefix() {
309307
@Test
310308
void testCustomizeJpaTransactionManagerUsingProperties() {
311309
this.contextRunner
312-
.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class,
310+
.withUserConfiguration(TestJpaConfiguration.class, EmbeddedDataSourceConfiguration.class,
313311
HibernateJpaAutoConfiguration.class)
314312
.withPropertyValues("spring.transaction.default-timeout:30",
315313
"spring.transaction.rollback-on-commit-failure:true")
@@ -324,7 +322,7 @@ void testCustomizeJpaTransactionManagerUsingProperties() {
324322

325323
@Test
326324
void testCustomizeDataSourceTransactionManagerUsingProperties() {
327-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
325+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
328326
.withPropertyValues("spring.transaction.default-timeout:30",
329327
"spring.transaction.rollback-on-commit-failure:true")
330328
.run((context) -> {
@@ -338,49 +336,44 @@ void testCustomizeDataSourceTransactionManagerUsingProperties() {
338336

339337
@Test
340338
void testBatchDataSource() {
341-
this.contextRunner.withUserConfiguration(TestConfiguration.class, BatchDataSourceConfiguration.class)
342-
.run((context) -> {
343-
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class)
344-
.hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
345-
.hasBean("batchDataSource");
346-
DataSource batchDataSource = context.getBean("batchDataSource", DataSource.class);
347-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getDataSource())
348-
.isEqualTo(batchDataSource);
349-
assertThat(context.getBean(BatchDataSourceScriptDatabaseInitializer.class))
350-
.hasFieldOrPropertyWithValue("dataSource", batchDataSource);
351-
});
339+
this.contextRunner.withUserConfiguration(BatchDataSourceConfiguration.class).run((context) -> {
340+
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class)
341+
.hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
342+
.hasBean("batchDataSource");
343+
DataSource batchDataSource = context.getBean("batchDataSource", DataSource.class);
344+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getDataSource()).isEqualTo(batchDataSource);
345+
assertThat(context.getBean(BatchDataSourceScriptDatabaseInitializer.class))
346+
.hasFieldOrPropertyWithValue("dataSource", batchDataSource);
347+
});
352348
}
353349

354350
@Test
355351
void testBatchTransactionManager() {
356-
this.contextRunner.withUserConfiguration(TestConfiguration.class, BatchTransactionManagerConfiguration.class)
357-
.run((context) -> {
358-
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class);
359-
PlatformTransactionManager batchTransactionManager = context.getBean("batchTransactionManager",
360-
PlatformTransactionManager.class);
361-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getTransactionManager())
362-
.isEqualTo(batchTransactionManager);
363-
});
352+
this.contextRunner.withUserConfiguration(BatchTransactionManagerConfiguration.class).run((context) -> {
353+
assertThat(context).hasSingleBean(SpringBootBatchConfiguration.class);
354+
PlatformTransactionManager batchTransactionManager = context.getBean("batchTransactionManager",
355+
PlatformTransactionManager.class);
356+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getTransactionManager())
357+
.isEqualTo(batchTransactionManager);
358+
});
364359
}
365360

366361
@Test
367362
void jobRepositoryBeansDependOnBatchDataSourceInitializer() {
368-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
369-
.run((context) -> {
370-
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
371-
String[] jobRepositoryNames = beanFactory.getBeanNamesForType(JobRepository.class);
372-
assertThat(jobRepositoryNames).isNotEmpty();
373-
for (String jobRepositoryName : jobRepositoryNames) {
374-
assertThat(beanFactory.getBeanDefinition(jobRepositoryName).getDependsOn())
375-
.contains("batchDataSourceInitializer");
376-
}
377-
});
363+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
364+
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
365+
String[] jobRepositoryNames = beanFactory.getBeanNamesForType(JobRepository.class);
366+
assertThat(jobRepositoryNames).isNotEmpty();
367+
for (String jobRepositoryName : jobRepositoryNames) {
368+
assertThat(beanFactory.getBeanDefinition(jobRepositoryName).getDependsOn())
369+
.contains("batchDataSourceInitializer");
370+
}
371+
});
378372
}
379373

380374
@Test
381375
void jobRepositoryBeansDependOnFlyway() {
382-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
383-
.withUserConfiguration(FlywayAutoConfiguration.class)
376+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, FlywayAutoConfiguration.class)
384377
.withPropertyValues("spring.batch.initialize-schema=never")
385378
.run((context) -> {
386379
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
@@ -396,8 +389,8 @@ void jobRepositoryBeansDependOnFlyway() {
396389
@Test
397390
@WithResource(name = "db/changelog/db.changelog-master.yaml", content = "databaseChangeLog:")
398391
void jobRepositoryBeansDependOnLiquibase() {
399-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
400-
.withUserConfiguration(LiquibaseAutoConfiguration.class)
392+
this.contextRunner
393+
.withUserConfiguration(EmbeddedDataSourceConfiguration.class, LiquibaseAutoConfiguration.class)
401394
.withPropertyValues("spring.batch.initialize-schema=never")
402395
.run((context) -> {
403396
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
@@ -411,8 +404,7 @@ void jobRepositoryBeansDependOnLiquibase() {
411404

412405
@Test
413406
void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInitializerBacksOff() {
414-
this.contextRunner
415-
.withUserConfiguration(TestConfiguration.class, CustomBatchDatabaseInitializerConfiguration.class)
407+
this.contextRunner.withUserConfiguration(CustomBatchDatabaseInitializerConfiguration.class)
416408
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
417409
DataSourceTransactionManagerAutoConfiguration.class))
418410
.run((context) -> assertThat(context).hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
@@ -422,7 +414,7 @@ void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInit
422414

423415
@Test
424416
void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInitializerRemains() {
425-
this.contextRunner.withUserConfiguration(TestConfiguration.class, CustomDatabaseInitializerConfiguration.class)
417+
this.contextRunner.withUserConfiguration(CustomDatabaseInitializerConfiguration.class)
426418
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
427419
DataSourceTransactionManagerAutoConfiguration.class))
428420
.run((context) -> assertThat(context).hasSingleBean(BatchDataSourceScriptDatabaseInitializer.class)
@@ -431,8 +423,9 @@ void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInit
431423

432424
@Test
433425
void conversionServiceCustomizersAreCalled() {
434-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
435-
.withUserConfiguration(ConversionServiceCustomizersConfiguration.class)
426+
this.contextRunner
427+
.withUserConfiguration(EmbeddedDataSourceConfiguration.class,
428+
ConversionServiceCustomizersConfiguration.class)
436429
.run((context) -> {
437430
BatchConversionServiceCustomizer customizer = context.getBean("batchConversionServiceCustomizer",
438431
BatchConversionServiceCustomizer.class);
@@ -481,8 +474,8 @@ void whenTheUserDefinesAJobNameThatDoesNotExistWithRegisteredJobFailsFast() {
481474

482475
@Test
483476
void customExecutionContextSerializerIsUsed() {
484-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
485-
.withUserConfiguration(CustomExecutionContextConfiguration.class)
477+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
478+
.withBean(ExecutionContextSerializer.class, Jackson2ExecutionContextStringSerializer::new)
486479
.run((context) -> {
487480
assertThat(context).hasSingleBean(Jackson2ExecutionContextStringSerializer.class);
488481
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
@@ -492,12 +485,11 @@ void customExecutionContextSerializerIsUsed() {
492485

493486
@Test
494487
void defaultExecutionContextSerializerIsUsed() {
495-
this.contextRunner.withUserConfiguration(TestConfiguration.class, EmbeddedDataSourceConfiguration.class)
496-
.run((context) -> {
497-
assertThat(context).doesNotHaveBean(ExecutionContextSerializer.class);
498-
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
499-
.isInstanceOf(DefaultExecutionContextSerializer.class);
500-
});
488+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class).run((context) -> {
489+
assertThat(context).doesNotHaveBean(ExecutionContextSerializer.class);
490+
assertThat(context.getBean(SpringBootBatchConfiguration.class).getExecutionContextSerializer())
491+
.isInstanceOf(DefaultExecutionContextSerializer.class);
492+
});
501493
}
502494

503495
private JobLauncherApplicationRunner createInstance(String... registeredJobNames) {
@@ -560,7 +552,7 @@ static class EmptyConfiguration {
560552
}
561553

562554
@TestAutoConfigurationPackage(City.class)
563-
static class TestConfiguration {
555+
static class TestJpaConfiguration {
564556

565557
}
566558

@@ -838,14 +830,4 @@ BatchConversionServiceCustomizer anotherBatchConversionServiceCustomizer() {
838830

839831
}
840832

841-
@Configuration(proxyBeanMethods = false)
842-
static class CustomExecutionContextConfiguration {
843-
844-
@Bean
845-
ExecutionContextSerializer executionContextSerializer() {
846-
return new Jackson2ExecutionContextStringSerializer();
847-
}
848-
849-
}
850-
851833
}

0 commit comments

Comments
 (0)