Close clients created during tests.

See #3817
Original pull request: #3987.
This commit is contained in:
Christoph Strobl
2021-09-10 10:34:41 +02:00
committed by Mark Paluch
parent e064b505c9
commit 00792192c3
23 changed files with 150 additions and 45 deletions

View File

@@ -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 {
@Override
protected String getDatabaseName() {

View File

@@ -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() {

View File

@@ -26,6 +26,8 @@ import java.util.Collections;
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;
@@ -160,7 +162,7 @@ public class AbstractMongoConfigurationUnitTests {
@Override
public MongoClient mongoClient() {
return MongoClients.create();
return Mockito.mock(MongoClient.class);
}
@Override
@@ -188,7 +190,7 @@ public class AbstractMongoConfigurationUnitTests {
@Override
public MongoClient mongoClient() {
return MongoClients.create();
return Mockito.mock(MongoClient.class);
}
@Override

View File

@@ -160,7 +160,7 @@ public class AbstractReactiveMongoConfigurationUnitTests {
@Override
public MongoClient reactiveMongoClient() {
return MongoTestUtils.reactiveClient();
return Mockito.mock(MongoClient.class);
}
@Override

View File

@@ -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() {

View File

@@ -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();
assertThat(db.getWriteConcern()).isEqualTo(WriteConcern.W2);
ctx.close();
MongoDatabase db = factory.getMongoDatabase();
assertThat(db.getWriteConcern()).isEqualTo(WriteConcern.W2);
}
// 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);

View File

@@ -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() {

View File

@@ -67,6 +67,7 @@ import org.springframework.data.mapping.MappingException;
import org.springframework.data.mapping.context.PersistentEntities;
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;
@@ -3558,7 +3559,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);
@@ -3573,7 +3574,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);

View File

@@ -36,13 +36,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;
@@ -59,7 +59,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() {
@@ -110,9 +110,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

View File

@@ -20,13 +20,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";

View File

@@ -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;
@@ -73,7 +74,7 @@ public class ApplicationContextEventTests {
static @Client MongoClient mongoClient;
private ApplicationContext applicationContext;
private ConfigurableApplicationContext applicationContext;
private MongoTemplate template;
private SimpleMappingEventListener listener;
@@ -90,7 +91,9 @@ public class ApplicationContextEventTests {
@AfterEach
public void cleanUp() {
cleanDb();
applicationContext.close();
}
private void cleanDb() {

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -93,7 +93,10 @@ public class PerformanceTests {
factory.afterPropertiesSet();
this.repository = factory.getObject();
}
void afterEach() {
mongo.close();
}
@Test

View File

@@ -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) -> {

View File

@@ -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<Person> slice = repository.findByAgeGreaterThan(50, PageRequest.of(0, 20, Direction.ASC, "firstname"));
assertThat(slice).containsExactlyElementsOf(persons.subList(0, 20));

View File

@@ -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

View File

@@ -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"));
}
}

View File

@@ -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

View File

@@ -31,12 +31,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;
@@ -54,7 +54,7 @@ import com.mongodb.client.MongoClient;
public class SimpleMongoRepositoryVersionedEntityTests {
@Configuration
static class Config extends AbstractMongoClientConfiguration {
static class Config extends MongoClientClosingTestConfiguration {
@Override
public MongoClient mongoClient() {

View File

@@ -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() {

View File

@@ -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");
}
}
}
}

View File

@@ -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();
}
}
}
}