Skip to content

Commit 375bbd6

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 2ef2bf9 commit 375bbd6

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
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 & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.mongodb.ReadConcernLevel;
2424
import com.mongodb.ServerApi;
2525
import com.mongodb.ServerApiVersion;
26-
import com.mongodb.logging.TestLoggingInterceptor;
2726
import com.mongodb.TransactionOptions;
2827
import com.mongodb.WriteConcern;
2928
import com.mongodb.assertions.Assertions;
@@ -60,6 +59,7 @@
6059
import com.mongodb.internal.connection.TestServerListener;
6160
import com.mongodb.internal.logging.LogMessage;
6261
import com.mongodb.lang.NonNull;
62+
import com.mongodb.logging.TestLoggingInterceptor;
6363
import org.bson.BsonArray;
6464
import org.bson.BsonBoolean;
6565
import org.bson.BsonDocument;
@@ -294,6 +294,7 @@ private <T> void putEntity(final String id, final T entity, final Map<String, T>
294294
}
295295

296296
public void init(final BsonArray entitiesArray,
297+
final BsonDocument startingClusterTime,
297298
final boolean waitForPoolAsyncWorkManagerStart,
298299
final Function<MongoClientSettings, MongoClient> mongoClientSupplier,
299300
final Function<MongoDatabase, GridFSBucket> gridFSBucketSupplier,
@@ -318,7 +319,7 @@ public void init(final BsonArray entitiesArray,
318319
break;
319320
}
320321
case "session": {
321-
initSession(entity, id);
322+
initSession(entity, id, startingClusterTime);
322323
break;
323324
}
324325
case "bucket": {
@@ -586,7 +587,7 @@ private void initCollection(final BsonDocument entity, final String id) {
586587
putEntity(id, collection, collections);
587588
}
588589

589-
private void initSession(final BsonDocument entity, final String id) {
590+
private void initSession(final BsonDocument entity, final String id, final BsonDocument startingClusterTime) {
590591
MongoClient client = clients.get(entity.getString("client").getValue());
591592
ClientSessionOptions.Builder optionsBuilder = ClientSessionOptions.builder();
592593
if (entity.containsKey("sessionOptions")) {
@@ -604,6 +605,7 @@ private void initSession(final BsonDocument entity, final String id) {
604605
}
605606
}
606607
ClientSession session = client.startSession(optionsBuilder.build());
608+
session.advanceClusterTime(startingClusterTime);
607609
putEntity(id, session, sessions);
608610
putEntity(id + "-identifier", session.getServerSession().getIdentifier(), sessionIdentifiers);
609611
}

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
@@ -71,6 +71,7 @@
7171
import static com.mongodb.ClusterFixture.getServerVersion;
7272
import static com.mongodb.client.Fixture.getMongoClient;
7373
import static com.mongodb.client.Fixture.getMongoClientSettings;
74+
import static com.mongodb.client.test.CollectionHelper.getCurrentClusterTime;
7475
import static com.mongodb.client.unified.RunOnRequirementsMatcher.runOnRequirementsMet;
7576
import static java.util.stream.Collectors.toList;
7677
import static org.junit.Assert.assertEquals;
@@ -102,6 +103,7 @@ public abstract class UnifiedTest {
102103
private final UnifiedClientEncryptionHelper clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities);
103104
private final List<FailPoint> failPoints = new ArrayList<>();
104105
private final UnifiedTestContext rootContext = new UnifiedTestContext();
106+
private BsonDocument startingClusterTime;
105107

106108
private class UnifiedTestContext {
107109
private final AssertionContext context = new AssertionContext();
@@ -209,12 +211,12 @@ public void setUp() {
209211
if (definition.containsKey("skipReason")) {
210212
throw new AssumptionViolatedException(definition.getString("skipReason").getValue());
211213
}
212-
entities.init(entitiesArray,
214+
startingClusterTime = addInitialDataAndGetClusterTime();
215+
entities.init(entitiesArray, startingClusterTime,
213216
fileDescription != null && PRESTART_POOL_ASYNC_WORK_MANAGER_FILE_DESCRIPTIONS.contains(fileDescription),
214217
this::createMongoClient,
215218
this::createGridFSBucket,
216219
this::createClientEncryption);
217-
addInitialData();
218220
}
219221

220222
@After
@@ -550,6 +552,7 @@ protected boolean terminateLoop() {
550552

551553
private OperationResult executeCreateEntities(final BsonDocument operation) {
552554
entities.init(operation.getDocument("arguments").getArray("entities"),
555+
startingClusterTime,
553556
false,
554557
this::createMongoClient,
555558
this::createGridFSBucket,
@@ -871,7 +874,7 @@ private List<CommandEvent> lastTwoCommandEvents(final TestCommandListener listen
871874
return events.subList(events.size() - 2, events.size());
872875
}
873876

874-
private void addInitialData() {
877+
private BsonDocument addInitialDataAndGetClusterTime() {
875878
for (BsonValue cur : initialData.getValues()) {
876879
BsonDocument curDataSet = cur.asDocument();
877880
CollectionHelper<BsonDocument> helper = new CollectionHelper<>(new BsonDocumentCodec(),
@@ -886,5 +889,6 @@ private void addInitialData() {
886889
WriteConcern.MAJORITY);
887890
}
888891
}
892+
return getCurrentClusterTime();
889893
}
890894
}

0 commit comments

Comments
 (0)