Skip to content

Commit 0e13211

Browse files
committed
Test refactor to support runOn field
1 parent 019e199 commit 0e13211

File tree

28 files changed

+406
-409
lines changed

28 files changed

+406
-409
lines changed

driver-async/src/test/functional/com/mongodb/async/client/ChangeStreamsTest.java

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.mongodb.async.client;
1818

19-
import com.mongodb.ClusterFixture;
2019
import com.mongodb.MongoException;
2120
import com.mongodb.MongoNamespace;
2221
import com.mongodb.WriteConcern;
@@ -26,7 +25,6 @@
2625
import com.mongodb.client.model.changestream.ChangeStreamDocument;
2726
import com.mongodb.client.model.changestream.OperationType;
2827
import com.mongodb.client.test.CollectionHelper;
29-
import com.mongodb.connection.ServerVersion;
3028
import com.mongodb.event.CommandEvent;
3129
import com.mongodb.internal.connection.TestCommandListener;
3230
import com.mongodb.lang.Nullable;
@@ -54,17 +52,15 @@
5452
import java.util.Queue;
5553
import java.util.concurrent.TimeUnit;
5654

57-
import static com.mongodb.ClusterFixture.isDiscoverableReplicaSet;
58-
import static com.mongodb.ClusterFixture.isSharded;
59-
import static com.mongodb.ClusterFixture.isStandalone;
55+
import static com.mongodb.JsonTestServerVersionChecker.skipTest;
6056
import static com.mongodb.async.client.Fixture.getMongoClientBuilderFromConnectionString;
6157
import static com.mongodb.client.CommandMonitoringTestHelper.getExpectedEvents;
6258
import static java.lang.String.format;
6359
import static java.util.Collections.singletonList;
6460
import static org.junit.Assert.assertEquals;
6561
import static org.junit.Assert.assertNull;
62+
import static org.junit.Assume.assumeFalse;
6663
import static org.junit.Assume.assumeNotNull;
67-
import static org.junit.Assume.assumeTrue;
6864

6965
// See https://github.com/mongodb/specifications/tree/master/source/retryable-writes/tests
7066
@RunWith(Parameterized.class)
@@ -74,17 +70,19 @@ public class ChangeStreamsTest extends DatabaseTestCase {
7470
private final MongoNamespace namespace;
7571
private final MongoNamespace namespace2;
7672
private final BsonDocument definition;
73+
private final boolean skipTest;
7774

7875
private MongoClient mongoClient;
7976
private TestCommandListener commandListener;
8077

8178
public ChangeStreamsTest(final String filename, final String description, final MongoNamespace namespace,
82-
final MongoNamespace namespace2, final BsonDocument definition) {
79+
final MongoNamespace namespace2, final BsonDocument definition, final boolean skipTest) {
8380
this.filename = filename;
8481
this.description = description;
8582
this.namespace = namespace;
8683
this.namespace2 = namespace2;
8784
this.definition = definition;
85+
this.skipTest = skipTest;
8886
}
8987

9088
@BeforeClass
@@ -97,27 +95,7 @@ public static void afterClass() {
9795

9896
@Before
9997
public void setUp() {
100-
ServerVersion serverVersion = ClusterFixture.getServerVersion();
101-
if (definition.containsKey("minServerVersion")) {
102-
assumeTrue(serverVersion.compareTo(getServerVersion("minServerVersion")) > 0);
103-
}
104-
if (definition.containsKey("maxServerVersion")) {
105-
assumeTrue(serverVersion.compareTo(getServerVersion("maxServerVersion")) < 0);
106-
}
107-
if (definition.containsKey("topology")) {
108-
BsonArray topologyTypes = definition.getArray("topology");
109-
for (BsonValue type : topologyTypes) {
110-
String typeString = type.asString().getValue();
111-
if (typeString.equals("sharded")) {
112-
assumeTrue(isSharded());
113-
} else if (typeString.equals("replicaset")) {
114-
assumeTrue(isDiscoverableReplicaSet());
115-
} else if (typeString.equals("single")) {
116-
assumeTrue(isStandalone());
117-
}
118-
}
119-
}
120-
98+
assumeFalse(skipTest);
12199
CollectionHelper.dropDatabase(namespace.getDatabaseName(), WriteConcern.MAJORITY);
122100
CollectionHelper<BsonDocument> collectionHelper = new CollectionHelper<BsonDocument>(new BsonDocumentCodec(), namespace);
123101
collectionHelper.drop();
@@ -291,16 +269,12 @@ public static Collection<Object[]> data() throws URISyntaxException, IOException
291269
testDocument.getString("collection2_name").getValue());
292270
for (BsonValue test : testDocument.getArray("tests")) {
293271
data.add(new Object[]{file.getName(), test.asDocument().getString("description").getValue(),
294-
namespace, namespace2, test.asDocument()});
272+
namespace, namespace2, test.asDocument(), skipTest(testDocument, test.asDocument())});
295273
}
296274
}
297275
return data;
298276
}
299277

