diff options
author | Tommaso Tocci <tommaso.tocci@mongodb.com> | 2020-06-25 15:34:17 +0200 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-18 17:27:57 +0000 |
commit | f945fe9aff545bd3f5e64519ec33b9ff80412cd1 (patch) | |
tree | 6347ee76ea61b08991f9973c35c2016737016652 | |
parent | 5b36d69aa602d9c45a67c7e0c766823ea66c9711 (diff) | |
download | mongo-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.js | 55 |
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(); })(); |