diff options
Diffstat (limited to 'jstests/multiVersion/load_keys_on_upgrade.js')
-rw-r--r-- | jstests/multiVersion/load_keys_on_upgrade.js | 56 |
1 files changed, 56 insertions, 0 deletions
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 |