Skip to content

Commit f64c1eb

Browse files
committed
spring-projectsGH-3839: Migrate MongoDB tests to Testcontainers
Closes spring-projects#3839 Couple of changes after the pull request review: * Get back the blank lines in test classes * Get back the blank lines for some inner classes * Eliminate bad renaming consequences * Remove a couple of garbage todos * Couple of places with code cleanup
1 parent 1520338 commit f64c1eb

15 files changed

+44
-34
lines changed

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/MongoDbContainerTest.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
*/
6666
@Testcontainers(disabledWithoutDocker = true)
6767
public interface MongoDbContainerTest {
68+
6869
GenericContainer<?> MONGO_CONTAINER = new GenericContainer<>("mongo:5.0.9")
6970
.withExposedPorts(27017);
7071

@@ -74,21 +75,12 @@ static void startContainer() {
7475
}
7576

7677
static MongoDatabaseFactory createMongoDbFactory() {
77-
return new SimpleMongoClientDatabaseFactory(
78-
MongoClients.create(
79-
MongoClientSettings.builder()
80-
.applyConnectionString(new ConnectionString(
81-
"mongodb://localhost:" + MONGO_CONTAINER.getFirstMappedPort()))
82-
.uuidRepresentation(UuidRepresentation.STANDARD).build()),
83-
"test");
78+
return new SimpleMongoClientDatabaseFactory(MongoClients.create(getMongoClientSettings()), "test");
8479
}
8580

8681
static ReactiveMongoDatabaseFactory createReactiveMongoDbFactory() {
8782
return new SimpleReactiveMongoDatabaseFactory(
88-
com.mongodb.reactivestreams.client.MongoClients.create(
89-
MongoClientSettings.builder().applyConnectionString(new ConnectionString(
90-
"mongodb://localhost:" + MONGO_CONTAINER.getFirstMappedPort()))
91-
.uuidRepresentation(UuidRepresentation.STANDARD).build()),
83+
com.mongodb.reactivestreams.client.MongoClients.create(getMongoClientSettings()),
9284
"test");
9385
}
9486

@@ -100,10 +92,10 @@ static void prepareReactiveMongoData(ReactiveMongoDatabaseFactory mongoDatabaseF
10092
cleanupCollections(mongoDatabaseFactory, additionalCollectionsToDrop);
10193
}
10294

103-
static void cleanupCollections(ReactiveMongoDatabaseFactory MONGO_DATABASE_FACTORY,
95+
static void cleanupCollections(ReactiveMongoDatabaseFactory mongoDbFactory,
10496
String... additionalCollectionsToDrop) {
10597

106-
ReactiveMongoTemplate template = new ReactiveMongoTemplate(MONGO_DATABASE_FACTORY);
98+
ReactiveMongoTemplate template = new ReactiveMongoTemplate(mongoDbFactory);
10799
template.dropCollection("messages").block(Duration.ofSeconds(3));
108100
template.dropCollection("configurableStoreMessages").block(Duration.ofSeconds(3));
109101
template.dropCollection("data").block(Duration.ofSeconds(3));
@@ -112,8 +104,8 @@ static void cleanupCollections(ReactiveMongoDatabaseFactory MONGO_DATABASE_FACTO
112104
}
113105
}
114106

115-
static void cleanupCollections(MongoDatabaseFactory MONGO_DATABASE_FACTORY, String... additionalCollectionsToDrop) {
116-
MongoTemplate template = new MongoTemplate(MONGO_DATABASE_FACTORY);
107+
static void cleanupCollections(MongoDatabaseFactory mongoDbFactory, String... additionalCollectionsToDrop) {
108+
MongoTemplate template = new MongoTemplate(mongoDbFactory);
117109
template.dropCollection("messages");
118110
template.dropCollection("configurableStoreMessages");
119111
template.dropCollection("data");
@@ -210,10 +202,10 @@ public void setState(String state) {
210202
class TestMongoConverter extends MappingMongoConverter {
211203

212204
public TestMongoConverter(
213-
MongoDatabaseFactory MONGO_DATABASE_FACTORY,
205+
MongoDatabaseFactory mongoDbFactory,
214206
MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) {
215207

216-
super(new DefaultDbRefResolver(MONGO_DATABASE_FACTORY), mappingContext);
208+
super(new DefaultDbRefResolver(mongoDbFactory), mappingContext);
217209
}
218210

219211
@Override
@@ -231,7 +223,7 @@ public <S> S read(Class<S> clazz, Bson source) {
231223
class ReactiveTestMongoConverter extends MappingMongoConverter {
232224

233225
public ReactiveTestMongoConverter(
234-
ReactiveMongoDatabaseFactory MONGO_DATABASE_FACTORY,
226+
ReactiveMongoDatabaseFactory mongoDbFactory,
235227
MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) {
236228

237229
super(NoOpDbRefResolver.INSTANCE, mappingContext);
@@ -259,4 +251,12 @@ public Long doInCollection(MongoCollection<Document> collection, Message<?> mess
259251
}
260252

261253
}
254+
255+
private static MongoClientSettings getMongoClientSettings() {
256+
return MongoClientSettings.builder()
257+
.applyConnectionString(new ConnectionString(
258+
"mongodb://localhost:" + MONGO_CONTAINER.getFirstMappedPort()))
259+
.uuidRepresentation(UuidRepresentation.STANDARD).build();
260+
}
261+
262262
}

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/config/MongoDbInboundChannelAdapterIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
@SpringJUnitConfig
5353
@DirtiesContext
5454
class MongoDbInboundChannelAdapterIntegrationTests implements MongoDbContainerTest {
55+
5556
@Autowired
5657
private MongoTemplate mongoTemplate;
5758

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/config/MongoDbOutboundChannelAdapterIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* @author Artem Vozhdayenko
4040
*/
4141
class MongoDbOutboundChannelAdapterIntegrationTests implements MongoDbContainerTest {
42+
4243
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
4344

4445
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/dsl/MongoDbTests.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,17 @@
6868
@SpringJUnitConfig
6969
@DirtiesContext
7070
class MongoDbTests implements MongoDbContainerTest {
71+
7172
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
7273

7374
@BeforeAll
7475
static void prepareMongoConnection() {
7576
MONGO_DATABASE_FACTORY = MongoDbContainerTest.createMongoDbFactory();
77+
REACTIVE_MONGO_DATABASE_FACTORY = MongoDbContainerTest.createReactiveMongoDbFactory();
7678
}
7779

7880
static ReactiveMongoDatabaseFactory REACTIVE_MONGO_DATABASE_FACTORY;
7981

80-
@BeforeAll
81-
static void prepareReactiveMongoConnection() {
82-
REACTIVE_MONGO_DATABASE_FACTORY = MongoDbContainerTest.createReactiveMongoDbFactory();
83-
}
84-
8582
private static final String COLLECTION_NAME = "data";
8683

8784
@Autowired
@@ -349,22 +346,22 @@ public MessageChannel getResultChannel() {
349346
}
350347

351348
@Bean
352-
public MongoDatabaseFactory MONGO_DATABASE_FACTORY() {
349+
public MongoDatabaseFactory mongoDbFactory() {
353350
return MONGO_DATABASE_FACTORY;
354351
}
355352

356353
@Bean
357354
public MongoConverter mongoConverter() {
358-
return new TestMongoConverter(MONGO_DATABASE_FACTORY(), new MongoMappingContext());
355+
return new TestMongoConverter(mongoDbFactory(), new MongoMappingContext());
359356
}
360357

361358
@Bean
362359
public MongoOperations mongoTemplate() {
363-
return new MongoTemplate(MONGO_DATABASE_FACTORY());
360+
return new MongoTemplate(mongoDbFactory());
364361
}
365362

366363
private MongoDbOutboundGatewaySpec queryOutboundGateway(String query, boolean expectSingleResult) {
367-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
364+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
368365
.query(query)
369366
.collectionNameExpression("headers.collection")
370367
.expectSingleResult(expectSingleResult)
@@ -380,23 +377,23 @@ private MongoDbOutboundGatewaySpec queryOutboundGatewayWithTemplate(String query
380377
}
381378

382379
private MongoDbOutboundGatewaySpec queryExpressionOutboundGateway(boolean expectSingleResult) {
383-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
380+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
384381
.queryExpression("headers.query")
385382
.collectionName(COLLECTION_NAME)
386383
.expectSingleResult(expectSingleResult)
387384
.entityClass(Person.class);
388385
}
389386

390387
private MongoDbOutboundGatewaySpec queryExpressionOutboundGateway(boolean expectSingleResult, int maxResults) {
391-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
388+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
392389
.queryExpression("new BasicQuery('{''address.state'' : ''PA''}').limit(" + maxResults + ")")
393390
.collectionName(COLLECTION_NAME)
394391
.expectSingleResult(expectSingleResult)
395392
.entityClass(Person.class);
396393
}
397394

398395
private MongoDbOutboundGatewaySpec queryFunctionOutboundGateway(boolean expectSingleResult) {
399-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
396+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
400397
.queryFunction(msg ->
401398
Query.query(Criteria.where("name")
402399
.is(msg.getPayload())))
@@ -406,7 +403,7 @@ private MongoDbOutboundGatewaySpec queryFunctionOutboundGateway(boolean expectSi
406403
}
407404

408405
private MongoDbOutboundGatewaySpec collectionNameFunctionOutboundGateway(boolean expectSingleResult) {
409-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
406+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
410407
.queryExpression("headers.query")
411408
.<String>collectionNameFunction(Message::getPayload)
412409
.expectSingleResult(expectSingleResult)
@@ -416,7 +413,7 @@ private MongoDbOutboundGatewaySpec collectionNameFunctionOutboundGateway(boolean
416413
private MongoDbOutboundGatewaySpec collectionCallbackOutboundGateway(
417414
MessageCollectionCallback<?> collectionCallback) {
418415

419-
return MongoDb.outboundGateway(MONGO_DATABASE_FACTORY(), mongoConverter())
416+
return MongoDb.outboundGateway(mongoDbFactory(), mongoConverter())
420417
.collectionCallback(collectionCallback)
421418
.collectionName(COLLECTION_NAME)
422419
.entityClass(Person.class);

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/inbound/MongoDbMessageSourceTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
*
5757
*/
5858
class MongoDbMessageSourceTests implements MongoDbContainerTest {
59+
5960
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
6061

6162
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/inbound/ReactiveMongoDbMessageSourceTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
* @since 5.3
6969
*/
7070
class ReactiveMongoDbMessageSourceTests implements MongoDbContainerTest {
71+
7172
static ReactiveMongoDatabaseFactory REACTIVE_MONGO_DATABASE_FACTORY;
7273

7374
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/metadata/MongoDbMetadataStoreTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
* @since 4.2
3535
*
3636
*/
37-
class MongoDbMetadataStoreTests implements MongoDbContainerTest { //todo: all sonar issues
37+
class MongoDbMetadataStoreTests implements MongoDbContainerTest {
38+
3839
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
3940

4041
@BeforeAll
@@ -53,7 +54,7 @@ static void prepareMongoConnection() {
5354
@BeforeEach
5455
public void configure() {
5556
MongoDbContainerTest.prepareMongoData(MONGO_DATABASE_FACTORY, DEFAULT_COLLECTION_NAME);
56-
this.store = new MongoDbMetadataStore(MONGO_DATABASE_FACTORY); //todo: remove all MONGO_DATABASE_FACTORY redundant vars
57+
this.store = new MongoDbMetadataStore(MONGO_DATABASE_FACTORY);
5758
}
5859

5960
@Test

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/outbound/MongoDbOutboundGatewayTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
@SpringJUnitConfig
6060
@DirtiesContext
6161
class MongoDbOutboundGatewayTests implements MongoDbContainerTest {
62+
6263
private static final String COLLECTION_NAME = "data";
6364

6465
private static final SpelExpressionParser PARSER = new SpelExpressionParser();

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/outbound/MongoDbOutboundGatewayXmlTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
@SpringJUnitConfig
4848
@DirtiesContext
4949
class MongoDbOutboundGatewayXmlTests implements MongoDbContainerTest {
50+
5051
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
5152

5253
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/outbound/MongoDbStoringMessageHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
* @since 2.2
5252
*/
5353
class MongoDbStoringMessageHandlerTests implements MongoDbContainerTest {
54+
5455
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
5556

5657
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/outbound/ReactiveMongoDbStoringMessageHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
@SpringJUnitConfig
6464
@DirtiesContext
6565
class ReactiveMongoDbStoringMessageHandlerTests implements MongoDbContainerTest {
66+
6667
public static ReactiveMongoDatabaseFactory REACTIVE_MONGO_DATABASE_FACTORY;
6768

6869
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageGroupStoreTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
* @author Artem Vozhdayenko
5858
*/
5959
public abstract class AbstractMongoDbMessageGroupStoreTests implements MongoDbContainerTest {
60+
6061
public static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
6162

6263
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageStoreTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
*
5555
*/
5656
public abstract class AbstractMongoDbMessageStoreTests implements MongoDbContainerTest {
57+
5758
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
5859

5960
@BeforeAll

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/DelayerHandlerRescheduleIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
*/
4646
@LongRunningTest
4747
class DelayerHandlerRescheduleIntegrationTests implements MongoDbContainerTest {
48+
4849
public static final String DELAYER_ID = "delayerWithMongoMS";
4950

5051
@Test

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/MongoDbMessageStoreClaimCheckIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* @author Artem Vozhdayenko
4141
*/
4242
class MongoDbMessageStoreClaimCheckIntegrationTests implements MongoDbContainerTest {
43+
4344
static MongoDatabaseFactory MONGO_DATABASE_FACTORY;
4445

4546
@BeforeAll

0 commit comments

Comments
 (0)