Files
mongo/jstests/sharding/enable_sharding_basic.js
2016-03-09 12:18:14 -05:00

54 lines
2.1 KiB
JavaScript

//
// Basic tests for enableSharding command.
//
(function() {
'use strict';
var st = new ShardingTest({mongos: 1, shards: 2});
var mongos = st.s0;
// enableSharing can run only on mongos.
assert.commandFailedWithCode(st.d0.getDB('admin').runCommand({enableSharding: 'db'}),
ErrorCodes.CommandNotFound);
// enableSharing can run only against the admin database.
assert.commandFailedWithCode(mongos.getDB('test').runCommand({enableSharding: 'db'}),
ErrorCodes.Unauthorized);
// Can't shard 'config' database.
assert.commandFailed(mongos.adminCommand({enableSharding: 'config'}));
// Can't shard 'local' database.
assert.commandFailed(mongos.adminCommand({enableSharding: 'local'}));
// Can't shard 'admin' database.
assert.commandFailed(mongos.adminCommand({enableSharding: 'admin'}));
// Can't shard db with the name that just differ on case.
assert.commandWorked(mongos.adminCommand({enableSharding: 'db'}));
assert.eq(mongos.getDB('config').databases.findOne({_id: 'db'}).partitioned, true);
assert.commandFailedWithCode(mongos.adminCommand({enableSharding: 'DB'}),
ErrorCodes.DatabaseDifferCase);
// Can't shard invalid db name.
assert.commandFailed(mongos.adminCommand({enableSharding: 'a.b'}));
assert.commandFailed(mongos.adminCommand({enableSharding: ''}));
// Can't shard already sharded database.
assert.commandFailedWithCode(mongos.adminCommand({enableSharding: 'db'}),
ErrorCodes.AlreadyInitialized);
assert.eq(mongos.getDB('config').databases.findOne({_id: 'db'}).partitioned, true);
// Verify config.databases metadata.
assert.writeOK(mongos.getDB('unsharded').foo.insert({aKey: "aValue"}));
assert.eq(mongos.getDB('config').databases.findOne({_id: 'unsharded'}).partitioned, false);
assert.commandWorked(mongos.adminCommand({enableSharding: 'unsharded'}));
assert.eq(mongos.getDB('config').databases.findOne({_id: 'unsharded'}).partitioned, true);
st.stop();
})();