mongo/jstests/multiVersion/genericBinVersion/load_keys_on_upgrade.js

54 lines
1.5 KiB
JavaScript

import "jstests/multiVersion/libs/multi_rs.js";
import {ReplSetTest} from "jstests/libs/replsettest.js";
let oldVersion = "last-lts";
let nodes = {
n1: {binVersion: oldVersion},
n2: {binVersion: oldVersion},
n3: {binVersion: oldVersion},
};
let keyFile = "jstests/libs/key1";
let rst = new ReplSetTest({nodes: nodes, keyFile: keyFile});
rst.startSet();
rst.initiate(Object.extend(rst.getReplSetConfig(), {writeConcernMajorityJournalDefault: true}), null, {
initiateWithDefaultElectionTimeout: true,
});
// Wait for a primary node...
let primary = rst.getPrimary();
primary.getDB("admin").createUser({user: "root", pwd: "root", roles: ["root"]}, {w: 3});
let 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();