46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
/**
|
|
* Basic integration tests for updateZoneKeyRange command. More detailed tests can be found
|
|
* in sharding_catalog_assign_key_range_to_zone_test.cpp.
|
|
*/
|
|
(function() {
|
|
var st = new ShardingTest({shards: 1});
|
|
|
|
var configDB = st.s.getDB('config');
|
|
var shardName = configDB.shards.findOne()._id;
|
|
|
|
assert.commandWorked(st.s.adminCommand({addShardToZone: shardName, zone: 'x'}));
|
|
assert.commandWorked(st.s.adminCommand({enableSharding: 'test'}));
|
|
assert.commandWorked(st.s.adminCommand({shardCollection: 'test.user', key: {x: 1}}));
|
|
|
|
// Testing basic assign.
|
|
assert.commandWorked(
|
|
st.s.adminCommand({updateZoneKeyRange: 'test.user', min: {x: 0}, max: {x: 10}, zone: 'x'}));
|
|
|
|
var tagDoc = configDB.tags.findOne();
|
|
|
|
assert.eq('test.user', tagDoc.ns);
|
|
assert.eq({x: 0}, tagDoc.min);
|
|
assert.eq({x: 10}, tagDoc.max);
|
|
assert.eq('x', tagDoc.tag);
|
|
|
|
// Cannot assign overlapping ranges
|
|
assert.commandFailedWithCode(
|
|
st.s.adminCommand(
|
|
{updateZoneKeyRange: 'test.user', min: {x: -10}, max: {x: 20}, zone: 'x'}),
|
|
ErrorCodes.RangeOverlapConflict);
|
|
|
|
tagDoc = configDB.tags.findOne();
|
|
assert.eq('test.user', tagDoc.ns);
|
|
assert.eq({x: 0}, tagDoc.min);
|
|
assert.eq({x: 10}, tagDoc.max);
|
|
assert.eq('x', tagDoc.tag);
|
|
|
|
// Testing basic remove.
|
|
assert.commandWorked(st.s.adminCommand(
|
|
{updateZoneKeyRange: 'test.user', min: {x: 0}, max: {x: 10}, zone: null}));
|
|
|
|
assert.eq(null, configDB.tags.findOne());
|
|
|
|
st.stop();
|
|
})();
|