Skip to content

Commit 6280158

Browse files
committed
Fix test failures on 8.0 sharded clusters (#1319)
Advance cluster time on all session entities in unified tests to one after the initial data is created JAVA-5334
1 parent 6255437 commit 6280158

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

driver-core/src/test/functional/com/mongodb/client/test/CollectionHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public static void dropDatabase(final String name, final WriteConcern writeConce
109109
}
110110
}
111111

112+
public static BsonDocument getCurrentClusterTime() {
113+
return new CommandReadOperation<BsonDocument>("admin", new BsonDocument("ping", new BsonInt32(1)), new BsonDocumentCodec())
114+
.execute(getBinding()).getDocument("$clusterTime", null);
115+
}
116+
112117
public MongoNamespace getNamespace() {
113118
return namespace;
114119
}

driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
import com.mongodb.ReadConcernLevel;
2424
import com.mongodb.ServerApi;
2525
import com.mongodb.ServerApiVersion;
26-
import com.mongodb.internal.connection.TestClusterListener;
27-
import com.mongodb.logging.TestLoggingInterceptor;
2826
import com.mongodb.TransactionOptions;
2927
import com.mongodb.WriteConcern;
3028
import com.mongodb.assertions.Assertions;
@@ -56,11 +54,13 @@
5654
import com.mongodb.event.ConnectionPoolListener;
5755
import com.mongodb.event.ConnectionPoolReadyEvent;
5856
import com.mongodb.event.ConnectionReadyEvent;
57+
import com.mongodb.internal.connection.TestClusterListener;
5958
import com.mongodb.internal.connection.TestCommandListener;
6059
import com.mongodb.internal.connection.TestConnectionPoolListener;
6160
import com.mongodb.internal.connection.TestServerListener;
6261
import com.mongodb.internal.logging.LogMessage;
6362
import com.mongodb.lang.NonNull;
63+
import com.mongodb.logging.TestLoggingInterceptor;
6464
import org.bson.BsonArray;
6565
import org.bson.BsonBoolean;
6666
import org.bson.BsonDocument;
@@ -300,6 +300,7 @@ private <T> void putEntity(final String id, final T entity, final Map<String, T>
300300
}
301301

302302
public void init(final BsonArray entitiesArray,
303+
final BsonDocument startingClusterTime,
303304
final boolean waitForPoolAsyncWorkManagerStart,
304305
final Function<MongoClientSettings, MongoClient> mongoClientSupplier,
305306
final Function<MongoDatabase, GridFSBucket> gridFSBucketSupplier,
@@ -324,7 +325,7 @@ public void init(final BsonArray entitiesArray,
324325
break;
325326
}
326327
case "session": {
327-
initSession(entity, id);
328+
initSession(entity, id, startingClusterTime);
328329
break;
329330
}
330331
case "bucket": {
@@ -596,7 +597,7 @@ private void initCollection(final BsonDocument entity, final String id) {
596597
putEntity(id, collection, collections);
597598
}
598599

599-
private void initSession(final BsonDocument entity, final String id) {
600+
private void initSession(final BsonDocument entity, final String id, final BsonDocument startingClusterTime) {
600601
MongoClient client = clients.get(entity.getString("client").getValue());
601602
ClientSessionOptions.Builder optionsBuilder = ClientSessionOptions.builder();
602603
if (entity.containsKey("sessionOptions")) {
@@ -614,6 +615,7 @@ private void initSession(final BsonDocument entity, final String id) {
614615
}
615616
}
616617
ClientSession session = client.startSession(optionsBuilder.build());
618+
session.advanceClusterTime(startingClusterTime);
617619
putEntity(id, session, sessions);
618620
putEntity(id + "-identifier", session.getServerSession().getIdentifier(), sessionIdentifiers);
619621
}

driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import static com.mongodb.ClusterFixture.getServerVersion;
7474
import static com.mongodb.client.Fixture.getMongoClient;
7575
import static com.mongodb.client.Fixture.getMongoClientSettings;
76+
import static com.mongodb.client.test.CollectionHelper.getCurrentClusterTime;
7677
import static com.mongodb.client.unified.RunOnRequirementsMatcher.runOnRequirementsMet;
7778
import static java.util.Collections.singletonList;
7879
import static java.util.stream.Collectors.toList;
@@ -105,6 +106,7 @@ public abstract class UnifiedTest {
105106
private final UnifiedClientEncryptionHelper clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities);
106107
private final List<FailPoint> failPoints = new ArrayList<>();
107108
private final UnifiedTestContext rootContext = new UnifiedTestContext();
109+
private BsonDocument startingClusterTime;
108110

109111
private class UnifiedTestContext {
110112
private final AssertionContext context = new AssertionContext();
@@ -212,12 +214,12 @@ public void setUp() {
212214
if (definition.containsKey("skipReason")) {
213215
throw new AssumptionViolatedException(definition.getString("skipReason").getValue());
214216
}
215-
entities.init(entitiesArray,
217+
startingClusterTime = addInitialDataAndGetClusterTime();
218+
entities.init(entitiesArray, startingClusterTime,
216219
fileDescription != null && PRESTART_POOL_ASYNC_WORK_MANAGER_FILE_DESCRIPTIONS.contains(fileDescription),
217220
this::createMongoClient,
218221
this::createGridFSBucket,
219222
this::createClientEncryption);
220-
addInitialData();
221223
}
222224

223225
@After
@@ -561,6 +563,7 @@ protected boolean terminateLoop() {
561563

562564
private OperationResult executeCreateEntities(final BsonDocument operation) {
563565
entities.init(operation.getDocument("arguments").getArray("entities"),
566+
startingClusterTime,
564567
false,
565568
this::createMongoClient,
566569
this::createGridFSBucket,
@@ -890,7 +893,7 @@ private List<CommandEvent> lastTwoCommandEvents(final TestCommandListener listen
890893
return events.subList(events.size() - 2, events.size());
891894
}
892895

893-
private void addInitialData() {
896+
private BsonDocument addInitialDataAndGetClusterTime() {
894897
for (BsonValue cur : initialData.getValues()) {
895898
BsonDocument curDataSet = cur.asDocument();
896899
CollectionHelper<BsonDocument> helper = new CollectionHelper<>(new BsonDocumentCodec(),
@@ -905,5 +908,6 @@ private void addInitialData() {
905908
WriteConcern.MAJORITY);
906909
}
907910
}
911+
return getCurrentClusterTime();
908912
}
909913
}

0 commit comments

Comments
 (0)