Skip to content

Commit 1119a4a

Browse files
christophstroblmp911de
authored andcommitted
Close clients created during tests.
See #3817 Original pull request: #3987.
1 parent 162a9ab commit 1119a4a

23 files changed

+148
-45
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
/*
3636
* (non-Javadoc)

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.junit.jupiter.api.Test;
2929

30+
import org.mockito.Mockito;
3031
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
3132
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3233
import org.springframework.context.annotation.Bean;
@@ -158,7 +159,7 @@ protected String getDatabaseName() {
158159

159160
@Override
160161
public MongoClient mongoClient() {
161-
return MongoClients.create();
162+
return Mockito.mock(MongoClient.class);
162163
}
163164

164165
@Override
@@ -186,7 +187,7 @@ protected String getDatabaseName() {
186187

187188
@Override
188189
public MongoClient mongoClient() {
189-
return MongoClients.create();
190+
return Mockito.mock(MongoClient.class);
190191
}
191192

192193
@Override

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

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

159159
@Override
160160
public MongoClient reactiveMongoClient() {
161-
return MongoTestUtils.reactiveClient();
161+
return Mockito.mock(MongoClient.class);
162162
}
163163

164164
@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
@@ -64,6 +64,7 @@
6464
import org.springframework.data.mapping.MappingException;
6565
import org.springframework.data.mongodb.InvalidMongoDbApiUsageException;
6666
import org.springframework.data.mongodb.MongoDatabaseFactory;
67+
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
6768
import org.springframework.data.mongodb.core.convert.LazyLoadingProxy;
6869
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
6970
import org.springframework.data.mongodb.core.index.Index;
@@ -3580,7 +3581,7 @@ public void removeShouldConsiderLimit() {
35803581
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
35813582
.collect(Collectors.toList());
35823583

3583-
template.insertAll(samples);
3584+
template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
35843585

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

@@ -3595,7 +3596,7 @@ public void removeShouldConsiderSkipAndSort() {
35953596
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
35963597
.collect(Collectors.toList());
35973598

3598-
template.insertAll(samples);
3599+
template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
35993600

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

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

+2-5
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@
3737
import org.springframework.data.geo.Metrics;
3838
import org.springframework.data.geo.Point;
3939
import org.springframework.data.geo.Polygon;
40-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
4140
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
4241
import org.springframework.data.mongodb.core.MongoTemplate;
4342
import org.springframework.data.mongodb.core.TestEntities;
4443
import org.springframework.data.mongodb.core.Venue;
4544
import org.springframework.data.mongodb.core.query.NearQuery;
4645
import org.springframework.data.mongodb.core.query.Query;
46+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
4747
import org.springframework.data.mongodb.test.util.MongoTestUtils;
4848
import org.springframework.test.context.ContextConfiguration;
4949
import org.springframework.test.context.junit4.SpringRunner;
@@ -60,7 +60,7 @@
6060
public abstract class AbstractGeoSpatialTests {
6161

6262
@Configuration
63-
static class TestConfig extends AbstractMongoClientConfiguration {
63+
static class TestConfig extends MongoClientClosingTestConfiguration {
6464

6565
@Override
6666
protected String getDatabaseName() {
@@ -111,10 +111,7 @@ protected void removeVenues() {
111111
}
112112

113113
protected void addVenues() {
114-
115-
116114
template.bulkOps(BulkMode.UNORDERED, Venue.class).insert(TestEntities.geolocation().newYork()).execute();
117-
// template.insertAll(TestEntities.geolocation().newYork());
118115
}
119116

120117
@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
@@ -19,13 +19,13 @@
1919
import java.util.Set;
2020

2121
import org.springframework.context.annotation.Bean;
22-
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
2322
import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener;
23+
import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
2424
import org.springframework.data.mongodb.test.util.MongoTestUtils;
2525

2626
import com.mongodb.client.MongoClient;
2727

28-
public class GeoIndexedAppConfig extends AbstractMongoClientConfiguration {
28+
public class GeoIndexedAppConfig extends MongoClientClosingTestConfiguration {
2929

3030
public static String GEO_DB = "database";
3131
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;
@@ -72,7 +73,7 @@ public class ApplicationContextEventTests {
7273

7374
static @Client MongoClient mongoClient;
7475

75-
private ApplicationContext applicationContext;
76+
private ConfigurableApplicationContext applicationContext;
7677
private MongoTemplate template;
7778
private SimpleMappingEventListener listener;
7879

@@ -89,7 +90,9 @@ public void setUp() {
8990

9091
@AfterEach
9192
public void cleanUp() {
93+
9294
cleanDb();
95+
applicationContext.close();
9396
}
9497

9598
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)