diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-09-21 14:23:36 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-09-22 19:30:56 -0400 |
commit | 8b64a10e341668dc6f8762c9c24977577e922398 (patch) | |
tree | efc2e58e9e8d2540036c915fade98f7349350441 | |
parent | 5749a726b242af9f54834765fbf1c66eeed6dc3a (diff) | |
download | mongo-8b64a10e341668dc6f8762c9c24977577e922398.tar.gz |
SERVER-31204 Forward-port changes to enable_sharding_basic.js
-rw-r--r-- | jstests/sharding/enable_sharding_basic.js | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/jstests/sharding/enable_sharding_basic.js b/jstests/sharding/enable_sharding_basic.js index 1f049c814ca..b2f432c6fe9 100644 --- a/jstests/sharding/enable_sharding_basic.js +++ b/jstests/sharding/enable_sharding_basic.js @@ -5,48 +5,57 @@ (function() { 'use strict'; - var st = new ShardingTest({mongos: 1, shards: 2}); - - var mongos = st.s0; + var st = new ShardingTest({mongos: 2, shards: 2}); // enableSharding can run only on mongos. assert.commandFailedWithCode(st.d0.getDB('admin').runCommand({enableSharding: 'db'}), ErrorCodes.CommandNotFound); // enableSharding can run only against the admin database. - assert.commandFailedWithCode(mongos.getDB('test').runCommand({enableSharding: 'db'}), + assert.commandFailedWithCode(st.s0.getDB('test').runCommand({enableSharding: 'db'}), ErrorCodes.Unauthorized); // Can't shard 'config' database. - assert.commandFailed(mongos.adminCommand({enableSharding: 'config'})); + assert.commandFailed(st.s0.adminCommand({enableSharding: 'config'})); // Can't shard 'local' database. - assert.commandFailed(mongos.adminCommand({enableSharding: 'local'})); + assert.commandFailed(st.s0.adminCommand({enableSharding: 'local'})); // Can't shard 'admin' database. - assert.commandFailed(mongos.adminCommand({enableSharding: 'admin'})); + assert.commandFailed(st.s0.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.commandWorked(st.s0.adminCommand({enableSharding: 'db'})); + assert.eq(st.s0.getDB('config').databases.findOne({_id: 'db'}).partitioned, true); - assert.commandFailedWithCode(mongos.adminCommand({enableSharding: 'DB'}), + assert.commandFailedWithCode(st.s0.adminCommand({enableSharding: 'DB'}), ErrorCodes.DatabaseDifferCase); // Can't shard invalid db name. - assert.commandFailed(mongos.adminCommand({enableSharding: 'a.b'})); - assert.commandFailed(mongos.adminCommand({enableSharding: ''})); + assert.commandFailed(st.s0.adminCommand({enableSharding: 'a.b'})); + assert.commandFailed(st.s0.adminCommand({enableSharding: ''})); // Attempting to shard already sharded database returns success. - assert.commandWorked(mongos.adminCommand({enableSharding: 'db'})); - assert.eq(mongos.getDB('config').databases.findOne({_id: 'db'}).partitioned, true); + assert.commandWorked(st.s0.adminCommand({enableSharding: 'db'})); + assert.eq(st.s0.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); + assert.writeOK(st.s0.getDB('unsharded').foo.insert({aKey: "aValue"})); + assert.eq(st.s0.getDB('config').databases.findOne({_id: 'unsharded'}).partitioned, false); + assert.commandWorked(st.s0.adminCommand({enableSharding: 'unsharded'})); + assert.eq(st.s0.getDB('config').databases.findOne({_id: 'unsharded'}).partitioned, true); - st.stop(); + // Sharding a collection before 'enableSharding' is called fails + assert.commandFailed(st.s0.adminCommand({shardCollection: 'TestDB.TestColl', key: {_id: 1}})); + assert.commandFailed(st.s1.adminCommand({shardCollection: 'TestDB.TestColl', key: {_id: 1}})); + + assert.writeOK(st.s0.getDB('TestDB').TestColl.insert({_id: 0})); + assert.writeOK(st.s1.getDB('TestDB').TestColl.insert({_id: 1})); + // Calling 'enableSharding' on one mongos and 'shardCollection' through another must work + assert.commandWorked(st.s0.adminCommand({enableSharding: 'TestDB'})); + assert.commandWorked(st.s1.adminCommand({shardCollection: 'TestDB.TestColl', key: {_id: 1}})); + assert.commandWorked(st.s0.adminCommand({shardCollection: 'TestDB.TestColl', key: {_id: 1}})); + + st.stop(); })(); |