Files
mongo/jstests/sharding/move_primary_basic.js
Misha Tyulenev e61483f604 SERVER-21137 add basic tests for movePrimary command
(cherry picked from commit a6e09d623c)
2015-12-10 17:15:54 -05:00

59 lines
2.0 KiB
JavaScript

//
// 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();
})()