diff --git a/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java b/spring-data-mongodb/src/test/java/ConfigClassInDefaultPackage.java index 49ab1116c..6bc3cfd02 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.Collections; 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 @@ import com.mongodb.client.MongoClients; * @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 2d3ec1903..b0392e8c6 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.context.annotation.Configuration; 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 @@ import com.mongodb.client.MongoCollection; 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 d0250f335..59d03600b 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 java.util.Set; 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 @@ public class AbstractMongoConfigurationUnitTests { @Override public MongoClient mongoClient() { - return MongoClients.create(); + return Mockito.mock(MongoClient.class); } @Override @@ -186,7 +187,7 @@ public class AbstractMongoConfigurationUnitTests { @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 33a2f6110..1b55113fb 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 @@ public class AbstractReactiveMongoConfigurationUnitTests { @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 981a050f8..d34fbc3cc 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.MongoRepository; 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 @@ class AuditingViaJavaConfigRepositoriesTests { @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 bff79ea00..be12fa839 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 static org.assertj.core.api.Assertions.*; 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 class MongoDbFactoryParserIntegrationTests { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("namespace/db-factory-bean.xml"); assertWriteConcern(ctx, WriteConcern.ACKNOWLEDGED); + ctx.close(); } @Test // DATAMONGO-2199 @@ -82,6 +82,7 @@ public class MongoDbFactoryParserIntegrationTests { 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 class MongoDbFactoryParserIntegrationTests { 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 class MongoDbFactoryParserIntegrationTests { 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 class MongoDbFactoryParserIntegrationTests { 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 e475d41ac..5f515d228 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.core.ResolvableType; 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 de79d7725..ddb4ece68 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.domain.Sort.Direction; 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 class MongoTemplateTests { .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 class MongoTemplateTests { .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 7fa2621aa..521737123 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.GeoResults; 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 @@ import com.mongodb.client.MongoClient; public abstract class AbstractGeoSpatialTests { @Configuration - static class TestConfig extends AbstractMongoClientConfiguration { + static class TestConfig extends MongoClientClosingTestConfiguration { @Override protected String getDatabaseName() { @@ -111,10 +111,7 @@ public abstract class AbstractGeoSpatialTests { } 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 4eda0a8f5..d85ee95ee 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.Collections; 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 761f8f174..e6a47f218 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.Test; 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 class ApplicationContextEventTests { @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 ded2cccd6..70ff0ba3c 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 @@ package org.springframework.data.mongodb.core.mapping.event; 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 a4cef049c..3986a8033 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 @@ package org.springframework.data.mongodb.core.schema; 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.junit.jupiter.api.extension.ExtendWith; 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 9b740d4ae..a6c719fc2 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 class PerformanceTests { 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 815607730..b6994a27e 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 java.util.stream.Collectors; 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.DbRefResolver; 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 class ReactivePerformanceTests { 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 c534346b1..7f325ed2a 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.Metric; 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 @@ public abstract class AbstractPersonRepositoryIntegrationTests { 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 24eeb94c4..3ff11afbb 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.Distance; 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.mongodb.test.util.MongoTestUtils; 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 32c74686f..3c194dae6 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 @@ package org.springframework.data.mongodb.repository.config; 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.context.annotation.Configuration; 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 @@ public class ReactiveMongoRepositoriesRegistrarIntegrationTests { @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 7ffa2c67b..110f09005 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.Before; 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.PageRequest; 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.User; 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 @@ public class ReactiveQuerydslMongoPredicateExecutorTests { @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 a6698d8a3..1b91c59ce 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.beans.factory.annotation.Autowired; 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 @@ import com.mongodb.client.MongoClient; 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 7b6ece0cf..1e5917a72 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 java.util.Set; 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 @@ import com.mongodb.reactivestreams.client.MongoClient; 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 000000000..b6b78c2f6 --- /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/ReactiveMongoClientClosingTestConfiguration.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/ReactiveMongoClientClosingTestConfiguration.java new file mode 100644 index 000000000..b6240ed77 --- /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(); + } + } + } +}