summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorXiangyu Yao <xiangyu.yao@mongodb.com>2017-11-07 14:48:56 -0500
committerXiangyu Yao <xiangyu.yao@mongodb.com>2017-11-10 10:49:12 -0500
commit07c34da05d049282a41e84282d6755149127e4b7 (patch)
treeee0fe00511d99af4ec3a1f78393001df8256d28c /jstests
parenteaf6c96f4893946cd62d6565d3aab92901b92ad8 (diff)
downloadmongo-07c34da05d049282a41e84282d6755149127e4b7.tar.gz
SERVER-31740 Make setFeatureCompatibilityVersion idempotent
Diffstat (limited to 'jstests')
-rw-r--r--jstests/multiVersion/set_feature_compatibility_version.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/jstests/multiVersion/set_feature_compatibility_version.js b/jstests/multiVersion/set_feature_compatibility_version.js
index 2ee29b36404..83c88ec77f5 100644
--- a/jstests/multiVersion/set_feature_compatibility_version.js
+++ b/jstests/multiVersion/set_feature_compatibility_version.js
@@ -398,6 +398,30 @@ TestData.skipCheckingUUIDsConsistentAcrossCluster = true;
assert.eq(res.featureCompatibilityVersion.targetVersion, null, tojson(res));
rst.stopSet();
+ // Test idempotency for setFeatureCompatibilityVersion.
+ rst = new ReplSetTest({nodes: 2, nodeOpts: {binVersion: latest}});
+ rst.startSet();
+ rst.initiate();
+
+ // Set FCV to 3.4 so that a 3.4 node can join the set.
+ primary = rst.getPrimary();
+ assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: downgrade}));
+ rst.awaitReplication();
+
+ // Add a 3.4 node to the set.
+ secondary = rst.add({binVersion: downgrade});
+ rst.reInitiate();
+
+ // Ensure the 3.4 node succeeded its initial sync.
+ assert.writeOK(primary.getDB("test").coll.insert({awaitRepl: true}, {writeConcern: {w: 3}}));
+
+ // Run {setFCV: "3.4"}. This should be idempotent.
+ assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: downgrade}));
+ rst.awaitReplication();
+
+ // Ensure the secondary is still running.
+ rst.stopSet();
+
//
// Sharding tests.
//