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.
This commit is contained in:
committed by
Mark Paluch
parent
b7ffff4769
commit
63d9875576
@@ -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;
|
||||
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;
|
||||
/**
|
||||
* @author Oliver Gierke
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration
|
||||
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()) {
|
||||
|
||||
@@ -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;
|
||||
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 {
|
||||
|
||||
@Autowired private MongoTemplate template;
|
||||
|
||||
@Before
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
|
||||
template.setWriteConcern(WriteConcern.JOURNALED);
|
||||
@@ -82,6 +83,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests {
|
||||
}
|
||||
|
||||
@Test // DATAMONGO-778
|
||||
@EnableIfMongoServerVersion(isLessThan = "5.0")
|
||||
public void testHaystackIndex() {
|
||||
|
||||
try {
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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 {
|
||||
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 {
|
||||
private CollectingMessageListener<Object, Object> messageListener;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
void beforeEach() throws InterruptedException {
|
||||
|
||||
template.dropCollection(COLLECTION_NAME);
|
||||
template.dropCollection(COLLECTION_2_NAME);
|
||||
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_NAME, client);
|
||||
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_2_NAME, client);
|
||||
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_3_NAME, client);
|
||||
|
||||
Thread.sleep(100);
|
||||
|
||||
messageListener = new CollectingMessageListener<>();
|
||||
}
|
||||
@@ -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 {
|
||||
Document.class);
|
||||
|
||||
SubscriptionUtils.awaitSubscription(subscription);
|
||||
|
||||
template.dropCollection(COLLECTION_NAME);
|
||||
|
||||
Thread.sleep(20);
|
||||
dbFactory.getMongoDatabase().drop();
|
||||
|
||||
verify(errorHandler, atLeast(1)).handleError(any(DataAccessException.class));
|
||||
} finally {
|
||||
|
||||
@@ -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}.
|
||||
|
||||
Reference in New Issue
Block a user