Skip to content

Commit 63d9875

Browse files
christophstroblmp911de
authored andcommitted
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.
1 parent b7ffff4 commit 63d9875

File tree

5 files changed

+48
-20
lines changed

5 files changed

+48
-20
lines changed

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,17 @@
2121
import java.util.Set;
2222

2323
import org.bson.Document;
24-
import org.junit.After;
25-
import org.junit.Before;
26-
import org.junit.runner.RunWith;
27-
24+
import org.junit.jupiter.api.AfterEach;
25+
import org.junit.jupiter.api.BeforeEach;
26+
import org.junit.jupiter.api.extension.ExtendWith;
2827
import org.springframework.beans.factory.annotation.Autowired;
2928
import org.springframework.context.annotation.Configuration;
3029
import org.springframework.dao.DataAccessException;
3130
import org.springframework.data.mongodb.core.CollectionCallback;
3231
import org.springframework.data.mongodb.core.MongoOperations;
3332
import org.springframework.data.mongodb.test.util.MongoTestUtils;
3433
import org.springframework.test.context.ContextConfiguration;
35-
import org.springframework.test.context.junit4.SpringRunner;
34+
import org.springframework.test.context.junit.jupiter.SpringExtension;
3635

3736
import com.mongodb.MongoException;
3837
import com.mongodb.client.MongoClient;
@@ -41,7 +40,7 @@
4140
/**
4241
* @author Oliver Gierke
4342
*/
44-
@RunWith(SpringRunner.class)
43+
@ExtendWith(SpringExtension.class)
4544
@ContextConfiguration
4645
public abstract class AbstractIntegrationTests {
4746

@@ -71,8 +70,8 @@ protected boolean autoIndexCreation() {
7170

7271
@Autowired MongoOperations operations;
7372

74-
@Before
75-
@After
73+
@BeforeEach
74+
@AfterEach
7675
public void cleanUp() {
7776

7877
for (String collectionName : operations.getCollectionNames()) {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import java.util.List;
2222
import java.util.Map;
2323

24-
import org.junit.Before;
25-
import org.junit.Test;
24+
import org.junit.jupiter.api.BeforeEach;
25+
import org.junit.jupiter.api.Test;
2626
import org.springframework.beans.factory.annotation.Autowired;
2727
import org.springframework.dao.DataAccessException;
2828
import org.springframework.data.geo.Point;
@@ -35,6 +35,7 @@
3535
import org.springframework.data.mongodb.core.index.IndexInfo;
3636
import org.springframework.data.mongodb.core.index.IndexOperations;
3737
import org.springframework.data.mongodb.core.mapping.Document;
38+
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
3839

3940
import com.mongodb.MongoException;
4041
import com.mongodb.WriteConcern;
@@ -52,7 +53,7 @@ public class GeoSpatialIndexTests extends AbstractIntegrationTests {
5253

5354
@Autowired private MongoTemplate template;
5455

55-
@Before
56+
@BeforeEach
5657
public void setUp() {
5758

5859
template.setWriteConcern(WriteConcern.JOURNALED);
@@ -82,6 +83,7 @@ public void test2dSphereIndex() {
8283
}
8384

8485
@Test // DATAMONGO-778
86+
@EnableIfMongoServerVersion(isLessThan = "5.0")
8587
public void testHaystackIndex() {
8688

8789
try {

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,11 @@ public void evaluatesTimeoutSpelExpresssionWithBeanReference() {
155155
});
156156

157157
assertThat(indexInfo).isPresent();
158-
assertThat(indexInfo.get()).containsEntry("expireAfterSeconds", 11L);
158+
assertThat(indexInfo.get()).hasEntrySatisfying("expireAfterSeconds", timeout -> {
159+
160+
// MongoDB 5 returns int not long
161+
assertThat(timeout).isIn(11, 11L);
162+
});
159163
}
160164

161165
@Target({ ElementType.FIELD })

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@
3838
import org.springframework.data.mongodb.core.MongoTemplate;
3939
import org.springframework.data.mongodb.core.messaging.ChangeStreamRequest.ChangeStreamRequestOptions;
4040
import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions;
41+
import org.springframework.data.mongodb.test.util.Client;
4142
import org.springframework.data.mongodb.test.util.EnableIfMongoServerVersion;
4243
import org.springframework.data.mongodb.test.util.EnableIfReplicaSetAvailable;
4344
import org.springframework.data.mongodb.test.util.MongoServerCondition;
4445
import org.springframework.data.mongodb.test.util.MongoTemplateExtension;
46+
import org.springframework.data.mongodb.test.util.MongoTestUtils;
4547
import org.springframework.data.mongodb.test.util.Template;
4648
import org.springframework.util.ErrorHandler;
4749

50+
import com.mongodb.client.MongoClient;
4851
import com.mongodb.client.MongoCollection;
4952
import com.mongodb.client.model.CreateCollectionOptions;
5053
import com.mongodb.client.model.changestream.ChangeStreamDocument;
@@ -60,9 +63,12 @@ public class DefaultMessageListenerContainerTests {
6063
static final String DATABASE_NAME = "change-stream-events";
6164
static final String COLLECTION_NAME = "collection-1";
6265
static final String COLLECTION_2_NAME = "collection-2";
66+
static final String COLLECTION_3_NAME = "collection-3";
6367

6468
static final Duration TIMEOUT = Duration.ofSeconds(2);
6569

70+
@Client static MongoClient client;
71+
6672
@Template(database = DATABASE_NAME, initialEntitySet = Person.class) //
6773
static MongoTemplate template;
6874

@@ -74,10 +80,13 @@ public class DefaultMessageListenerContainerTests {
7480
private CollectingMessageListener<Object, Object> messageListener;
7581

7682
@BeforeEach
77-
void beforeEach() {
83+
void beforeEach() throws InterruptedException {
84+
85+
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_NAME, client);
86+
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_2_NAME, client);
87+
MongoTestUtils.dropCollectionNow(DATABASE_NAME, COLLECTION_3_NAME, client);
7888

79-
template.dropCollection(COLLECTION_NAME);
80-
template.dropCollection(COLLECTION_2_NAME);
89+
Thread.sleep(100);
8190

8291
messageListener = new CollectingMessageListener<>();
8392
}
@@ -281,7 +290,7 @@ public void abortsSubscriptionOnError() throws InterruptedException {
281290
@Test // DATAMONGO-1803
282291
public void callsDefaultErrorHandlerOnError() throws InterruptedException {
283292

284-
dbFactory.getMongoDatabase().createCollection(COLLECTION_NAME,
293+
dbFactory.getMongoDatabase().createCollection(COLLECTION_3_NAME,
285294
new CreateCollectionOptions().capped(true).maxDocuments(10000).sizeInBytes(10000));
286295

287296
collection.insertOne(new Document("_id", "id-1").append("value", "foo"));
@@ -298,10 +307,7 @@ public void callsDefaultErrorHandlerOnError() throws InterruptedException {
298307
Document.class);
299308

300309
SubscriptionUtils.awaitSubscription(subscription);
301-
302-
template.dropCollection(COLLECTION_NAME);
303-
304-
Thread.sleep(20);
310+
dbFactory.getMongoDatabase().drop();
305311

306312
verify(errorHandler, atLeast(1)).handleError(any(DataAccessException.class));
307313
} finally {

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,23 @@ public static void dropCollectionNow(String dbName, String collectionName,
166166
.verifyComplete();
167167
}
168168

169+
/**
170+
* Create a {@link com.mongodb.client.MongoCollection} if it does not exist, or drop and recreate it if it does and
171+
* verify operation result.
172+
*
173+
* @param dbName must not be {@literal null}.
174+
* @param collectionName must not be {@literal null}.
175+
* @param client must not be {@literal null}.
176+
*/
177+
public static void dropCollectionNow(String dbName, String collectionName,
178+
com.mongodb.client.MongoClient client) {
179+
180+
com.mongodb.client.MongoDatabase database = client.getDatabase(dbName)
181+
.withWriteConcern(WriteConcern.MAJORITY).withReadPreference(ReadPreference.primary());
182+
183+
database.getCollection(collectionName).drop();
184+
}
185+
169186
/**
170187
* Remove all documents from the {@link MongoCollection} with given name in the according {@link MongoDatabase
171188
* database}.

0 commit comments

Comments
 (0)