summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorAlex Taskov <alex.taskov@mongodb.com>2021-05-14 21:59:11 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-15 02:19:21 +0000
commit7a78bd358e2b23ce9570b56ce3e82d19b4e93c85 (patch)
treedcc3215f42154152581d10aa8ded1db2c15dfbe4 /jstests
parent99b2782aa296596714c348bd7b7efae21b76af68 (diff)
downloadmongo-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.js2
-rw-r--r--jstests/multiVersion/load_keys_on_upgrade.js56
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