300-
private ServerVersion getServerVersion(final String fieldName) {
301-
String[] versionStringArray = definition.getString(fieldName).getValue().split("\\.");
302-
return new ServerVersion(Integer.parseInt(versionStringArray[0]), Integer.parseInt(versionStringArray[1]));
303-
}
304278
<T> T futureResult(final FutureResultCallback<T> callback) {
305279
try {
306280
return callback.get(5, TimeUnit.SECONDS);

driver-async/src/test/functional/com/mongodb/async/client/CrudTest.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
import java.util.List;
3636

3737
import static com.mongodb.ClusterFixture.getDefaultDatabaseName;
38-
import static com.mongodb.ClusterFixture.serverVersionGreaterThan;
39-
import static com.mongodb.ClusterFixture.serverVersionLessThan;
38+
import static com.mongodb.JsonTestServerVersionChecker.skipTest;
4039
import static com.mongodb.async.client.Fixture.getDefaultDatabase;
4140
import static com.mongodb.async.client.Fixture.getMongoClient;
4241
import static org.junit.Assert.assertEquals;
42+
import static org.junit.Assume.assumeFalse;
4343

4444
// See https://github.com/mongodb/specifications/tree/master/source/crud/tests
4545
@RunWith(Parameterized.class)
@@ -49,22 +49,25 @@ public class CrudTest extends DatabaseTestCase {
4949
private final String databaseName;
5050
private final BsonArray data;
5151
private final BsonDocument definition;
52+
private final boolean skipTest;
5253
private MongoCollection<BsonDocument> collection;
5354
private JsonPoweredCrudTestHelper helper;
5455

5556
public CrudTest(final String filename, final String description, final String databaseName,
56-
final BsonArray data, final BsonDocument definition) {
57+
final BsonArray data, final BsonDocument definition, final boolean skipTest) {
5758
this.filename = filename;
5859
this.description = description;
5960
this.databaseName = databaseName;
6061
this.data = data;
6162
this.definition = definition;
63+
this.skipTest = skipTest;
6264
}
6365

6466
@Before
6567
@Override
6668
public void setUp() {
6769
super.setUp();
70+
assumeFalse(skipTest);
6871
collection = Fixture.initializeCollection(new MongoNamespace(databaseName, getClass().getName()))
6972
.withDocumentClass(BsonDocument.class);
7073
helper = new JsonPoweredCrudTestHelper(description, getMongoClient().getDatabase(databaseName), collection);
@@ -119,18 +122,10 @@ public static Collection<Object[]> data() throws URISyntaxException, IOException
119122
List<Object[]> data = new ArrayList<Object[]>();
120123
for (File file : JsonPoweredTestHelper.getTestFiles("/crud")) {
121124
BsonDocument testDocument = JsonPoweredTestHelper.getTestDocument(file);
122-
if (testDocument.containsKey("minServerVersion")
123-
&& serverVersionLessThan(testDocument.getString("minServerVersion").getValue())) {
124-
continue;
125-
}
126-
if (testDocument.containsKey("maxServerVersion")
127-
&& serverVersionGreaterThan(testDocument.getString("maxServerVersion").getValue())) {
128-
continue;
129-
}
130125
for (BsonValue test : testDocument.getArray("tests")) {
131126
data.add(new Object[]{file.getName(), test.asDocument().getString("description").getValue(),
132127
testDocument.getString("database_name", new BsonString(getDefaultDatabaseName())).getValue(),
133-
testDocument.getArray("data"), test.asDocument()});
128+
testDocument.getArray("data"), test.asDocument(), skipTest(testDocument, test.asDocument())});
134129
}
135130
}
136131
return data;

driver-async/src/test/functional/com/mongodb/async/client/RetryableReadsTest.java

Lines changed: 8 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.mongodb.async.client;
1818

1919
import com.mongodb.Block;
20-
import com.mongodb.ClusterFixture;
2120
import com.mongodb.ConnectionString;
2221
import com.mongodb.MongoException;
2322
import com.mongodb.MongoNamespace;
@@ -30,7 +29,6 @@
3029
import com.mongodb.client.model.CreateCollectionOptions;
3130
import com.mongodb.client.test.CollectionHelper;
3231
import com.mongodb.connection.ServerSettings;
33-
import com.mongodb.connection.ServerVersion;
3432
import com.mongodb.connection.SocketSettings;
3533
import com.mongodb.connection.SslSettings;
3634
import com.mongodb.event.CommandEvent;
@@ -62,9 +60,7 @@
6260
import java.util.concurrent.TimeUnit;
6361

6462
import static com.mongodb.ClusterFixture.getMultiMongosConnectionString;
65-
import static com.mongodb.ClusterFixture.isDiscoverableReplicaSet;
66-
import static com.mongodb.ClusterFixture.isStandalone;
67-
import static com.mongodb.ClusterFixture.serverVersionLessThan;
63+
import static com.mongodb.JsonTestServerVersionChecker.skipTest;
6864
import static com.mongodb.async.client.Fixture.getConnectionString;
6965
import static com.mongodb.async.client.Fixture.getDefaultDatabaseName;
7066
import static com.mongodb.async.client.Fixture.isSharded;
@@ -87,7 +83,7 @@ public class RetryableReadsTest {
8783
private final BsonDocument gridFSData;
8884
private final BsonArray data;
8985
private final BsonDocument definition;
90-
private final BsonArray runOn;
86+
private final boolean skipTest;
9187
private JsonPoweredCrudTestHelper helper;
9288
private final TestCommandListener commandListener;
9389
private MongoClient mongoClient;
@@ -100,11 +96,10 @@ public class RetryableReadsTest {
10096

10197
private static final long MIN_HEARTBEAT_FREQUENCY_MS = 50L;
10298

103-
public RetryableReadsTest(final String filename, final BsonArray runOn, final String description, final String databaseName,
99+
public RetryableReadsTest(final String filename, final String description, final String databaseName,
104100
final String collectionName, final BsonArray data, final BsonString bucketName,
105-
final BsonDocument definition) {
101+
final BsonDocument definition, final boolean skipTest) {
106102
this.filename = filename;
107-
this.runOn = runOn;
108103
this.description = description;
109104
this.databaseName = databaseName;
110105
this.collectionName = collectionName;
@@ -113,48 +108,14 @@ public RetryableReadsTest(final String filename, final BsonArray runOn, final St
113108
this.gridFSData = (bucketName != null ? (BsonDocument) data.get(0) : null);
114109
this.data = (bucketName != null ? null : data);
115110
this.commandListener = new TestCommandListener();
111+
this.skipTest = skipTest;
116112
}
117113

118114
@Before
119115
public void setUp() {
116+
assumeFalse(skipTest);
120117
assumeTrue("Skipping test: " + definition.getString("skipReason", new BsonString("")).getValue(),
121118
!definition.containsKey("skipReason"));
122-
123-
boolean topologyFound = false;
124-
for (BsonValue info : runOn) {
125-
final BsonDocument document = info.asDocument();
126-
ServerVersion serverVersion = ClusterFixture.getServerVersion();
127-
128-
if (document.containsKey("minServerVersion")) {
129-
assumeFalse(serverVersion.compareTo(getServerVersion("minServerVersion", document)) < 0);
130-
}
131-
if (document.containsKey("maxServerVersion")) {
132-
assumeFalse(serverVersion.compareTo(getServerVersion("maxServerVersion", document)) > 0);
133-
}
134-
if (document.containsKey("topology")) {
135-
BsonArray topologyTypes = document.getArray("topology");
136-
for (BsonValue type : topologyTypes) {
137-
String typeString = type.asString().getValue();
138-
if (typeString.equals("sharded")) {
139-
topologyFound = isSharded();
140-
} else if (typeString.equals("replicaset")) {
141-
topologyFound = isDiscoverableReplicaSet();
142-
} else if (typeString.equals("single")) {
143-
topologyFound = isStandalone();
144-
}
145-
if (topologyFound) {
146-
break;
147-
}
148-
}
149-
if (topologyFound) {
150-
break;
151-
}
152-
} else {
153-
topologyFound = true;
154-
}
155-
}
156-
assumeTrue("Topology for this test not found.", topologyFound);
157-
158119
collectionHelper = new CollectionHelper<Document>(new DocumentCodec(), new MongoNamespace(databaseName, collectionName));
159120

160121
collectionHelper.killAllSessions();
@@ -351,29 +312,19 @@ public static Collection<Object[]> data() throws URISyntaxException, IOException
351312
List<Object[]> data = new ArrayList<Object[]>();
352313
for (File file : JsonPoweredTestHelper.getTestFiles("/retryable-reads")) {
353314
BsonDocument testDocument = JsonPoweredTestHelper.getTestDocument(file);
354-
if (testDocument.containsKey("minServerVersion")
355-
&& serverVersionLessThan(testDocument.getString("minServerVersion").getValue())) {
356-
continue;
357-
}
358315
for (BsonValue test : testDocument.getArray("tests")) {
359-
data.add(new Object[]{file.getName(), testDocument.getArray("runOn"),
360-
test.asDocument().getString("description").getValue(),
316+
data.add(new Object[]{file.getName(), test.asDocument().getString("description").getValue(),
361317
testDocument.getString("database_name", new BsonString(getDefaultDatabaseName())).getValue(),
362318
testDocument.getString("collection_name",
363319
new BsonString(file.getName().substring(0, file.getName().lastIndexOf(".")))).getValue(),
364320
(testDocument.containsKey("bucket_name") ? new BsonArray(singletonList(testDocument.getDocument("data")))
365321
: testDocument.getArray("data")),
366-
testDocument.getString("bucket_name", null), test.asDocument()});
322+
testDocument.getString("bucket_name", null), test.asDocument(), skipTest(testDocument, test.asDocument())});
367323
}
368324
}
369325
return data;
370326
}
371327

372-
private ServerVersion getServerVersion(final String fieldName, final BsonDocument document) {
373-
String[] versionStringArray = document.getString(fieldName).getValue().split("\\.");
374-
return new ServerVersion(Integer.parseInt(versionStringArray[0]), Integer.parseInt(versionStringArray[1]));
375-
}
376-
377328
private List<BsonDocument> processFiles(final BsonArray bsonArray, final List<BsonDocument> documents) {
378329
for (BsonValue rawDocument : bsonArray.getValues()) {
379330
if (rawDocument.isDocument()) {

0 commit comments

Comments
 (0)