diff --git a/pom.xml b/pom.xml
index 0e9257f0f0..ba60b84bfa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 3.4.0-GH-3817-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml
index e2704a6753..b99c626323 100644
--- a/spring-data-mongodb-benchmarks/pom.xml
+++ b/spring-data-mongodb-benchmarks/pom.xml
@@ -7,7 +7,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 3.4.0-GH-3817-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index b75f8bf624..4325c16590 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 3.4.0-GH-3817-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index ca96626cc9..a5ad68ca7e 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 3.4.0-GH-3817-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java b/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java
index 49ab1116c1..6bc3cfd02a 100644
--- a/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java
+++ b/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java
@@ -19,10 +19,10 @@
import java.util.Set;
import org.springframework.context.annotation.Configuration;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
/**
* Sample configuration class in default package.
@@ -30,7 +30,7 @@
* @author Oliver Gierke
*/
@Configuration
-public class ConfigClassInDefaultPackage extends AbstractMongoClientConfiguration {
+public class ConfigClassInDefaultPackage extends MongoClientClosingTestConfiguration {
/*
* (non-Javadoc)
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java
index 2d3ec19032..b0392e8c68 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java
@@ -29,6 +29,7 @@
import org.springframework.dao.DataAccessException;
import org.springframework.data.mongodb.core.CollectionCallback;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -45,7 +46,7 @@
public abstract class AbstractIntegrationTests {
@Configuration
- static class TestConfig extends AbstractMongoClientConfiguration {
+ static class TestConfig extends MongoClientClosingTestConfiguration {
@Override
protected String getDatabaseName() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java
index d0250f3352..59d03600bb 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java
@@ -27,6 +27,7 @@
import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -158,7 +159,7 @@ protected String getDatabaseName() {
@Override
public MongoClient mongoClient() {
- return MongoClients.create();
+ return Mockito.mock(MongoClient.class);
}
@Override
@@ -186,7 +187,7 @@ protected String getDatabaseName() {
@Override
public MongoClient mongoClient() {
- return MongoClients.create();
+ return Mockito.mock(MongoClient.class);
}
@Override
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractReactiveMongoConfigurationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractReactiveMongoConfigurationUnitTests.java
index 33a2f61108..1b55113fbb 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractReactiveMongoConfigurationUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractReactiveMongoConfigurationUnitTests.java
@@ -158,7 +158,7 @@ protected String getDatabaseName() {
@Override
public MongoClient reactiveMongoClient() {
- return MongoTestUtils.reactiveClient();
+ return Mockito.mock(MongoClient.class);
}
@Override
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java
index 981a050f8d..d34fbc3ccf 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingViaJavaConfigRepositoriesTests.java
@@ -49,6 +49,7 @@
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.MongoClientExtension;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.stereotype.Repository;
import org.springframework.test.context.ContextConfiguration;
@@ -233,7 +234,7 @@ static class SimpleConfigWithRepositories extends SimpleConfig {}
@Configuration
@EnableMongoAuditing
- static class SimpleConfig extends AbstractMongoClientConfiguration {
+ static class SimpleConfig extends MongoClientClosingTestConfiguration {
@Override
public MongoClient mongoClient() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java
index bff79ea00f..be12fa8397 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryParserIntegrationTests.java
@@ -19,7 +19,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
@@ -74,6 +73,7 @@ public void parsesWriteConcern() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("namespace/db-factory-bean.xml");
assertWriteConcern(ctx, WriteConcern.ACKNOWLEDGED);
+ ctx.close();
}
@Test // DATAMONGO-2199
@@ -82,6 +82,7 @@ public void parsesCustomWriteConcern() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
"namespace/db-factory-bean-custom-write-concern.xml");
assertWriteConcern(ctx, new WriteConcern("rack1"));
+ ctx.close();
}
@Test // DATAMONGO-331
@@ -90,10 +91,10 @@ public void readsReplicasWriteConcernCorrectly() {
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
"namespace/db-factory-bean-custom-write-concern.xml");
MongoDatabaseFactory factory = ctx.getBean("second", MongoDatabaseFactory.class);
- MongoDatabase db = factory.getMongoDatabase();
+ ctx.close();
+ MongoDatabase db = factory.getMongoDatabase();
assertThat(db.getWriteConcern()).isEqualTo(WriteConcern.W2);
- ctx.close();
}
// This test will fail since equals in WriteConcern uses == for _w and not .equals
@@ -127,6 +128,8 @@ public void setsUpMongoDbFactoryUsingAMongoUriWithoutCredentials() {
MongoDatabaseFactory dbFactory = factory.getBean("mongoDbFactory", MongoDatabaseFactory.class);
MongoDatabase db = dbFactory.getMongoDatabase();
assertThat(db.getName()).isEqualTo("database");
+
+ factory.destroyBean(dbFactory);
}
@Test // DATAMONGO-1218
@@ -171,6 +174,8 @@ public void usesConnectionStringToCreateClientClient() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("namespace/db-factory-bean.xml");
MongoDatabaseFactory dbFactory = ctx.getBean("with-connection-string", MongoDatabaseFactory.class);
+ ctx.close();
+
assertThat(dbFactory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
assertThat(ReflectionTestUtils.getField(dbFactory, "mongoClient"))
.isInstanceOf(com.mongodb.client.MongoClient.class);
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/ReactiveAuditingTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/ReactiveAuditingTests.java
index e475d41acf..5f515d2281 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/ReactiveAuditingTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/ReactiveAuditingTests.java
@@ -21,6 +21,7 @@
import org.springframework.data.mapping.callback.EntityCallback;
import org.springframework.data.mongodb.core.mapping.event.AuditingEntityCallback;
import org.springframework.data.mongodb.core.mapping.event.ReactiveAuditingEntityCallback;
+import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
import org.springframework.test.util.ReflectionTestUtils;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -75,7 +76,7 @@ class ReactiveAuditingTests {
@EnableReactiveMongoAuditing
@EnableReactiveMongoRepositories(basePackageClasses = ReactiveAuditingTests.class, considerNestedRepositories = true,
includeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = ReactiveAuditablePersonRepository.class))
- static class Config extends AbstractReactiveMongoConfiguration {
+ static class Config extends ReactiveMongoClientClosingTestConfiguration {
@Override
protected String getDatabaseName() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
index de79d7725f..ddb4ece683 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
@@ -64,6 +64,7 @@
import org.springframework.data.mapping.MappingException;
import org.springframework.data.mongodb.InvalidMongoDbApiUsageException;
import org.springframework.data.mongodb.MongoDatabaseFactory;
+import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
import org.springframework.data.mongodb.core.convert.LazyLoadingProxy;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.index.Index;
@@ -3580,7 +3581,7 @@ public void removeShouldConsiderLimit() {
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
.collect(Collectors.toList());
- template.insertAll(samples);
+ template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
DeleteResult wr = template.remove(query(where("field").is("lannister")).limit(25), Sample.class);
@@ -3595,7 +3596,7 @@ public void removeShouldConsiderSkipAndSort() {
.mapToObj(i -> new Sample("id-" + i, i % 2 == 0 ? "stark" : "lannister")) //
.collect(Collectors.toList());
- template.insertAll(samples);
+ template.bulkOps(BulkMode.UNORDERED, Sample.class).insert(samples).execute();
DeleteResult wr = template.remove(new Query().skip(25).with(Sort.by("field")), Sample.class);
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
index 7fa2621aaf..5217371230 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
@@ -37,13 +37,13 @@
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
import org.springframework.data.geo.Polygon;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.TestEntities;
import org.springframework.data.mongodb.core.Venue;
import org.springframework.data.mongodb.core.query.NearQuery;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@@ -60,7 +60,7 @@
public abstract class AbstractGeoSpatialTests {
@Configuration
- static class TestConfig extends AbstractMongoClientConfiguration {
+ static class TestConfig extends MongoClientClosingTestConfiguration {
@Override
protected String getDatabaseName() {
@@ -111,10 +111,7 @@ protected void removeVenues() {
}
protected void addVenues() {
-
-
template.bulkOps(BulkMode.UNORDERED, Venue.class).insert(TestEntities.geolocation().newYork()).execute();
-// template.insertAll(TestEntities.geolocation().newYork());
}
@Test
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java
index 4eda0a8f52..d85ee95ee7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/GeoIndexedAppConfig.java
@@ -19,13 +19,13 @@
import java.util.Set;
import org.springframework.context.annotation.Bean;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import com.mongodb.client.MongoClient;
-public class GeoIndexedAppConfig extends AbstractMongoClientConfiguration {
+public class GeoIndexedAppConfig extends MongoClientClosingTestConfiguration {
public static String GEO_DB = "database";
public static String GEO_COLLECTION = "geolocation";
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java
index 761f8f1741..e6a47f218a 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTests.java
@@ -34,6 +34,7 @@
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -72,7 +73,7 @@ public class ApplicationContextEventTests {
static @Client MongoClient mongoClient;
- private ApplicationContext applicationContext;
+ private ConfigurableApplicationContext applicationContext;
private MongoTemplate template;
private SimpleMappingEventListener listener;
@@ -89,7 +90,9 @@ public void setUp() {
@AfterEach
public void cleanUp() {
+
cleanDb();
+ applicationContext.close();
}
private void cleanDb() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java
index ded2cccd60..70ff0ba3c7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/event/ApplicationContextEventTestsAppConfig.java
@@ -17,13 +17,13 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import com.mongodb.client.MongoClient;
@Configuration
-public class ApplicationContextEventTestsAppConfig extends AbstractMongoClientConfiguration {
+public class ApplicationContextEventTestsAppConfig extends MongoClientClosingTestConfiguration {
@Override
public String getDatabaseName() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/ReactiveMongoJsonSchemaTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/ReactiveMongoJsonSchemaTests.java
index a4cef049c3..3986a8033d 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/ReactiveMongoJsonSchemaTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/ReactiveMongoJsonSchemaTests.java
@@ -18,6 +18,7 @@
import static org.springframework.data.mongodb.test.util.Assertions.*;
import lombok.Data;
+import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
import reactor.test.StepVerifier;
import java.time.Duration;
@@ -32,7 +33,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.DataRetrievalFailureException;
-import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.CollectionOptions;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoJsonSchemaMapper;
@@ -56,7 +56,7 @@ public class ReactiveMongoJsonSchemaTests {
static @Client MongoClient mongoClient;
@Configuration
- static class Config extends AbstractReactiveMongoConfiguration {
+ static class Config extends ReactiveMongoClientClosingTestConfiguration {
@Override
public MongoClient reactiveMongoClient() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java
index 9b740d4aea..a6c719fc25 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/PerformanceTests.java
@@ -93,7 +93,10 @@ public void setUp() throws Exception {
factory.afterPropertiesSet();
this.repository = factory.getObject();
+ }
+ void afterEach() {
+ mongo.close();
}
@Test
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java
index 815607730d..b6994a27e0 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java
@@ -28,9 +28,9 @@
import org.bson.Document;
import org.bson.types.ObjectId;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.core.Constants;
import org.springframework.data.annotation.PersistenceConstructor;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
@@ -41,7 +41,6 @@
import org.springframework.data.mongodb.core.convert.DbRefResolverCallback;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoConverter;
-import org.springframework.data.mongodb.core.convert.ReferenceLoader;
import org.springframework.data.mongodb.core.convert.ReferenceLookupDelegate;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
@@ -136,6 +135,11 @@ public List bulkFetch(List dbRefs) {
repository = factory.getRepository(ReactivePersonRepository.class);
}
+ @AfterEach
+ void afterEach() {
+ mongo.close();
+ }
+
@Test // DATAMONGO-1444
public void writeWithWriteConcerns() {
executeWithWriteConcerns((constantName, concern) -> {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
index c534346b1c..7f325ed2a7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
@@ -59,6 +59,7 @@
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
import org.springframework.data.geo.Polygon;
+import org.springframework.data.mongodb.core.BulkOperations.BulkMode;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
@@ -929,7 +930,7 @@ void sliceShouldTraverseElementsWithoutSkippingOnes() {
persons.add(new Person(String.format("%03d", i), "ln" + 1, 100));
}
- repository.saveAll(persons);
+ operations.bulkOps(BulkMode.UNORDERED, Person.class).insert(persons).execute();
Slice slice = repository.findByAgeGreaterThan(50, PageRequest.of(0, 20, Direction.ASC, "firstname"));
assertThat(slice).containsExactlyElementsOf(persons.subList(0, 20));
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ReactiveMongoRepositoryTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ReactiveMongoRepositoryTests.java
index 24eeb94c4a..3ff11afbb7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ReactiveMongoRepositoryTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/ReactiveMongoRepositoryTests.java
@@ -55,7 +55,6 @@
import org.springframework.data.geo.GeoResult;
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
-import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.CollectionOptions;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
@@ -71,6 +70,7 @@
import org.springframework.data.querydsl.ReactiveQuerydslPredicateExecutor;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.ReactiveQueryMethodEvaluationContextProvider;
+import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.mongodb.reactivestreams.client.MongoClient;
@@ -98,7 +98,7 @@ class ReactiveMongoRepositoryTests {
private QPerson person = QPerson.person;
@Configuration
- static class Config extends AbstractReactiveMongoConfiguration {
+ static class Config extends ReactiveMongoClientClosingTestConfiguration {
@Bean
@Override
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoriesRegistrarIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoriesRegistrarIntegrationTests.java
index 32c74686fc..3c194dae64 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoriesRegistrarIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/ReactiveMongoRepositoriesRegistrarIntegrationTests.java
@@ -18,7 +18,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-
+import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -26,10 +26,11 @@
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory;
import org.springframework.data.mongodb.repository.ReactivePersonRepository;
-import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
+import com.mongodb.reactivestreams.client.MongoClient;
+
/**
* Integration tests for {@link ReactiveMongoRepositoriesRegistrar}.
*
@@ -46,7 +47,7 @@ static class Config {
@Bean
public ReactiveMongoTemplate reactiveMongoTemplate() throws Exception {
return new ReactiveMongoTemplate(
- new SimpleReactiveMongoDatabaseFactory(MongoTestUtils.reactiveClient(), "database"));
+ new SimpleReactiveMongoDatabaseFactory(Mockito.mock(MongoClient.class), "database"));
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/ReactiveQuerydslMongoPredicateExecutorTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/ReactiveQuerydslMongoPredicateExecutorTests.java
index 7ffa2c67bb..110f09005f 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/ReactiveQuerydslMongoPredicateExecutorTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/ReactiveQuerydslMongoPredicateExecutorTests.java
@@ -31,7 +31,6 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
@@ -40,7 +39,6 @@
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory;
-import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery;
@@ -53,6 +51,7 @@
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.data.repository.query.FluentQuery;
+import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@@ -80,7 +79,7 @@ public class ReactiveQuerydslMongoPredicateExecutorTests {
QPerson person;
@Configuration
- static class Config extends AbstractReactiveMongoConfiguration {
+ static class Config extends ReactiveMongoClientClosingTestConfiguration {
@Override
public MongoClient reactiveMongoClient() {
@@ -101,10 +100,10 @@ protected Set> getInitialEntitySet() {
@BeforeClass
public static void cleanDb() {
- MongoClient client = MongoTestUtils.reactiveClient();
-
- MongoTestUtils.createOrReplaceCollectionNow("reactive", "person", client);
- MongoTestUtils.createOrReplaceCollectionNow("reactive", "user", client);
+ try (MongoClient client = MongoTestUtils.reactiveClient()) {
+ MongoTestUtils.createOrReplaceCollectionNow("reactive", "person", client);
+ MongoTestUtils.createOrReplaceCollectionNow("reactive", "user", client);
+ }
}
@Before
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java
index a6698d8a3e..1b91c59ce7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleMongoRepositoryVersionedEntityTests.java
@@ -32,12 +32,12 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.data.mongodb.MongoTransactionManager;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
import org.springframework.data.mongodb.repository.VersionedPerson;
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
+import org.springframework.data.mongodb.test.util.MongoClientClosingTestConfiguration;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.data.mongodb.test.util.ReplicaSet;
import org.springframework.test.context.ContextConfiguration;
@@ -55,7 +55,7 @@
public class SimpleMongoRepositoryVersionedEntityTests {
@Configuration
- static class Config extends AbstractMongoClientConfiguration {
+ static class Config extends MongoClientClosingTestConfiguration {
@Override
public MongoClient mongoClient() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepositoryVersionedEntityTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepositoryVersionedEntityTests.java
index 7b6ece0cf2..1e5917a729 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepositoryVersionedEntityTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SimpleReactiveMongoRepositoryVersionedEntityTests.java
@@ -26,16 +26,15 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.OptimisticLockingFailureException;
-import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
import org.springframework.data.mongodb.repository.VersionedPerson;
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
+import org.springframework.data.mongodb.test.util.ReactiveMongoClientClosingTestConfiguration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@@ -49,7 +48,7 @@
public class SimpleReactiveMongoRepositoryVersionedEntityTests {
@Configuration
- static class Config extends AbstractReactiveMongoConfiguration {
+ static class Config extends ReactiveMongoClientClosingTestConfiguration {
@Override
public MongoClient reactiveMongoClient() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoClientClosingTestConfiguration.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoClientClosingTestConfiguration.java
new file mode 100644
index 0000000000..b6b78c2f65
--- /dev/null
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoClientClosingTestConfiguration.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2021 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.mongodb.test.util;
+
+import javax.annotation.PreDestroy;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.MongoDatabaseFactory;
+import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
+import org.springframework.test.util.ReflectionTestUtils;
+
+/**
+ * @author Christoph Strobl
+ */
+public abstract class MongoClientClosingTestConfiguration extends AbstractMongoClientConfiguration {
+
+ @Autowired(required = false) MongoDatabaseFactory dbFactory;
+
+ @PreDestroy
+ public void destroy() {
+
+ if (dbFactory != null) {
+ Object mongo = ReflectionTestUtils.getField(dbFactory, "mongoClient");
+ if (mongo != null) {
+ ReflectionTestUtils.invokeMethod(mongo, "close");
+ }
+ }
+ }
+}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestTemplateConfiguration.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestTemplateConfiguration.java
index d9489b8124..804b2c388d 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestTemplateConfiguration.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestTemplateConfiguration.java
@@ -34,6 +34,7 @@
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
+import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.core.mapping.event.AuditingEventListener;
import org.springframework.data.mongodb.core.mapping.event.MongoMappingEvent;
@@ -64,7 +65,11 @@ MongoConverter mongoConverter() {
if (converter == null) {
- converter = new MappingMongoConverter(new DefaultDbRefResolver(databaseFactory()), mappingContext());
+ if(dbFactoryConfig.syncClient != null || syncClient != null) {
+ converter = new MappingMongoConverter(new DefaultDbRefResolver(databaseFactory()), mappingContext());
+ } else {
+ converter = new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext());
+ }
if (mongoConverterConfigurer.customConversions != null) {
converter.setCustomConversions(mongoConverterConfigurer.customConversions);
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReactiveMongoClientClosingTestConfiguration.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReactiveMongoClientClosingTestConfiguration.java
new file mode 100644
index 0000000000..b6240ed778
--- /dev/null
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReactiveMongoClientClosingTestConfiguration.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2021 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.mongodb.test.util;
+
+import javax.annotation.PreDestroy;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory;
+import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import com.mongodb.reactivestreams.client.MongoClient;
+
+/**
+ * @author Christoph Strobl
+ */
+public abstract class ReactiveMongoClientClosingTestConfiguration extends AbstractReactiveMongoConfiguration {
+
+ @Autowired(required = false) ReactiveMongoDatabaseFactory dbFactory;
+
+ @PreDestroy
+ public void destroy() {
+
+ if (dbFactory != null) {
+ Object mongo = ReflectionTestUtils.getField(dbFactory, "mongo");
+ if (mongo != null) {
+ ((MongoClient) mongo).close();
+ }
+ }
+ }
+}