Close clients created during tests.
See #3817 Original pull request: #3987.
This commit is contained in:
committed by
Mark Paluch
parent
e064b505c9
commit
00792192c3
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -160,7 +160,7 @@ public class AbstractReactiveMongoConfigurationUnitTests {
|
||||
|
||||
@Override
|
||||
public MongoClient reactiveMongoClient() {
|
||||
return MongoTestUtils.reactiveClient();
|
||||
return Mockito.mock(MongoClient.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -93,7 +93,10 @@ public class PerformanceTests {
|
||||
factory.afterPropertiesSet();
|
||||
|
||||
this.repository = factory.getObject();
|
||||
}
|
||||
|
||||
void afterEach() {
|
||||
mongo.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -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) -> {
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user