mirror of https://github.com/mongodb/mongo
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
/**
|
|
* Tests readConcern level snapshot outside of transactions.
|
|
*
|
|
* @tags: [
|
|
* requires_majority_read_concern,
|
|
* requires_persistence,
|
|
* ]
|
|
*/
|
|
import {SnapshotReadsTest} from "jstests/libs/global_snapshot_reads_util.js";
|
|
import {ReplSetTest} from "jstests/libs/replsettest.js";
|
|
|
|
const options = {
|
|
// Set a large snapshot window of 10 minutes for the test.
|
|
setParameter: {minSnapshotHistoryWindowInSeconds: 600},
|
|
};
|
|
const replSet = new ReplSetTest({nodes: 3, nodeOptions: options});
|
|
replSet.startSet();
|
|
replSet.initiate();
|
|
let primaryAdmin = replSet.getPrimary().getDB("admin");
|
|
assert.eq(
|
|
assert.commandWorked(primaryAdmin.runCommand({getParameter: 1, minSnapshotHistoryWindowInSeconds: 1}))
|
|
.minSnapshotHistoryWindowInSeconds,
|
|
600,
|
|
);
|
|
const primaryDB = replSet.getPrimary().getDB("test");
|
|
const secondaryDB = replSet.getSecondary().getDB("test");
|
|
const snapshotReadsTest = new SnapshotReadsTest({
|
|
primaryDB: primaryDB,
|
|
secondaryDB: secondaryDB,
|
|
awaitCommittedFn: () => {
|
|
replSet.awaitLastOpCommitted();
|
|
},
|
|
});
|
|
|
|
snapshotReadsTest.cursorTest({testScenarioName: jsTestName(), collName: "test"});
|
|
snapshotReadsTest.distinctTest({testScenarioName: jsTestName(), collName: "test"});
|
|
snapshotReadsTest.outAndMergeTest({
|
|
testScenarioName: jsTestName(),
|
|
coll: "test",
|
|
outColl: "testOut",
|
|
isOutCollSharded: false,
|
|
});
|
|
snapshotReadsTest.lookupAndUnionWithTest({
|
|
testScenarioName: jsTestName(),
|
|
coll1: "test1",
|
|
coll2: "test2",
|
|
isColl2Sharded: false,
|
|
});
|
|
|
|
// Ensure "atClusterTime" is omitted from a regular (non-snapshot) read.
|
|
primaryDB["collection"].insertOne({});
|
|
const cursor = assert.commandWorked(primaryDB.runCommand({find: "test"})).cursor;
|
|
assert(!cursor.hasOwnProperty("atClusterTime"));
|
|
const distinctResult = assert.commandWorked(primaryDB.runCommand({distinct: "test", key: "_id"}));
|
|
assert(!distinctResult.hasOwnProperty("atClusterTime"));
|
|
|
|
replSet.stopSet();
|