var st = new ShardingTest("maxSize", 2, 1, 1, {shards: 2, chunksize: 1, manualAddShard: true});
|
var dbName = "test";
|
var collName = "topchunk";
|
var db = st.getDB(dbName);
|
var coll = db[collName];
|
var configDB = st.s.getDB('config');
|
|
st.startBalancer();
|
db.adminCommand({configureFailPoint: 'skipBalanceRound', mode: 'alwaysOn'});
|
|
st.adminCommand({addshard: st.getConnNames()[0], maxSize: 5});
|
st.adminCommand({addshard: st.getConnNames()[1], maxSize: 1});
|
|
db.adminCommand({enableSharding: dbName});
|
db.adminCommand({movePrimary: dbName, to: 'shard0000'});
|
db.adminCommand({shardCollection: coll+"", key: {x: 1}});
|
|
db.adminCommand({split: coll+"", middle: {x: 1000}});
|
db.adminCommand({moveChunk: coll+"", find: {x: 1000}, to: 'shard0000'});
|
|
db.adminCommand({split: coll+"", middle: {x: 0}});
|
db.adminCommand({moveChunk: coll+"", find: {x: 0}, to: 'shard0001'});
|
|
db.printShardingStatus(true);
|
|
// Auto split assertion does not occur on bulk write to low top chunk
|
var largeStr = new Array(1000).join('x');
|
var bulk = coll.initializeUnorderedBulkOp();
|
for (var x = -2000; x < -2750; x--) {
|
bulk.insert({ x: x, val: largeStr });
|
}
|
bulk.execute();
|
|
// Auto split assertion happens on bulk write to high top chunk
|
bulk = coll.initializeUnorderedBulkOp();
|
for (var x = 2000; x < 2750; x++) {
|
bulk.insert({ x: x, val: largeStr });
|
}
|
bulk.execute();
|
|
db.printShardingStatus(true);
|
|
st.stop();
|