summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTommaso Tocci <tommaso.tocci@mongodb.com>2020-06-25 15:34:17 +0200
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-18 17:27:57 +0000
commitf945fe9aff545bd3f5e64519ec33b9ff80412cd1 (patch)
tree6347ee76ea61b08991f9973c35c2016737016652
parent5b36d69aa602d9c45a67c7e0c766823ea66c9711 (diff)
downloadmongo-f945fe9aff545bd3f5e64519ec33b9ff80412cd1.tar.gz
SERVER-43938 Make auth_sharding_cmd_metadata.js start shards as replica sets
(cherry picked from commit d71c2c6a619347303a272e0dc89af28faa71baf5)
-rw-r--r--jstests/sharding/auth_sharding_cmd_metadata.js55
1 files changed, 28 insertions, 27 deletions
diff --git a/jstests/sharding/auth_sharding_cmd_metadata.js b/jstests/sharding/auth_sharding_cmd_metadata.js
index 8744e6dded6..9abe32d9276 100644
--- a/jstests/sharding/auth_sharding_cmd_metadata.js
+++ b/jstests/sharding/auth_sharding_cmd_metadata.js
@@ -5,42 +5,43 @@
"use strict";
-// TODO: SERVER-43938 Make auth_sharding_cmd_metadata.js start shards as replica sets.
-var st =
- new ShardingTest({shards: 1, other: {keyFile: 'jstests/libs/key1', shardAsReplicaSet: false}});
+function getConfigOpTime() {
+ var srvStatus = assert.commandWorked(shardTestDB.serverStatus());
+ assert.hasFields(srvStatus, ['sharding']);
+ return srvStatus.sharding.lastSeenConfigServerOpTime.t;
+}
-var adminUser = {db: "admin", username: "foo", password: "bar"};
+var st = new ShardingTest({shards: 1, other: {keyFile: 'jstests/libs/key1'}});
-st.s.getDB(adminUser.db).createUser({user: 'foo', pwd: 'bar', roles: jsTest.adminUserRoles});
-
-st.s.getDB('admin').auth('foo', 'bar');
+const mongosAdminDB = st.s.getDB('admin');
+mongosAdminDB.createUser({user: 'foo', pwd: 'bar', roles: jsTest.adminUserRoles});
+mongosAdminDB.auth('foo', 'bar');
st.adminCommand({enableSharding: 'test'});
st.adminCommand({shardCollection: 'test.user', key: {x: 1}});
-st.d0.getDB('admin').createUser({user: 'user', pwd: 'pwd', roles: jsTest.adminUserRoles});
-st.d0.getDB('admin').auth('user', 'pwd');
-
-var maxSecs = Math.pow(2, 32) - 1;
-var metadata = {$configServerState: {opTime: {ts: Timestamp(maxSecs, 0), t: maxSecs}}};
-var res = st.d0.getDB('test').runCommandWithMetadata({ping: 1}, metadata);
-
+const shardAdminDB = st.rs0.getPrimary().getDB('admin');
+const shardTestDB = st.rs0.getPrimary().getDB('test');
+const maxSecs = Math.pow(2, 32) - 1;
+const metadata = {
+ $configServerState: {opTime: {ts: Timestamp(maxSecs, 0), t: maxSecs}}
+};
+
+// ConfigOpTime can't be advanced without the correct permissions
+shardAdminDB.createUser({user: 'user', pwd: 'pwd', roles: jsTest.adminUserRoles});
+shardAdminDB.auth('user', 'pwd');
+var res = shardTestDB.runCommandWithMetadata({ping: 1}, metadata);
assert.commandFailedWithCode(res.commandReply, ErrorCodes.Unauthorized);
+assert.lt(getConfigOpTime(), maxSecs, "Unexpected ConfigOpTime advancement");
-// Make sure that the config server optime did not advance.
-var status = st.d0.getDB('test').runCommand({serverStatus: 1});
-assert.neq(null, status.sharding);
-assert.lt(status.sharding.lastSeenConfigServerOpTime.t, maxSecs);
-
-st.d0.getDB('admin').createUser({user: 'internal', pwd: 'pwd', roles: ['__system']});
-st.d0.getDB('admin').auth('internal', 'pwd');
-
-res = st.d0.getDB('test').runCommandWithMetadata({ping: 1}, metadata);
+// Advance configOpTime
+shardAdminDB.createUser({user: 'internal', pwd: 'pwd', roles: ['__system']});
+shardAdminDB.auth('internal', 'pwd');
+res = shardTestDB.runCommandWithMetadata({ping: 1}, metadata);
assert.commandWorked(res.commandReply);
+assert.eq(getConfigOpTime(), maxSecs, "ConfigOpTime did not advanced as expected");
-status = st.d0.getDB('test').runCommand({serverStatus: 1});
-assert.neq(null, status.sharding);
-assert.eq(status.sharding.lastSeenConfigServerOpTime.t, maxSecs);
-
+mongosAdminDB.logout();
+shardAdminDB.logout();
st.stop();
})();