Skip to content

Commit e2932a5

Browse files
committed
Fix test failures on 8.0 sharded clusters
Advance cluster time on all session entities in unified tests to one after the initial data is created JAVA-5334
1 parent 140bdce commit e2932a5

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
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: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.mongodb.ServerApi;
2525
import com.mongodb.ServerApiVersion;
2626
import com.mongodb.internal.connection.TestClusterListener;
27+
import com.mongodb.lang.Nullable;
2728
import com.mongodb.logging.TestLoggingInterceptor;
2829
import com.mongodb.TransactionOptions;
2930
import com.mongodb.WriteConcern;
@@ -300,6 +301,7 @@ private <T> void putEntity(final String id, final T entity, final Map<String, T>
300301
}
301302

302303
public void init(final BsonArray entitiesArray,
304+
final BsonDocument startingClusterTime,
303305
final boolean waitForPoolAsyncWorkManagerStart,
304306
final Function<MongoClientSettings, MongoClient> mongoClientSupplier,
305307
final Function<MongoDatabase, GridFSBucket> gridFSBucketSupplier,
@@ -324,7 +326,7 @@ public void init(final BsonArray entitiesArray,
324326
break;
325327
}
326328
case "session": {
327-
initSession(entity, id);
329+
initSession(entity, id, startingClusterTime);
328330
break;
329331
}
330332
case "bucket": {
@@ -596,7 +598,7 @@ private void initCollection(final BsonDocument entity, final String id) {
596598
putEntity(id, collection, collections);
597599
}
598600

599-
private void initSession(final BsonDocument entity, final String id) {
601+
private void initSession(final BsonDocument entity, final String id, final BsonDocument startingClusterTime) {
600602
MongoClient client = clients.get(entity.getString("client").getValue());
601603
ClientSessionOptions.Builder optionsBuilder = ClientSessionOptions.builder();
602604
if (entity.containsKey("sessionOptions")) {
@@ -614,6 +616,7 @@ private void initSession(final BsonDocument entity, final String id) {
614616
}
615617
}
616618
ClientSession session = client.startSession(optionsBuilder.build());
619+
session.advanceClusterTime(startingClusterTime);
617620
putEntity(id, session, sessions);
618621
putEntity(id + "-identifier", session.getServerSession().getIdentifier(), sessionIdentifiers);
619622
}

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 = addInitialData();
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 addInitialData() {
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)