Skip to content

Commit 26eada7

Browse files
committed
test(NODE-5962): gossip cluster time in utr
1 parent 7eaf2c8 commit 26eada7

File tree

4 files changed

+19
-17
lines changed

4 files changed

+19
-17
lines changed

test/integration/transactions-convenient-api/transactions-convenient-api.spec.test.ts

+2-13
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,8 @@ import { runUnifiedSuite } from '../../tools/unified-spec-runner/runner';
55

66
const SKIPPED_TESTS = [
77
'callback succeeds after multiple connection errors',
8-
'callback is not retried after non-transient error',
98
'callback is not retried after non-transient error (DuplicateKeyError)',
10-
'withTransaction succeeds if callback aborts',
11-
'unpin after transient error within a transaction',
12-
'withTransaction succeeds if callback commits',
13-
'withTransaction still succeeds if callback aborts and runs extra op',
14-
'withTransaction still succeeds if callback commits and runs extra op',
15-
'withTransaction commits after callback returns (second transaction)',
16-
'withTransaction commits after callback returns',
17-
'withTransaction and no transaction options set',
18-
'withTransaction inherits transaction options from defaultTransactionOptions',
19-
'withTransaction explicit transaction options override defaultTransactionOptions',
20-
'withTransaction explicit transaction options'
9+
'withTransaction succeeds if callback aborts'
2110
];
2211

2312
describe('Transactions Convenient API Spec Unified Tests', function () {
@@ -33,7 +22,7 @@ describe('Transactions Convenient API Spec Unified Tests', function () {
3322

3423
runUnifiedSuite(loadSpecTests(path.join('transactions-convenient-api', 'unified')), test => {
3524
return SKIPPED_TESTS.includes(test.description)
36-
? 'TODO(NODE-5855/DRIVERS-2816): Skipping failing transaction tests'
25+
? 'TODO(NODE-5855): Skipping failing transaction tests'
3726
: false;
3827
});
3928
});

test/tools/unified-spec-runner/entities.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ import {
4242
type TopologyDescription,
4343
type TopologyDescriptionChangedEvent,
4444
type TopologyOpeningEvent,
45-
WriteConcern
45+
WriteConcern,
46+
ClusterTime
4647
} from '../../mongodb';
4748
import { ejson, getEnvironmentalOptions } from '../../tools/utils';
4849
import type { TestConfiguration } from '../runner/config';
@@ -556,6 +557,7 @@ export class EntitiesMap<E = Entity> extends Map<string, E> {
556557

557558
static async createEntities(
558559
config: TestConfiguration,
560+
clusterTime: ClusterTime | null,
559561
entities?: EntityDescription[],
560562
entityMap?: EntitiesMap
561563
): Promise<EntitiesMap> {
@@ -627,6 +629,10 @@ export class EntitiesMap<E = Entity> extends Map<string, E> {
627629
}
628630
}
629631
const session = client.startSession(options);
632+
// Advance the session cluster time. See DRIVERS-2816.
633+
if (clusterTime) {
634+
session.advanceClusterTime(clusterTime);
635+
}
630636
map.set(entity.session.id, session);
631637
} else if ('bucket' in entity) {
632638
const db = map.getEntity('db', entity.bucket.database);

test/tools/unified-spec-runner/operations.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ operations.set('createEntities', async ({ entities, operation, testConfig }) =>
4545
if (!operation.arguments?.entities) {
4646
throw new Error('encountered createEntities operation without entities argument');
4747
}
48-
await EntitiesMap.createEntities(testConfig, operation.arguments.entities!, entities);
48+
await EntitiesMap.createEntities(testConfig, null, operation.arguments.entities!, entities);
4949
});
5050

5151
operations.set('abortTransaction', async ({ entities, operation }) => {

test/tools/unified-spec-runner/runner.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { expect } from 'chai';
33
import { gte as semverGte, satisfies as semverSatisfies } from 'semver';
44

5-
import type { MongoClient } from '../../mongodb';
5+
import type { ClusterTime, MongoClient } from '../../mongodb';
66
import { MONGODB_ERROR_CODES, ns, ReadPreference, TopologyType } from '../../mongodb';
77
import { ejson } from '../utils';
88
import { AstrolabeResultsWriter } from './astrolabe_results_writer';
@@ -113,6 +113,9 @@ async function runUnifiedTest(
113113
return ctx.skip();
114114
}
115115

116+
const ping = await utilClient.db().admin().command({ ping: 1 });
117+
const clusterTime = ping.$clusterTime;
118+
116119
// If initialData is specified, for each collectionData therein the test runner MUST drop the
117120
// collection and insert the specified documents (if any) using a "majority" write concern. If no
118121
// documents are specified, the test runner MUST create the collection with a "majority" write concern.
@@ -161,7 +164,11 @@ async function runUnifiedTest(
161164
}
162165

163166
trace('createEntities');
164-
entities = await EntitiesMap.createEntities(ctx.configuration, unifiedSuite.createEntities);
167+
entities = await EntitiesMap.createEntities(
168+
ctx.configuration,
169+
clusterTime,
170+
unifiedSuite.createEntities
171+
);
165172

166173
// Workaround for SERVER-39704:
167174
// test runners MUST execute a non-transactional distinct command on

0 commit comments

Comments
 (0)