diff options
Diffstat (limited to 'jstests/sharding/add_and_remove_shard_from_zone.js')
-rw-r--r-- | jstests/sharding/add_and_remove_shard_from_zone.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/jstests/sharding/add_and_remove_shard_from_zone.js b/jstests/sharding/add_and_remove_shard_from_zone.js new file mode 100644 index 00000000000..d4773597259 --- /dev/null +++ b/jstests/sharding/add_and_remove_shard_from_zone.js @@ -0,0 +1,40 @@ +/** + * Basic integration tests for addShardToZone command. More detailed tests can be found + * in sharding_catalog_add_shard_to_zone_test.cpp. + */ +(function() { + 'use strict'; + + let st = new ShardingTest({shards: 1}); + let mongos = st.s0; + + let config = mongos.getDB('config'); + var shardName = st.shard0.shardName; + + // Test adding shard with no zone to a new zone. + assert.commandWorked(mongos.adminCommand({addShardToZone: shardName, zone: 'x'})); + var shardDoc = config.shards.findOne(); + assert.eq(['x'], shardDoc.tags); + + // Test adding zone to a shard with existing zones. + assert.commandWorked(mongos.adminCommand({addShardToZone: shardName, zone: 'y'})); + shardDoc = config.shards.findOne(); + assert.eq(['x', 'y'], shardDoc.tags); + + // Test removing shard from existing zone. + assert.commandWorked(mongos.adminCommand({removeShardFromZone: shardName, zone: 'x'})); + shardDoc = config.shards.findOne(); + assert.eq(['y'], shardDoc.tags); + + // Test removing shard from zone that no longer exists. + assert.commandWorked(mongos.adminCommand({removeShardFromZone: shardName, zone: 'x'})); + shardDoc = config.shards.findOne(); + assert.eq(['y'], shardDoc.tags); + + // Test removing the last zone from a shard + assert.commandWorked(mongos.adminCommand({removeShardFromZone: shardName, zone: 'y'})); + shardDoc = config.shards.findOne(); + assert.eq([], shardDoc.tags); + + st.stop(); +})(); |