Browse Source

Update test for MongoDB Server 5.0.

Update assertions for changed return types, add a bit of think time and disable tests for no longer supported features.

See #3696
Original pull request: #3753.
pull/3833/head
Christoph Strobl 5 years ago committed by Mark Paluch
parent
commit
63d9875576
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 15
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractIntegrationTests.java
  2. 8
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoSpatialIndexTests.java
  3. 6
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java
  4. 22
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java
  5. 17
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java

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

@ -21,10 +21,9 @@ import java.util.Collections; @@ -21,10 +21,9 @@ import java.util.Collections;
import java.util.Set;
import org.bson.Document;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.DataAccessException;
@ -32,7 +31,7 @@ import org.springframework.data.mongodb.core.CollectionCallback; @@ -32,7 +31,7 @@ import org.springframework.data.mongodb.core.CollectionCallback;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
@ -41,7 +40,7 @@ import com.mongodb.client.MongoCollection; @@ -41,7 +40,7 @@ import com.mongodb.client.MongoCollection;
/**
* @author Oliver Gierke
*/
@RunWith(SpringRunner.class)
@ExtendWith(SpringExtension.class)
@ContextConfiguration
public abstract class AbstractIntegrationTests {
@ -71,8 +70,8 @@ public abstract class AbstractIntegrationTests { @@ -71,8 +70,8 @@ public abstract class AbstractIntegrationTests {
@Autowired MongoOperations operations;
@Before
@After
@BeforeEach
@AfterEach
public void cleanUp() {
for (String collectionName : operations.getCollectionNames()) {

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

@ -21,8 +21,8 @@ import java.util.ArrayList; @@ -21,8 +21,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.geo.Point;
@ -35,6 +35,7 @@ import org.springframework.data.mongodb.core.index.GeoSpatialIndexed; @@ -35,6 +35,7 @@ import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
import org.springframework.data.mongodb.core.index.IndexInfo;
import org.springframework.data.mongodb.core.index.IndexOperations;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
@ -52,7 +53,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests { @@ -52,7 +53,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests {
@Autowired private MongoTemplate template;
@Before
@BeforeEach
public void setUp() {
template.setWriteConcern(WriteConcern.JOURNALED);
@ -82,6 +83,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests { @@ -82,6 +83,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests {
}
@Test // DATAMONGO-778
@EnableIfMongoServerVersion(isLessThan = "5.0")
public void testHaystackIndex() {
try {

6
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/IndexingIntegrationTests.java

@ -155,7 +155,11 @@ public class IndexingIntegrationTests { @@ -155,7 +155,11 @@ public class IndexingIntegrationTests {
});
assertThat(indexInfo).isPresent();
assertThat(indexInfo.get()).containsEntry("expireAfterSeconds", 11L);
assertThat(indexInfo.get()).hasEntrySatisfying("expireAfterSeconds", timeout -> {
// MongoDB 5 returns int not long
assertThat(timeout).isIn(11, 11L);
});
}
@Target({ ElementType.FIELD })

22
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/messaging/DefaultMessageListenerContainerTests.java

@ -38,13 +38,16 @@ import org.springframework.data.mongodb.core.ChangeStreamOptions; @@ -38,13 +38,16 @@ import org.springframework.data.mongodb.core.ChangeStreamOptions;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.messaging.ChangeStreamRequest.ChangeStreamRequestOptions;
import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions;
import org.springframework.data.mongodb.test.util.Client;
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
import org.springframework.data.mongodb.test.util.MongoServerCondition;
import org.springframework.data.mongodb.test.util.MongoTemplateExtension;
import org.springframework.data.mongodb.test.util.MongoTestUtils;
import org.springframework.data.mongodb.test.util.Template;
import org.springframework.util.ErrorHandler;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.changestream.ChangeStreamDocument;
@ -60,9 +63,12 @@ public class DefaultMessageListenerContainerTests { @@ -60,9 +63,12 @@ public class DefaultMessageListenerContainerTests {
static final String DATABASE_NAME = "change-stream-events";
static final String COLLECTION_NAME = "collection-1";
static final String COLLECTION_2_NAME = "collection-2";
static final String COLLECTION_3_NAME = "collection-3";
static final Duration TIMEOUT = Duration.ofSeconds(2);
@Client static MongoClient client;
@Template(database = DATABASE_NAME, initialEntitySet = Person.class) //
static MongoTemplate template;
@ -74,10 +80,13 @@ public class DefaultMessageListenerContainerTests { @@ -74,10 +80,13 @@ public class DefaultMessageListenerContainerTests {
private CollectingMessageListener<Object, Object> messageListener;
@BeforeEach
void beforeEach() {
void beforeEach() throws InterruptedException {
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_NAME, client);
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_2_NAME, client);
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_3_NAME, client);
template.dropCollection(COLLECTION_NAME);
template.dropCollection(COLLECTION_2_NAME);
Thread.sleep(100);
messageListener = new CollectingMessageListener<>();
}
@ -281,7 +290,7 @@ public class DefaultMessageListenerContainerTests { @@ -281,7 +290,7 @@ public class DefaultMessageListenerContainerTests {
@Test // DATAMONGO-1803
public void callsDefaultErrorHandlerOnError() throws InterruptedException {
dbFactory.getMongoDatabase().createCollection(COLLECTION_NAME,
dbFactory.getMongoDatabase().createCollection(COLLECTION_3_NAME,
new CreateCollectionOptions().capped(true).maxDocuments(10000).sizeInBytes(10000));
collection.insertOne(new Document("_id", "id-1").append("value", "foo"));
@ -298,10 +307,7 @@ public class DefaultMessageListenerContainerTests { @@ -298,10 +307,7 @@ public class DefaultMessageListenerContainerTests {
Document.class);
SubscriptionUtils.awaitSubscription(subscription);
template.dropCollection(COLLECTION_NAME);
Thread.sleep(20);
dbFactory.getMongoDatabase().drop();
verify(errorHandler, atLeast(1)).handleError(any(DataAccessException.class));
} finally {

17
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java

@ -166,6 +166,23 @@ public class MongoTestUtils { @@ -166,6 +166,23 @@ public class MongoTestUtils {
.verifyComplete();
}
/**
* Create a {@link com.mongodb.client.MongoCollection} if it does not exist, or drop and recreate it if it does and
* verify operation result.
*
* @param dbName must not be {@literal null}.
* @param collectionName must not be {@literal null}.
* @param client must not be {@literal null}.
*/
public static void dropCollectionNow(String dbName, String collectionName,
com.mongodb.client.MongoClient client) {
com.mongodb.client.MongoDatabase database = client.getDatabase(dbName)
.withWriteConcern(WriteConcern.MAJORITY).withReadPreference(ReadPreference.primary());
database.getCollection(collectionName).drop();
}
/**
* Remove all documents from the {@link MongoCollection} with given name in the according {@link MongoDatabase
* database}.

Loading…
Cancel
Save