diff options
author | Maria van Keulen <maria@mongodb.com> | 2018-01-29 11:02:11 -0500 |
---|---|---|
committer | Maria van Keulen <maria@mongodb.com> | 2018-02-02 15:31:03 -0500 |
commit | ce3049c1eae2f8e22c0e47086dfa6c77aaab90f7 (patch) | |
tree | 4887ac72ce148abb2b8929afc38419eec9573b42 /jstests/multiVersion | |
parent | 16f907e29539150d27408778d7f62b723c5131ab (diff) | |
download | mongo-ce3049c1eae2f8e22c0e47086dfa6c77aaab90f7.tar.gz |
SERVER-33003 Re-enable passing multiVersion tests
Diffstat (limited to 'jstests/multiVersion')
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( |