summaryrefslogtreecommitdiff
path: root/jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js')
-rw-r--r--jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js586
1 files changed, 292 insertions, 294 deletions
diff --git a/jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js b/jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js
index 6a858400ae4..e280a82451e 100644
--- a/jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js
+++ b/jstests/multiVersion/genericSetFCVUsage/do_upgrade_downgrade.js
@@ -1,304 +1,224 @@
// Perform the upgrade/downgrade procedure by first setting the featureCompatibilityVersion and
// then switching the binary.
(function() {
- "use strict";
-
- load("jstests/replsets/rslib.js");
- load("jstests/libs/feature_compatibility_version.js");
- load("jstests/libs/get_index_helpers.js");
- load("jstests/libs/check_uuids.js");
- load("jstests/libs/check_unique_indexes.js");
-
- const latestBinary = "latest";
- const lastStableBinary = "last-stable";
-
- let setFCV = function(adminDB, version) {
- assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: version}));
- checkFCV(adminDB, version);
- };
-
- let insertDataForConn = function(conn, dbs, nodeOptions) {
- for (let i = 0; i < 20; i++) {
- let doc = {id: i, sno: i, a: "foo", conn: conn.name};
- for (let j in dbs) {
- if (nodeOptions.hasOwnProperty("configsvr")) {
- if (j !== "admin" && j !== "local") {
- // We can't create user databases on a --configsvr instance.
- continue;
- }
- // Config servers have a majority write concern.
- assert.writeOK(
- conn.getDB(dbs[j]).foo.insert(doc, {writeConcern: {w: "majority"}}));
- } else {
- assert.writeOK(conn.getDB(dbs[j]).foo.insert(doc));
- }
- }
- }
+"use strict";
+
+load("jstests/replsets/rslib.js");
+load("jstests/libs/feature_compatibility_version.js");
+load("jstests/libs/get_index_helpers.js");
+load("jstests/libs/check_uuids.js");
+load("jstests/libs/check_unique_indexes.js");
- // Create unique indexes on collection "foo" with two index formatVersions.
- // Providing index version explicitly allows index creation with corresponding
- // formatVersion.
+const latestBinary = "latest";
+const lastStableBinary = "last-stable";
+
+let setFCV = function(adminDB, version) {
+ assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: version}));
+ checkFCV(adminDB, version);
+};
+
+let insertDataForConn = function(conn, dbs, nodeOptions) {
+ for (let i = 0; i < 20; i++) {
+ let doc = {id: i, sno: i, a: "foo", conn: conn.name};
for (let j in dbs) {
- let testDB = conn.getDB(dbs[j]);
- testDB.getCollectionInfos().forEach(function(c) {
- if (c.name === "foo") {
- let foo = testDB.getCollection(c.name);
- assert.commandWorked(foo.createIndex({id: 1}, {unique: true}));
- assert.commandWorked(foo.createIndex({sno: 1}, {unique: true, v: 1}));
+ if (nodeOptions.hasOwnProperty("configsvr")) {
+ if (j !== "admin" && j !== "local") {
+ // We can't create user databases on a --configsvr instance.
+ continue;
}
- });
+ // Config servers have a majority write concern.
+ assert.writeOK(conn.getDB(dbs[j]).foo.insert(doc, {writeConcern: {w: "majority"}}));
+ } else {
+ assert.writeOK(conn.getDB(dbs[j]).foo.insert(doc));
+ }
}
- };
-
- let recreateUniqueIndexes = function(db, secondary) {
- // Obtain list of all v1 and v2 unique indexes
- var unique_idx = [];
- var unique_idx_v1 = [];
- db.adminCommand("listDatabases").databases.forEach(function(d) {
- if (secondary && !(d.name === "local")) {
- // All replicated indexes will be dropped on the primary, and have that
- // drop propogated. Secondary nodes need to recreate unique indexes
- // associated with local collections.
- return;
+ }
+
+ // Create unique indexes on collection "foo" with two index formatVersions.
+ // Providing index version explicitly allows index creation with corresponding
+ // formatVersion.
+ for (let j in dbs) {
+ let testDB = conn.getDB(dbs[j]);
+ testDB.getCollectionInfos().forEach(function(c) {
+ if (c.name === "foo") {
+ let foo = testDB.getCollection(c.name);
+ assert.commandWorked(foo.createIndex({id: 1}, {unique: true}));
+ assert.commandWorked(foo.createIndex({sno: 1}, {unique: true, v: 1}));
}
- let mdb = db.getSiblingDB(d.name);
- mdb.getCollectionInfos().forEach(function(c) {
- let currentCollection = mdb.getCollection(c.name);
- currentCollection.getIndexes().forEach(function(i) {
- if (i.unique) {
- if (i.v === 1) {
- unique_idx_v1.push(i);
- return;
- }
- unique_idx.push(i);
- }
- });
- });
});
-
- // Drop and create all v:2 indexes
- for (let idx of unique_idx) {
- let [dbName, collName] = idx.ns.split(".");
- let res = db.getSiblingDB(dbName).runCommand({dropIndexes: collName, index: idx.name});
- assert.commandWorked(res);
- res = db.getSiblingDB(dbName).runCommand({
- createIndexes: collName,
- indexes: [{"key": idx.key, "name": idx.name, "unique": true}]
- });
- assert.commandWorked(res);
+ }
+};
+
+let recreateUniqueIndexes = function(db, secondary) {
+ // Obtain list of all v1 and v2 unique indexes
+ var unique_idx = [];
+ var unique_idx_v1 = [];
+ db.adminCommand("listDatabases").databases.forEach(function(d) {
+ if (secondary && !(d.name === "local")) {
+ // All replicated indexes will be dropped on the primary, and have that
+ // drop propogated. Secondary nodes need to recreate unique indexes
+ // associated with local collections.
+ return;
}
-
- // Drop and create all v:1 indexes
- for (let idx of unique_idx_v1) {
- let [dbName, collName] = idx.ns.split(".");
- let res = db.getSiblingDB(dbName).runCommand({dropIndexes: collName, index: idx.name});
- assert.commandWorked(res);
- res = db.getSiblingDB(dbName).runCommand({
- createIndexes: collName,
- indexes: [{"key": idx.key, "name": idx.name, "unique": true, "v": 1}]
+ let mdb = db.getSiblingDB(d.name);
+ mdb.getCollectionInfos().forEach(function(c) {
+ let currentCollection = mdb.getCollection(c.name);
+ currentCollection.getIndexes().forEach(function(i) {
+ if (i.unique) {
+ if (i.v === 1) {
+ unique_idx_v1.push(i);
+ return;
+ }
+ unique_idx.push(i);
+ }
});
- assert.commandWorked(res);
- }
- };
-
- // Create and clear dbpath
- let sharedDbPath = MongoRunner.dataPath + "do_upgrade_downgrade";
- resetDbpath(sharedDbPath);
-
- // Return a mongodb connection with startup options, version and dbpath options
- let startMongodWithVersion = function(nodeOptions, ver, path) {
- let version = ver || latestBinary;
- let dbpath = path || sharedDbPath;
- let conn = MongoRunner.runMongod(
- Object.assign({}, nodeOptions, {dbpath: dbpath, binVersion: version}));
- assert.neq(null,
- conn,
- "mongod was unable to start up with version=" + version + " and path=" + dbpath);
- return conn;
- };
-
- //
- // Standalone tests.
- //
- let standaloneTest = function(nodeOptions) {
- let noCleanDataOptions = Object.assign({noCleanData: true}, nodeOptions);
-
- // New latest binary version standalone.
- jsTest.log("Starting a latest binVersion standalone");
- let conn = startMongodWithVersion(nodeOptions, latestBinary);
- let adminDB = conn.getDB("admin");
-
- // Insert some data.
- insertDataForConn(conn, ["admin", "local", "test"], nodeOptions);
-
- if (!nodeOptions.hasOwnProperty("shardsvr")) {
- // Initially featureCompatibilityVersion is latest except for when we run with shardsvr.
- // We expect featureCompatibilityVersion to be last-stable for shardsvr.
- checkFCV(adminDB, latestFCV);
-
- // Ensure all collections have UUIDs and all unique indexes have new version in latest
- // featureCompatibilityVersion mode.
- checkCollectionUUIDs(adminDB);
- checkUniqueIndexFormatVersion(adminDB);
-
- // Set featureCompatibilityVersion to last-stable.
- setFCV(adminDB, lastStableFCV);
- }
-
- // Ensure featureCompatibilityVersion is last-stable and all collections still have UUIDs.
- checkFCV(adminDB, lastStableFCV);
- checkCollectionUUIDs(adminDB);
-
- // Drop and recreate unique indexes with the older FCV
- recreateUniqueIndexes(adminDB, false);
-
- // Stop latest binary version mongod.
- MongoRunner.stopMongod(conn);
-
- // Start last-stable binary version mongod with same dbpath
- jsTest.log("Starting a last-stable binVersion standalone to test downgrade");
- let lastStableConn = startMongodWithVersion(noCleanDataOptions, lastStableBinary);
- let lastStableAdminDB = lastStableConn.getDB("admin");
-
- // Check FCV document.
- checkFCV(lastStableAdminDB, lastStableFCV);
-
- // Ensure all collections still have UUIDs on a last-stable mongod.
- checkCollectionUUIDs(lastStableAdminDB);
-
- // Stop last-stable binary version mongod.
- MongoRunner.stopMongod(lastStableConn);
-
- // Start latest binary version mongod again.
- jsTest.log("Starting a latest binVersion standalone to test upgrade");
- conn = startMongodWithVersion(noCleanDataOptions, latestBinary);
- adminDB = conn.getDB("admin");
-
- // Ensure setFeatureCompatibilityVersion to latest succeeds, all collections have UUIDs
- // and all unique indexes are in new version.
- setFCV(adminDB, latestFCV);
+ });
+ });
+
+ // Drop and create all v:2 indexes
+ for (let idx of unique_idx) {
+ let [dbName, collName] = idx.ns.split(".");
+ let res = db.getSiblingDB(dbName).runCommand({dropIndexes: collName, index: idx.name});
+ assert.commandWorked(res);
+ res = db.getSiblingDB(dbName).runCommand({
+ createIndexes: collName,
+ indexes: [{"key": idx.key, "name": idx.name, "unique": true}]
+ });
+ assert.commandWorked(res);
+ }
+
+ // Drop and create all v:1 indexes
+ for (let idx of unique_idx_v1) {
+ let [dbName, collName] = idx.ns.split(".");
+ let res = db.getSiblingDB(dbName).runCommand({dropIndexes: collName, index: idx.name});
+ assert.commandWorked(res);
+ res = db.getSiblingDB(dbName).runCommand({
+ createIndexes: collName,
+ indexes: [{"key": idx.key, "name": idx.name, "unique": true, "v": 1}]
+ });
+ assert.commandWorked(res);
+ }
+};
+
+// Create and clear dbpath
+let sharedDbPath = MongoRunner.dataPath + "do_upgrade_downgrade";
+resetDbpath(sharedDbPath);
+
+// Return a mongodb connection with startup options, version and dbpath options
+let startMongodWithVersion = function(nodeOptions, ver, path) {
+ let version = ver || latestBinary;
+ let dbpath = path || sharedDbPath;
+ let conn = MongoRunner.runMongod(
+ Object.assign({}, nodeOptions, {dbpath: dbpath, binVersion: version}));
+ assert.neq(null,
+ conn,
+ "mongod was unable to start up with version=" + version + " and path=" + dbpath);
+ return conn;
+};
+
+//
+// Standalone tests.
+//
+let standaloneTest = function(nodeOptions) {
+ let noCleanDataOptions = Object.assign({noCleanData: true}, nodeOptions);
+
+ // New latest binary version standalone.
+ jsTest.log("Starting a latest binVersion standalone");
+ let conn = startMongodWithVersion(nodeOptions, latestBinary);
+ let adminDB = conn.getDB("admin");
+
+ // Insert some data.
+ insertDataForConn(conn, ["admin", "local", "test"], nodeOptions);
+
+ if (!nodeOptions.hasOwnProperty("shardsvr")) {
+ // Initially featureCompatibilityVersion is latest except for when we run with shardsvr.
+ // We expect featureCompatibilityVersion to be last-stable for shardsvr.
checkFCV(adminDB, latestFCV);
+
+ // Ensure all collections have UUIDs and all unique indexes have new version in latest
+ // featureCompatibilityVersion mode.
checkCollectionUUIDs(adminDB);
checkUniqueIndexFormatVersion(adminDB);
- // Stop latest binary version mongod for the last time
- MongoRunner.stopMongod(conn);
- };
-
- //
- // Replica set tests.
- //
- let replicaSetTest = function(nodeOptions) {
-
- // New latest binary version replica set.
- jsTest.log("Starting a latest binVersion ReplSetTest");
- let rst = new ReplSetTest({nodes: 3, nodeOptions: nodeOptions});
- rst.startSet();
- rst.initiate();
- let primaryAdminDB = rst.getPrimary().getDB("admin");
- let secondaries = rst.getSecondaries();
-
- // Insert some data.
- insertDataForConn(rst.getPrimary(), ["admin", "local", "test"], nodeOptions);
- rst.awaitReplication();
-
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- // Insert some data into the local DB.
- insertDataForConn(secondaries[j], ["local"], nodeOptions);
- }
-
- if (!nodeOptions.hasOwnProperty("shardsvr")) {
- // Initially featureCompatibilityVersion is latest on primary and secondaries except for
- // when we run with shardsvr. We expect featureCompatibilityVersion to be last-stable
- // for shardsvr.
- checkFCV(primaryAdminDB, latestFCV);
-
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- checkFCV(secondaryAdminDB, latestFCV);
- }
-
- // Ensure all collections have UUIDs and unique indexes are in new version in latest
- // featureCompatibilityVersion mode on both primary and secondaries.
- checkCollectionUUIDs(primaryAdminDB);
- checkUniqueIndexFormatVersion(primaryAdminDB);
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- checkCollectionUUIDs(secondaryAdminDB);
- checkUniqueIndexFormatVersion(secondaryAdminDB);
- }
-
- // Change featureCompatibilityVersion to last-stable.
- setFCV(primaryAdminDB, lastStableFCV);
- rst.awaitReplication();
- }
-
- // Ensure featureCompatibilityVersion is last-stable and all collections still have UUIDs.
- checkFCV(primaryAdminDB, lastStableFCV);
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- checkFCV(secondaryAdminDB, lastStableFCV);
- }
-
- checkCollectionUUIDs(primaryAdminDB);
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- checkCollectionUUIDs(secondaryAdminDB);
- }
-
- // Drop and recreate unique indexes with the older FCV
- recreateUniqueIndexes(primaryAdminDB, false);
-
- // Now drop and recreate unique indexes on secondaries' "local" database
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = secondaries[j].getDB("admin");
- recreateUniqueIndexes(secondaryAdminDB, true);
- }
-
- // Stop latest binary version replica set.
- rst.stopSet(null /* signal */, true /* forRestart */);
-
- // Downgrade the ReplSetTest binaries and make sure everything is okay.
- jsTest.log("Starting a last-stable binVersion ReplSetTest to test downgrade");
- rst.startSet({restart: true, binVersion: lastStableBinary});
-
- // Check that the featureCompatiblityVersion is set to last-stable and all
- // collections still have UUIDs.
- let lastStablePrimaryAdminDB = rst.getPrimary().getDB("admin");
- let lastStableSecondaries = rst.getSecondaries();
-
- checkFCV(lastStablePrimaryAdminDB, lastStableFCV);
- for (let j = 0; j < lastStableSecondaries.length; j++) {
- let secondaryAdminDB = lastStableSecondaries[j].getDB("admin");
- checkFCV(secondaryAdminDB, lastStableFCV);
- }
-
- checkCollectionUUIDs(lastStablePrimaryAdminDB);
- for (let j = 0; j < secondaries.length; j++) {
- let secondaryAdminDB = lastStableSecondaries[j].getDB("admin");
- checkCollectionUUIDs(secondaryAdminDB);
- }
-
- rst.stopSet(null /* signal */, true /* forRestart */);
-
- // Start latest binary version replica set again.
- jsTest.log("Starting a latest binVersion ReplSetTest to test upgrade");
- rst.startSet({restart: true, binVersion: latestBinary});
- primaryAdminDB = rst.getPrimary().getDB("admin");
- secondaries = rst.getSecondaries();
-
- // Ensure all collections have UUIDs and unique indexes are in new version after switching
- // back to latest featureCompatibilityVersion on both primary and secondaries.
- setFCV(primaryAdminDB, latestFCV);
- rst.awaitReplication();
-
+ // Set featureCompatibilityVersion to last-stable.
+ setFCV(adminDB, lastStableFCV);
+ }
+
+ // Ensure featureCompatibilityVersion is last-stable and all collections still have UUIDs.
+ checkFCV(adminDB, lastStableFCV);
+ checkCollectionUUIDs(adminDB);
+
+ // Drop and recreate unique indexes with the older FCV
+ recreateUniqueIndexes(adminDB, false);
+
+ // Stop latest binary version mongod.
+ MongoRunner.stopMongod(conn);
+
+ // Start last-stable binary version mongod with same dbpath
+ jsTest.log("Starting a last-stable binVersion standalone to test downgrade");
+ let lastStableConn = startMongodWithVersion(noCleanDataOptions, lastStableBinary);
+ let lastStableAdminDB = lastStableConn.getDB("admin");
+
+ // Check FCV document.
+ checkFCV(lastStableAdminDB, lastStableFCV);
+
+ // Ensure all collections still have UUIDs on a last-stable mongod.
+ checkCollectionUUIDs(lastStableAdminDB);
+
+ // Stop last-stable binary version mongod.
+ MongoRunner.stopMongod(lastStableConn);
+
+ // Start latest binary version mongod again.
+ jsTest.log("Starting a latest binVersion standalone to test upgrade");
+ conn = startMongodWithVersion(noCleanDataOptions, latestBinary);
+ adminDB = conn.getDB("admin");
+
+ // Ensure setFeatureCompatibilityVersion to latest succeeds, all collections have UUIDs
+ // and all unique indexes are in new version.
+ setFCV(adminDB, latestFCV);
+ checkFCV(adminDB, latestFCV);
+ checkCollectionUUIDs(adminDB);
+ checkUniqueIndexFormatVersion(adminDB);
+
+ // Stop latest binary version mongod for the last time
+ MongoRunner.stopMongod(conn);
+};
+
+//
+// Replica set tests.
+//
+let replicaSetTest = function(nodeOptions) {
+ // New latest binary version replica set.
+ jsTest.log("Starting a latest binVersion ReplSetTest");
+ let rst = new ReplSetTest({nodes: 3, nodeOptions: nodeOptions});
+ rst.startSet();
+ rst.initiate();
+ let primaryAdminDB = rst.getPrimary().getDB("admin");
+ let secondaries = rst.getSecondaries();
+
+ // Insert some data.
+ insertDataForConn(rst.getPrimary(), ["admin", "local", "test"], nodeOptions);
+ rst.awaitReplication();
+
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ // Insert some data into the local DB.
+ insertDataForConn(secondaries[j], ["local"], nodeOptions);
+ }
+
+ if (!nodeOptions.hasOwnProperty("shardsvr")) {
+ // Initially featureCompatibilityVersion is latest on primary and secondaries except for
+ // when we run with shardsvr. We expect featureCompatibilityVersion to be last-stable
+ // for shardsvr.
checkFCV(primaryAdminDB, latestFCV);
+
for (let j = 0; j < secondaries.length; j++) {
let secondaryAdminDB = secondaries[j].getDB("admin");
checkFCV(secondaryAdminDB, latestFCV);
}
+ // Ensure all collections have UUIDs and unique indexes are in new version in latest
+ // featureCompatibilityVersion mode on both primary and secondaries.
checkCollectionUUIDs(primaryAdminDB);
checkUniqueIndexFormatVersion(primaryAdminDB);
for (let j = 0; j < secondaries.length; j++) {
@@ -307,18 +227,96 @@
checkUniqueIndexFormatVersion(secondaryAdminDB);
}
- rst.stopSet();
- };
-
- // Do tests for regular standalones and replica sets.
- standaloneTest({});
- replicaSetTest({});
-
- // Do tests for standalones and replica sets started with --shardsvr.
- standaloneTest({shardsvr: ""});
- replicaSetTest({shardsvr: ""});
-
- // Do tests for standalones and replica sets started with --configsvr.
- standaloneTest({configsvr: ""});
- replicaSetTest({configsvr: ""});
+ // Change featureCompatibilityVersion to last-stable.
+ setFCV(primaryAdminDB, lastStableFCV);
+ rst.awaitReplication();
+ }
+
+ // Ensure featureCompatibilityVersion is last-stable and all collections still have UUIDs.
+ checkFCV(primaryAdminDB, lastStableFCV);
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ checkFCV(secondaryAdminDB, lastStableFCV);
+ }
+
+ checkCollectionUUIDs(primaryAdminDB);
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ checkCollectionUUIDs(secondaryAdminDB);
+ }
+
+ // Drop and recreate unique indexes with the older FCV
+ recreateUniqueIndexes(primaryAdminDB, false);
+
+ // Now drop and recreate unique indexes on secondaries' "local" database
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ recreateUniqueIndexes(secondaryAdminDB, true);
+ }
+
+ // Stop latest binary version replica set.
+ rst.stopSet(null /* signal */, true /* forRestart */);
+
+ // Downgrade the ReplSetTest binaries and make sure everything is okay.
+ jsTest.log("Starting a last-stable binVersion ReplSetTest to test downgrade");
+ rst.startSet({restart: true, binVersion: lastStableBinary});
+
+ // Check that the featureCompatiblityVersion is set to last-stable and all
+ // collections still have UUIDs.
+ let lastStablePrimaryAdminDB = rst.getPrimary().getDB("admin");
+ let lastStableSecondaries = rst.getSecondaries();
+
+ checkFCV(lastStablePrimaryAdminDB, lastStableFCV);
+ for (let j = 0; j < lastStableSecondaries.length; j++) {
+ let secondaryAdminDB = lastStableSecondaries[j].getDB("admin");
+ checkFCV(secondaryAdminDB, lastStableFCV);
+ }
+
+ checkCollectionUUIDs(lastStablePrimaryAdminDB);
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = lastStableSecondaries[j].getDB("admin");
+ checkCollectionUUIDs(secondaryAdminDB);
+ }
+
+ rst.stopSet(null /* signal */, true /* forRestart */);
+
+ // Start latest binary version replica set again.
+ jsTest.log("Starting a latest binVersion ReplSetTest to test upgrade");
+ rst.startSet({restart: true, binVersion: latestBinary});
+ primaryAdminDB = rst.getPrimary().getDB("admin");
+ secondaries = rst.getSecondaries();
+
+ // Ensure all collections have UUIDs and unique indexes are in new version after switching
+ // back to latest featureCompatibilityVersion on both primary and secondaries.
+ setFCV(primaryAdminDB, latestFCV);
+ rst.awaitReplication();
+
+ checkFCV(primaryAdminDB, latestFCV);
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ checkFCV(secondaryAdminDB, latestFCV);
+ }
+
+ checkCollectionUUIDs(primaryAdminDB);
+ checkUniqueIndexFormatVersion(primaryAdminDB);
+ for (let j = 0; j < secondaries.length; j++) {
+ let secondaryAdminDB = secondaries[j].getDB("admin");
+ checkCollectionUUIDs(secondaryAdminDB);
+ checkUniqueIndexFormatVersion(secondaryAdminDB);
+ }
+
+ rst.stopSet();
+};
+
+// Do tests for regular standalones and replica sets.
+standaloneTest({});
+replicaSetTest({});
+
+// Do tests for standalones and replica sets started with --shardsvr.
+standaloneTest({shardsvr: ""});
+replicaSetTest({shardsvr: ""});
+
+// Do tests for standalones and replica sets started with --configsvr.
+standaloneTest({configsvr: ""});
+replicaSetTest({configsvr: ""});
})();