summaryrefslogtreecommitdiff
path: root/jstests/multiVersion
diff options
context:
space:
mode:
authorMaria van Keulen <maria@mongodb.com>2018-01-29 11:02:11 -0500
committerMaria van Keulen <maria@mongodb.com>2018-02-02 15:31:03 -0500
commitce3049c1eae2f8e22c0e47086dfa6c77aaab90f7 (patch)
tree4887ac72ce148abb2b8929afc38419eec9573b42 /jstests/multiVersion
parent16f907e29539150d27408778d7f62b723c5131ab (diff)
downloadmongo-ce3049c1eae2f8e22c0e47086dfa6c77aaab90f7.tar.gz
SERVER-33003 Re-enable passing multiVersion tests
Diffstat (limited to 'jstests/multiVersion')
-rw-r--r--jstests/multiVersion/downgrade_replset.js45
-rw-r--r--jstests/multiVersion/initial_sync_last_stable_from_latest.js5
-rw-r--r--jstests/multiVersion/initial_sync_latest_from_last_stable.js4
-rw-r--r--jstests/multiVersion/libs/initial_sync.js7
-rw-r--r--jstests/multiVersion/migration_between_mixed_FCV_mixed_version_mongods.js27
-rw-r--r--jstests/multiVersion/rename_across_dbs_last_stable_primary.js3
-rw-r--r--jstests/multiVersion/rename_across_dbs_last_stable_primary_drop_target.js3
-rw-r--r--jstests/multiVersion/rename_across_dbs_last_stable_secondary.js3
-rw-r--r--jstests/multiVersion/rename_across_dbs_last_stable_secondary_drop_target.js3
-rw-r--r--jstests/multiVersion/upgrade_downgrade_while_creating_collection.js8
10 files changed, 60 insertions, 48 deletions
diff --git a/jstests/multiVersion/downgrade_replset.js b/jstests/multiVersion/downgrade_replset.js
index 13a39804054..3f5ce944362 100644
--- a/jstests/multiVersion/downgrade_replset.js
+++ b/jstests/multiVersion/downgrade_replset.js
@@ -3,44 +3,47 @@
load('./jstests/multiVersion/libs/multi_rs.js');
load('./jstests/libs/test_background_ops.js');
+load('./jstests/libs/feature_compatibility_version.js');
-var newVersion = "latest";
-var oldVersion = "last-stable";
+let newVersion = "latest";
+let oldVersion = "last-stable";
-var name = "replsetdowngrade";
-var nodes = {
+let name = "replsetdowngrade";
+let nodes = {
n1: {binVersion: newVersion},
n2: {binVersion: newVersion},
n3: {binVersion: newVersion}
};
function runDowngradeTest(protocolVersion) {
- var rst = new ReplSetTest({name: name, nodes: nodes, waitForKeys: true});
+ let rst = new ReplSetTest({name: name, nodes: nodes, waitForKeys: true});
rst.startSet();
- var replSetConfig = rst.getReplSetConfig();
+ let replSetConfig = rst.getReplSetConfig();
replSetConfig.protocolVersion = protocolVersion;
- // Hard-code catchup timeout to be compatible with 3.4
- replSetConfig.settings = {catchUpTimeoutMillis: 2000};
rst.initiate(replSetConfig);
- var primary = rst.getPrimary();
- var coll = "test.foo";
+ let primary = rst.getPrimary();
+ let coll = "test.foo";
- // We wait for the feature compatibility version to be set to "3.4" on all nodes of the replica
- // set in order to ensure that all nodes can be successfully downgraded. This effectively allows
- // us to emulate upgrading to the latest version with existing data files and then trying to
- // downgrade back to 3.4.
- assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: "3.4"}));
+ // TODO(SERVER-32597) remove this when fCV 4.0 becomes the default on clean startup.
+ assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: latestFCV}));
+ rst.awaitReplication();
+
+ // We wait for the feature compatibility version to be set to lastStableFCV on all nodes of the
+ // replica set in order to ensure that all nodes can be successfully downgraded. This
+ // effectively allows us to emulate upgrading to the latest version with existing data files and
+ // then trying to downgrade back to lastStableFCV.
+ assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: lastStableFCV}));
rst.awaitReplication();
jsTest.log("Inserting documents into collection.");
- for (var i = 0; i < 10; i++) {
+ for (let i = 0; i < 10; i++) {
primary.getCollection(coll).insert({_id: i, str: "hello world"});
}
- function insertDocuments(rsURL, coll) {
- var coll = new Mongo(rsURL).getCollection(coll);
- var count = 10;
+ function insertDocuments(rsURL, collParam) {
+ let coll = new Mongo(rsURL).getCollection(collParam);
+ let count = 10;
while (!isFinished()) {
assert.writeOK(coll.insert({_id: count, str: "hello world"}));
count++;
@@ -48,7 +51,7 @@ function runDowngradeTest(protocolVersion) {
}
jsTest.log("Starting parallel operations during downgrade..");
- var joinFindInsert = startParallelOps(primary, insertDocuments, [rst.getURL(), coll]);
+ let joinFindInsert = startParallelOps(primary, insertDocuments, [rst.getURL(), coll]);
jsTest.log("Downgrading replica set..");
rst.upgradeSet({binVersion: oldVersion});
@@ -57,7 +60,7 @@ function runDowngradeTest(protocolVersion) {
// We save a reference to the old primary so that we can call reconnect() on it before
// joinFindInsert() would attempt to send the node an update operation that signals the parallel
// shell running the background operations to stop.
- var oldPrimary = primary;
+ let oldPrimary = primary;
primary = rst.getPrimary();
printjson(rst.status());
diff --git a/jstests/multiVersion/initial_sync_last_stable_from_latest.js b/jstests/multiVersion/initial_sync_last_stable_from_latest.js
index 3aff81e1261..f222068dba6 100644
--- a/jstests/multiVersion/initial_sync_last_stable_from_latest.js
+++ b/jstests/multiVersion/initial_sync_last_stable_from_latest.js
@@ -5,12 +5,11 @@
'use strict';
+load("./jstests/libs/feature_compatibility_version.js");
load("./jstests/multiVersion/libs/initial_sync.js");
var testName = "multiversion_initial_sync_last_stable_from_latest";
let replSetVersion = "latest";
let newSecondaryVersion = "last-stable";
-let configSettings = {catchUpTimeoutMillis: 2000};
-let fcv = "3.4";
-multversionInitialSyncTest(testName, replSetVersion, newSecondaryVersion, configSettings, fcv);
+multversionInitialSyncTest(testName, replSetVersion, newSecondaryVersion, {}, lastStableFCV);
diff --git a/jstests/multiVersion/initial_sync_latest_from_last_stable.js b/jstests/multiVersion/initial_sync_latest_from_last_stable.js
index 7f66f1f084d..033d7c1511e 100644
--- a/jstests/multiVersion/initial_sync_latest_from_last_stable.js
+++ b/jstests/multiVersion/initial_sync_latest_from_last_stable.js
@@ -5,11 +5,11 @@
'use strict';
+load("./jstests/libs/feature_compatibility_version.js");
load("./jstests/multiVersion/libs/initial_sync.js");
var testName = "multiversion_initial_sync_latest_from_last_stable";
let replSetVersion = "last-stable";
let newSecondaryVersion = "latest";
-let fcv = "3.4";
-multversionInitialSyncTest(testName, replSetVersion, newSecondaryVersion, {}, fcv);
+multversionInitialSyncTest(testName, replSetVersion, newSecondaryVersion, {}, lastStableFCV);
diff --git a/jstests/multiVersion/libs/initial_sync.js b/jstests/multiVersion/libs/initial_sync.js
index 866f825c8b9..6d108419319 100644
--- a/jstests/multiVersion/libs/initial_sync.js
+++ b/jstests/multiVersion/libs/initial_sync.js
@@ -26,10 +26,17 @@ var multversionInitialSyncTest = function(
// Wait for a primary node.
var primary = rst.getPrimary();
+ // TODO(SERVER-32597) remove this when fCV 4.0 becomes the default on clean startup.
+ if (replSetVersion == "latest") {
+ assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: "4.0"}));
+ rst.awaitReplication();
+ }
+
// Set 'featureCompatibilityVersion' if given.
if (fcv) {
jsTestLog("Setting FCV to '" + fcv + "' on the primary.");
assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: fcv}));
+ rst.awaitReplication();
}
// Insert some data and wait for replication.
diff --git a/jstests/multiVersion/migration_between_mixed_FCV_mixed_version_mongods.js b/jstests/multiVersion/migration_between_mixed_FCV_mixed_version_mongods.js
index 7c79af655b0..f2e5ef33ffe 100644
--- a/jstests/multiVersion/migration_between_mixed_FCV_mixed_version_mongods.js
+++ b/jstests/multiVersion/migration_between_mixed_FCV_mixed_version_mongods.js
@@ -3,20 +3,13 @@
* a downgrade binary version node.
*/
-// This test will not end with consistent UUIDs, since there is inconsistent
-// featureCompatibilityVersion across the cluster.
-TestData.skipCheckingUUIDsConsistentAcrossCluster = true;
-
(function() {
"use strict";
load("jstests/libs/feature_compatibility_version.js");
- const upgradeVersion = "3.6";
- const downgradeVersion = "3.4";
-
let st = new ShardingTest({
- shards: [{binVersion: "latest"}, {binVersion: downgradeVersion}],
+ shards: [{binVersion: "latest"}, {binVersion: "last-stable"}],
mongos: {binVersion: "latest"}
});
@@ -28,16 +21,16 @@ TestData.skipCheckingUUIDsConsistentAcrossCluster = true;
assert.commandWorked(
st.s.adminCommand({shardCollection: testDB.coll.getFullName(), key: {a: 1}}));
- // Set the featureCompatibilityVersion to 3.6. This will fail because the
- // featureCompatibilityVersion cannot be set to 3.6 on shard 1, but it will set the
- // featureCompatibilityVersion to 3.6 on shard 0.
- assert.commandFailed(st.s.adminCommand({setFeatureCompatibilityVersion: upgradeVersion}));
- checkFCV(st.configRS.getPrimary().getDB("admin"), downgradeVersion, upgradeVersion);
- checkFCV(st.shard0.getDB("admin"), upgradeVersion);
- checkFCV34(st.shard1.getDB("admin"), downgradeVersion);
+ // Set the featureCompatibilityVersion to latestFCV. This will fail because the
+ // featureCompatibilityVersion cannot be set to latestFCV on shard 1, but it will set the
+ // featureCompatibilityVersion to latestFCV on shard 0.
+ assert.commandFailed(st.s.adminCommand({setFeatureCompatibilityVersion: latestFCV}));
+ checkFCV(st.configRS.getPrimary().getDB("admin"), lastStableFCV, latestFCV);
+ checkFCV(st.shard0.getDB("admin"), latestFCV);
+ checkFCV(st.shard1.getDB("admin"), lastStableFCV);
- // It is not possible to move a chunk from an upgrade featureCompatibilityVersion shard to a
- // downgrade shard.
+ // It is not possible to move a chunk from a latestFCV shard to a last-stable binary version
+ // shard.
assert.commandFailedWithCode(
st.s.adminCommand(
{moveChunk: testDB.coll.getFullName(), find: {a: 1}, to: st.shard1.shardName}),
diff --git a/jstests/multiVersion/rename_across_dbs_last_stable_primary.js b/jstests/multiVersion/rename_across_dbs_last_stable_primary.js
index cc2bbeaf137..54e654c4dcb 100644
--- a/jstests/multiVersion/rename_across_dbs_last_stable_primary.js
+++ b/jstests/multiVersion/rename_across_dbs_last_stable_primary.js
@@ -1,12 +1,13 @@
(function() {
'use strict';
+ load("jstests/libs/feature_compatibility_version.js");
load("jstests/replsets/libs/rename_across_dbs.js");
const nodes = [{binVersion: 'last-stable'}, {binVersion: 'latest'}, {}];
const options = {
nodes: nodes,
- setFeatureCompatibilityVersion: '3.4',
+ setFeatureCompatibilityVersion: lastStableFCV,
};
new RenameAcrossDatabasesTest(options).run();
diff --git a/jstests/multiVersion/rename_across_dbs_last_stable_primary_drop_target.js b/jstests/multiVersion/rename_across_dbs_last_stable_primary_drop_target.js
index 7922e4d074f..4cdab3f5a61 100644
--- a/jstests/multiVersion/rename_across_dbs_last_stable_primary_drop_target.js
+++ b/jstests/multiVersion/rename_across_dbs_last_stable_primary_drop_target.js
@@ -1,12 +1,13 @@
(function() {
'use strict';
+ load("jstests/libs/feature_compatibility_version.js");
load("jstests/replsets/libs/rename_across_dbs.js");
const nodes = [{binVersion: 'last-stable'}, {binVersion: 'latest'}, {}];
const options = {
nodes: nodes,
- setFeatureCompatibilityVersion: '3.4',
+ setFeatureCompatibilityVersion: lastStableFCV,
dropTarget: true,
};
diff --git a/jstests/multiVersion/rename_across_dbs_last_stable_secondary.js b/jstests/multiVersion/rename_across_dbs_last_stable_secondary.js
index 4d26a24ade1..3fd541a0ffc 100644
--- a/jstests/multiVersion/rename_across_dbs_last_stable_secondary.js
+++ b/jstests/multiVersion/rename_across_dbs_last_stable_secondary.js
@@ -1,12 +1,13 @@
(function() {
'use strict';
+ load("jstests/libs/feature_compatibility_version.js");
load("jstests/replsets/libs/rename_across_dbs.js");
const nodes = [{binVersion: 'latest'}, {binVersion: 'last-stable'}, {}];
const options = {
nodes: nodes,
- setFeatureCompatibilityVersion: '3.4',
+ setFeatureCompatibilityVersion: lastStableFCV,
};
new RenameAcrossDatabasesTest(options).run();
diff --git a/jstests/multiVersion/rename_across_dbs_last_stable_secondary_drop_target.js b/jstests/multiVersion/rename_across_dbs_last_stable_secondary_drop_target.js
index b848f991ceb..90ca1312db3 100644
--- a/jstests/multiVersion/rename_across_dbs_last_stable_secondary_drop_target.js
+++ b/jstests/multiVersion/rename_across_dbs_last_stable_secondary_drop_target.js
@@ -1,12 +1,13 @@
(function() {
'use strict';
+ load("jstests/libs/feature_compatibility_version.js");
load("jstests/replsets/libs/rename_across_dbs.js");
const nodes = [{binVersion: 'latest'}, {binVersion: 'last-stable'}, {}];
const options = {
nodes: nodes,
- setFeatureCompatibilityVersion: '3.4',
+ setFeatureCompatibilityVersion: lastStableFCV,
dropTarget: true,
};
diff --git a/jstests/multiVersion/upgrade_downgrade_while_creating_collection.js b/jstests/multiVersion/upgrade_downgrade_while_creating_collection.js
index a0ce25dc2b0..bc9fcbf239d 100644
--- a/jstests/multiVersion/upgrade_downgrade_while_creating_collection.js
+++ b/jstests/multiVersion/upgrade_downgrade_while_creating_collection.js
@@ -3,6 +3,7 @@
*/
(function() {
"use strict";
+ load("jstests/libs/feature_compatibility_version.js");
const rst = new ReplSetTest({nodes: 2});
rst.startSet();
@@ -18,7 +19,12 @@
const primary = rst.getPrimary();
const primaryDB = primary.getDB("test");
- for (let versions of[{from: "3.4", to: "3.6"}, {from: "3.6", to: "3.4"}]) {
+ // TODO(SERVER-32597) remove this when fCV 4.0 becomes the default on clean startup.
+ assert.commandWorked(primaryDB.adminCommand({setFeatureCompatibilityVersion: latestFCV}));
+ rst.awaitReplication();
+
+ for (let versions
+ of[{from: lastStableFCV, to: latestFCV}, {from: latestFCV, to: lastStableFCV}]) {
jsTestLog("Changing FeatureCompatibilityVersion from " + versions.from + " to " +
versions.to + " while creating a collection");
assert.commandWorked(