Skip to content

Commit 0079219

Browse files
christophstroblmp911de
authored andcommitted
Close clients created during tests.
See #3817 Original pull request: #3987.
1 parent e064b50 commit 0079219

23 files changed

+149
-44
lines changed

spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@
1919
import java.util.Set;
2020

2121
import org.springframework.context.annotation.Configuration;
22-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
2322

2423
import com.mongodb.client.MongoClient;
2524
import com.mongodb.client.MongoClients;
25+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
2626

2727
/**
2828
* Sample configuration class in default package.
2929
*
3030
* @author Oliver Gierke
3131
*/
3232
@Configuration
33-
public class ConfigClassInDefaultPackage extends AbstractMongoClientConfiguration {
33+
public class ConfigClassInDefaultPackage extends MongoClientClosingTestConfiguration {
3434

3535
@Override
3636
protected String getDatabaseName() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.dao.DataAccessException;
3030
import org.springframework.data.mongodb.core.CollectionCallback;
3131
import org.springframework.data.mongodb.core.MongoOperations;
32+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
3233
import org.springframework.data.mongodb.test.util.MongoTestUtils;
3334
import org.springframework.test.context.ContextConfiguration;
3435
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -45,7 +46,7 @@
4546
public abstract class AbstractIntegrationTests {
4647

4748
@Configuration
48-
static class TestConfig extends AbstractMongoClientConfiguration {
49+
static class TestConfig extends MongoClientClosingTestConfiguration {
4950

5051
@Override
5152
protected String getDatabaseName() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.util.Set;
2727

2828
import org.junit.jupiter.api.Test;
29+
30+
import org.mockito.Mockito;
2931
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3032
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3133
import org.springframework.context.annotation.Bean;
@@ -160,7 +162,7 @@ protected String getDatabaseName() {
160162

161163
@Override
162164
public MongoClient mongoClient() {
163-
return MongoClients.create();
165+
return Mockito.mock(MongoClient.class);
164166
}
165167

166168
@Override
@@ -188,7 +190,7 @@ protected String getDatabaseName() {
188190

189191
@Override
190192
public MongoClient mongoClient() {
191-
return MongoClients.create();
193+
return Mockito.mock(MongoClient.class);
192194
}
193195

194196
@Override

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractReactiveMongoConfigurationUnitTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ protected String getDatabaseName() {
160160

161161
@Override
162162
public MongoClient reactiveMongoClient() {
163-
return MongoTestUtils.reactiveClient();
163+
return Mockito.mock(MongoClient.class);
164164
}
165165

166166
@Override

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
5050
import org.springframework.data.mongodb.test.util.Client;
5151
import org.springframework.data.mongodb.test.util.MongoClientExtension;
52+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
5253
import org.springframework.data.mongodb.test.util.MongoTestUtils;
5354
import org.springframework.stereotype.Repository;
5455
import org.springframework.test.context.ContextConfiguration;
@@ -233,7 +234,7 @@ static class SimpleConfigWithRepositories extends SimpleConfig {}
233234

234235
@Configuration
235236
@EnableMongoAuditing
236-
static class SimpleConfig extends AbstractMongoClientConfiguration {
237+
static class SimpleConfig extends MongoClientClosingTestConfiguration {
237238

238239
@Override
239240
public MongoClient mongoClient() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import org.junit.jupiter.api.BeforeEach;
2121
import org.junit.jupiter.api.Test;
22-
2322
import org.springframework.beans.factory.config.BeanDefinition;
2423
import org.springframework.beans.factory.config.ConstructorArgumentValues;
2524
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
@@ -74,6 +73,7 @@ public void parsesWriteConcern() {
7473

7574
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("namespace/db-factory-bean.xml");
7675
assertWriteConcern(ctx, WriteConcern.ACKNOWLEDGED);
76+
ctx.close();
7777
}
7878

7979
@Test // DATAMONGO-2199
@@ -82,6 +82,7 @@ public void parsesCustomWriteConcern() {
8282
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
8383
"namespace/db-factory-bean-custom-write-concern.xml");
8484
assertWriteConcern(ctx, new WriteConcern("rack1"));
85+
ctx.close();
8586
}
8687

8788
@Test // DATAMONGO-331
@@ -90,10 +91,10 @@ public void readsReplicasWriteConcernCorrectly() {
9091
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
9192
"namespace/db-factory-bean-custom-write-concern.xml");
9293
MongoDatabaseFactory factory = ctx.getBean("second", MongoDatabaseFactory.class);
93-
MongoDatabase db = factory.getMongoDatabase();
94+
ctx.close();
9495

96+
MongoDatabase db = factory.getMongoDatabase();
9597
assertThat(db.getWriteConcern()).isEqualTo(WriteConcern.W2);
96-
ctx.close();
9798
}
9899

99100
// This test will fail since equals in WriteConcern uses == for _w and not .equals
@@ -127,6 +128,8 @@ public void setsUpMongoDbFactoryUsingAMongoUriWithoutCredentials() {
127128
MongoDatabaseFactory dbFactory = factory.getBean("mongoDbFactory", MongoDatabaseFactory.class);
128129
MongoDatabase db = dbFactory.getMongoDatabase();
129130
assertThat(db.getName()).isEqualTo("database");
131+
132+
factory.destroyBean(dbFactory);
130133
}
131134

132135
@Test // DATAMONGO-1218
@@ -171,6 +174,8 @@ public void usesConnectionStringToCreateClientClient() {
171174
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("namespace/db-factory-bean.xml");
172175

173176
MongoDatabaseFactory dbFactory = ctx.getBean("with-connection-string", MongoDatabaseFactory.class);
177+
ctx.close();
178+
174179
assertThat(dbFactory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
175180
assertThat(ReflectionTestUtils.getField(dbFactory, "mongoClient"))
176181
.isInstanceOf(com.mongodb.client.MongoClient.class);

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/ReactiveAuditingTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.springframework.data.mapping.callback.EntityCallback;
2222
import org.springframework.data.mongodb.core.mapping.event.AuditingEntityCallback;
2323
import org.springframework.data.mongodb.core.mapping.event.ReactiveAuditingEntityCallback;
24+
import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
2425
import org.springframework.test.util.ReflectionTestUtils;
2526
import reactor.core.publisher.Mono;
2627
import reactor.test.StepVerifier;
@@ -75,7 +76,7 @@ class ReactiveAuditingTests {
7576
@EnableReactiveMongoAuditing
7677
@EnableReactiveMongoRepositories(basePackageClasses = ReactiveAuditingTests.class, considerNestedRepositories = true,
7778
includeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = ReactiveAuditablePersonRepository.class))
78-
static class Config extends AbstractReactiveMongoConfiguration {
79+
static class Config extends ReactiveMongoClientClosingTestConfiguration {
7980

8081
@Override
8182
protected String getDatabaseName() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import org.springframework.data.mapping.context.PersistentEntities;
6868
import org.springframework.data.mongodb.InvalidMongoDbApiUsageException;
6969
import org.springframework.data.mongodb.MongoDatabaseFactory;
70+
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
7071
import org.springframework.data.mongodb.core.convert.LazyLoadingProxy;
7172
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
7273
import org.springframework.data.mongodb.core.index.Index;
@@ -3558,7 +3559,7 @@ public void removeShouldConsiderLimit() {
35583559
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
35593560
.collect(Collectors.toList());
35603561

3561-
template.insertAll(samples);
3562+
template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
35623563

35633564
DeleteResult wr = template.remove(query(where("field").is("lannister")).limit(25), Sample.class);
35643565

@@ -3573,7 +3574,7 @@ public void removeShouldConsiderSkipAndSort() {
35733574
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
35743575
.collect(Collectors.toList());
35753576

3576-
template.insertAll(samples);
3577+
template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
35773578

35783579
DeleteResult wr = template.remove(new Query().skip(25).with(Sort.by("field")), Sample.class);
35793580

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
import org.springframework.data.geo.Metrics;
3737
import org.springframework.data.geo.Point;
3838
import org.springframework.data.geo.Polygon;
39-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
4039
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
4140
import org.springframework.data.mongodb.core.MongoTemplate;
4241
import org.springframework.data.mongodb.core.TestEntities;
4342
import org.springframework.data.mongodb.core.Venue;
4443
import org.springframework.data.mongodb.core.query.NearQuery;
4544
import org.springframework.data.mongodb.core.query.Query;
45+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
4646
import org.springframework.data.mongodb.test.util.MongoTestUtils;
4747
import org.springframework.test.context.ContextConfiguration;
4848
import org.springframework.test.context.junit4.SpringRunner;
@@ -59,7 +59,7 @@
5959
public abstract class AbstractGeoSpatialTests {
6060

6161
@Configuration
62-
static class TestConfig extends AbstractMongoClientConfiguration {
62+
static class TestConfig extends MongoClientClosingTestConfiguration {
6363

6464
@Override
6565
protected String getDatabaseName() {
@@ -110,9 +110,7 @@ protected void removeVenues() {
110110
}
111111

112112
protected void addVenues() {
113-
114113
template.bulkOps(BulkMode.UNORDERED, Venue.class).insert(TestEntities.geolocation().newYork()).execute();
115-
// template.insertAll(TestEntities.geolocation().newYork());
116114
}
117115

118116
@Test

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import java.util.Set;
2121

2222
import org.springframework.context.annotation.Bean;
23-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
2423
import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener;
24+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
2525
import org.springframework.data.mongodb.test.util.MongoTestUtils;
2626

2727
import com.mongodb.client.MongoClient;
2828

29-
public class GeoIndexedAppConfig extends AbstractMongoClientConfiguration {
29+
public class GeoIndexedAppConfig extends MongoClientClosingTestConfiguration {
3030

3131
public static String GEO_DB = "database";
3232
public static String GEO_COLLECTION = "geolocation";

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.junit.jupiter.api.extension.ExtendWith;
3535

3636
import org.springframework.context.ApplicationContext;
37+
import org.springframework.context.ConfigurableApplicationContext;
3738
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3839
import org.springframework.data.annotation.Id;
3940
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -73,7 +74,7 @@ public class ApplicationContextEventTests {
7374

7475
static @Client MongoClient mongoClient;
7576

76-
private ApplicationContext applicationContext;
77+
private ConfigurableApplicationContext applicationContext;
7778
private MongoTemplate template;
7879
private SimpleMappingEventListener listener;
7980

@@ -90,7 +91,9 @@ public void setUp() {
9091

9192
@AfterEach
9293
public void cleanUp() {
94+
9395
cleanDb();
96+
applicationContext.close();
9497
}
9598

9699
private void cleanDb() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
import org.springframework.context.annotation.Bean;
1919
import org.springframework.context.annotation.Configuration;
20-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
20+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
2121
import org.springframework.data.mongodb.test.util.MongoTestUtils;
2222

2323
import com.mongodb.client.MongoClient;
2424

2525
@Configuration
26-
public class ApplicationContextEventTestsAppConfig extends AbstractMongoClientConfiguration {
26+
public class ApplicationContextEventTestsAppConfig extends MongoClientClosingTestConfiguration {
2727

2828
@Override
2929
public String getDatabaseName() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/ReactiveMongoJsonSchemaTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.springframework.data.mongodb.test.util.Assertions.*;
1919

2020
import lombok.Data;
21+
import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
2122
import reactor.test.StepVerifier;
2223

2324
import java.time.Duration;
@@ -32,7 +33,6 @@
3233
import org.springframework.beans.factory.annotation.Autowired;
3334
import org.springframework.context.annotation.Configuration;
3435
import org.springframework.dao.DataRetrievalFailureException;
35-
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
3636
import org.springframework.data.mongodb.core.CollectionOptions;
3737
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
3838
import org.springframework.data.mongodb.core.convert.MongoJsonSchemaMapper;
@@ -56,7 +56,7 @@ public class ReactiveMongoJsonSchemaTests {
5656
static @Client MongoClient mongoClient;
5757

5858
@Configuration
59-
static class Config extends AbstractReactiveMongoConfiguration {
59+
static class Config extends ReactiveMongoClientClosingTestConfiguration {
6060

6161
@Override
6262
public MongoClient reactiveMongoClient() {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java

+3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ public void setUp() throws Exception {
9393
factory.afterPropertiesSet();
9494

9595
this.repository = factory.getObject();
96+
}
9697

98+
void afterEach() {
99+
mongo.close();
97100
}
98101

99102
@Test

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828

2929
import org.bson.Document;
3030
import org.bson.types.ObjectId;
31+
import org.junit.jupiter.api.AfterEach;
3132
import org.junit.jupiter.api.BeforeEach;
3233
import org.junit.jupiter.api.Test;
33-
3434
import org.springframework.core.Constants;
3535
import org.springframework.data.annotation.PersistenceConstructor;
3636
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
@@ -41,7 +41,6 @@
4141
import org.springframework.data.mongodb.core.convert.DbRefResolverCallback;
4242
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
4343
import org.springframework.data.mongodb.core.convert.MongoConverter;
44-
import org.springframework.data.mongodb.core.convert.ReferenceLoader;
4544
import org.springframework.data.mongodb.core.convert.ReferenceLookupDelegate;
4645
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
4746
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
@@ -136,6 +135,11 @@ public List<Document> bulkFetch(List<DBRef> dbRefs) {
136135
repository = factory.getRepository(ReactivePersonRepository.class);
137136
}
138137

138+
@AfterEach
139+
void afterEach() {
140+
mongo.close();
141+
}
142+
139143
@Test // DATAMONGO-1444
140144
public void writeWithWriteConcerns() {
141145
executeWithWriteConcerns((constantName, concern) -> {

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import org.springframework.data.geo.Metrics;
6060
import org.springframework.data.geo.Point;
6161
import org.springframework.data.geo.Polygon;
62+
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
6263
import org.springframework.data.mongodb.core.MongoOperations;
6364
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
6465
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
@@ -929,7 +930,7 @@ void sliceShouldTraverseElementsWithoutSkippingOnes() {
929930
persons.add(new Person(String.format("%03d", i), "ln" + 1, 100));
930931
}
931932

932-
repository.saveAll(persons);
933+
operations.bulkOps(BulkMode.UNORDERED, Person.class).insert(persons).execute();
933934

934935
Slice<Person> slice = repository.findByAgeGreaterThan(50, PageRequest.of(0, 20, Direction.ASC, "firstname"));
935936
assertThat(slice).containsExactlyElementsOf(persons.subList(0, 20));

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ReactiveMongoRepositoryTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import org.springframework.data.geo.GeoResult;
5656
import org.springframework.data.geo.Metrics;
5757
import org.springframework.data.geo.Point;
58-
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
5958
import org.springframework.data.mongodb.core.CollectionOptions;
6059
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
6160
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
@@ -71,6 +70,7 @@
7170
import org.springframework.data.querydsl.ReactiveQuerydslPredicateExecutor;
7271
import org.springframework.data.repository.Repository;
7372
import org.springframework.data.repository.query.ReactiveQueryMethodEvaluationContextProvider;
73+
import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
7474
import org.springframework.test.context.junit.jupiter.SpringExtension;
7575

7676
import com.mongodb.reactivestreams.client.MongoClient;
@@ -98,7 +98,7 @@ class ReactiveMongoRepositoryTests {
9898
private QPerson person = QPerson.person;
9999

100100
@Configuration
101-
static class Config extends AbstractReactiveMongoConfiguration {
101+
static class Config extends ReactiveMongoClientClosingTestConfiguration {
102102

103103
@Bean
104104
@Override

0 commit comments

Comments
 (0)