diff options
author | Misha Tyulenev <misha@mongodb.com> | 2015-12-10 14:54:04 -0500 |
---|---|---|
committer | Misha Tyulenev <misha@mongodb.com> | 2015-12-10 17:15:54 -0500 |
commit | e61483f604ad40e8a997a42ceee780301a0c680d (patch) | |
tree | 966281c2f5be040f55ed7e69675d89140d37b408 /jstests | |
parent | 2f4d9caae50fc4a7ad6283de324372135ecef545 (diff) | |
download | mongo-e61483f604ad40e8a997a42ceee780301a0c680d.tar.gz |
SERVER-21137 add basic tests for movePrimary command
(cherry picked from commit a6e09d623cbb58135c4c3777c09879a0ae2fbe73)
Diffstat (limited to 'jstests')
-rw-r--r-- | jstests/sharding/move_primary_basic.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/jstests/sharding/move_primary_basic.js b/jstests/sharding/move_primary_basic.js new file mode 100644 index 00000000000..17b5b694ffb --- /dev/null +++ b/jstests/sharding/move_primary_basic.js @@ -0,0 +1,58 @@ +// +// Basic tests for movePrimary. +// + +(function() { +'use strict'; + +var st = new ShardingTest({mongos:1, shards:2}); + +var mongos = st.s0; + +var kDbName = 'db'; + +var shards = mongos.getCollection('config.shards').find().toArray(); + +var shard0 = shards[0]._id; +var shard1 = shards[1]._id; + +assert.commandWorked(mongos.adminCommand({enableSharding : kDbName})); + +// Can run only on mongos. +assert.commandFailedWithCode(st.d0.getDB('admin').runCommand({movePrimary : kDbName, to: shard0}), + ErrorCodes.CommandNotFound); + +// Can run only against the admin database. +assert.commandFailedWithCode(mongos.getDB('test').runCommand({movePrimary : kDbName, to: shard0}), + ErrorCodes.Unauthorized); + +// Can't movePrimary for 'config' database. +assert.commandFailed(mongos.adminCommand({movePrimary : 'config', to: shard0})); + +// Can't movePrimary for 'local' database. +assert.commandFailed(mongos.adminCommand({movePrimary : 'local', to: shard0})); + +// Can't movePrimary for 'admin' database. +assert.commandFailed(mongos.adminCommand({movePrimary : 'admin', to: shard0})); + +// Can't movePrimary for invalid db name. +assert.commandFailed(mongos.adminCommand({movePrimary : 'a.b', to: shard0})); +assert.commandFailed(mongos.adminCommand({movePrimary : '', to: shard0})); + +// Fail if shard does not exist or empty. +assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: 'Unknown'})); +assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: ''})); +assert.commandFailed(mongos.adminCommand({movePrimary : kDbName})); + +// Fail if moveShard to already primary and verify metadata changes. +assert.eq(shard0, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); + +assert.commandWorked(mongos.adminCommand({movePrimary : kDbName, to: shard1})); +assert.eq(shard1, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); + +assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: shard1})); +assert.eq(shard1, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); + +st.stop(); + +})() |