summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-09-21 14:23:36 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-09-22 19:30:56 -0400
commit8b64a10e341668dc6f8762c9c24977577e922398 (patch)
treeefc2e58e9e8d2540036c915fade98f7349350441
parent5749a726b242af9f54834765fbf1c66eeed6dc3a (diff)
downloadmongo-8b64a10e341668dc6f8762c9c24977577e922398.tar.gz
SERVER-31204 Forward-port changes to enable_sharding_basic.js
-rw-r--r--jstests/sharding/enable_sharding_basic.js47
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();
})();