diff options
author | Alex Taskov <alex.taskov@mongodb.com> | 2021-05-14 21:59:11 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-15 02:19:21 +0000 |
commit | 7a78bd358e2b23ce9570b56ce3e82d19b4e93c85 (patch) | |
tree | dcc3215f42154152581d10aa8ded1db2c15dfbe4 /jstests | |
parent | 99b2782aa296596714c348bd7b7efae21b76af68 (diff) | |
download | mongo-7a78bd358e2b23ce9570b56ce3e82d19b4e93c85.tar.gz |
SERVER-53029 Port the changes for SERVER-52955 to later branches
(cherry picked from commit 554fab0be3f1699a68201e70eb9fd1a42d78ca1f)
Diffstat (limited to 'jstests')
-rw-r--r-- | jstests/multiVersion/libs/multi_rs.js | 2 | ||||
-rw-r--r-- | jstests/multiVersion/load_keys_on_upgrade.js | 56 |
2 files changed, 58 insertions, 0 deletions
diff --git a/jstests/multiVersion/libs/multi_rs.js b/jstests/multiVersion/libs/multi_rs.js index 5c41eeb05ee..7d180f01fbe 100644 --- a/jstests/multiVersion/libs/multi_rs.js +++ b/jstests/multiVersion/libs/multi_rs.js @@ -41,6 +41,8 @@ ReplSetTest.prototype.upgradePrimary = function(primary, options, user, pwd) { this.nodeOptions[nodeName] = Object.merge(this.nodeOptions[nodeName], options); } + jsTest.authenticate(primary); + let oldPrimary = this.stepdown(primary); this.waitForState(oldPrimary, ReplSetTest.State.SECONDARY); diff --git a/jstests/multiVersion/load_keys_on_upgrade.js b/jstests/multiVersion/load_keys_on_upgrade.js new file mode 100644 index 00000000000..5b5c8801d83 --- /dev/null +++ b/jstests/multiVersion/load_keys_on_upgrade.js @@ -0,0 +1,56 @@ +// +// Tests to validate that correct read concern is used to load clusterTime signing keys from +// admin.system.keys on upgrade. +// + +load('./jstests/multiVersion/libs/multi_rs.js'); + +var oldVersion = "last-stable"; + +var nodes = { + n1: {binVersion: oldVersion}, + n2: {binVersion: oldVersion}, + n3: {binVersion: oldVersion} +}; + +var keyFile = "jstests/libs/key1"; +var rst = new ReplSetTest({nodes: nodes, keyFile: keyFile}); + +rst.startSet(); + +rst.initiateWithAnyNodeAsPrimary( + Object.extend(rst.getReplSetConfig(), {writeConcernMajorityJournalDefault: true})); + +// Wait for a primary node... +var primary = rst.getPrimary(); + +primary.getDB("admin").createUser({user: "root", pwd: "root", roles: ["root"]}, {w: 3}); + +var rsConn = new Mongo(rst.getURL()); +assert.eq(1, rsConn.getDB("admin").auth("root", "root")); +assert.commandWorked(rsConn.adminCommand({hello: 1})); +print("clusterTime: " + tojson(rsConn.getDB("admin").getSession().getClusterTime())); + +jsTest.log("Upgrading replica set..."); + +TestData.auth = true; +TestData.keyFile = keyFile; +TestData.authUser = "__system"; +TestData.keyFileData = "foopdedoop"; +TestData.authenticationDatabase = "local"; +rst.upgradeSet({keyFile: keyFile, binVersion: "latest"}); + +jsTest.log("Replica set upgraded."); + +TestData.keyFile = undefined; + +try { + rsConn.adminCommand({hello: 1}); +} catch (e) { +} + +assert.eq(1, rsConn.getDB("admin").auth("root", "root")); +assert.commandWorked(rsConn.adminCommand({hello: 1})); +print("clusterTime2: " + tojson(rsConn.getDB("admin").getSession().getClusterTime())); + +rst.stopSet();
\ No newline at end of file |