diff options
Diffstat (limited to 'jstests/noPassthroughWithMongod/no_balance_collection.js')
-rw-r--r-- | jstests/noPassthroughWithMongod/no_balance_collection.js | 80 |
1 files changed, 42 insertions, 38 deletions
diff --git a/jstests/noPassthroughWithMongod/no_balance_collection.js b/jstests/noPassthroughWithMongod/no_balance_collection.js index 45736c26a4e..cfec6199ca2 100644 --- a/jstests/noPassthroughWithMongod/no_balance_collection.js +++ b/jstests/noPassthroughWithMongod/no_balance_collection.js @@ -1,91 +1,95 @@ // Tests whether the noBalance flag disables balancing for collections -var st = new ShardingTest({ shards : 2, mongos : 1, verbose : 1 }); +var st = new ShardingTest({shards: 2, mongos: 1, verbose: 1}); // First, test that shell helpers require an argument assert.throws(sh.disableBalancing, [], "sh.disableBalancing requires a collection"); assert.throws(sh.enableBalancing, [], "sh.enableBalancing requires a collection"); - // Initially stop balancing st.stopBalancer(); var shardAName = st._shardNames[0]; var shardBName = st._shardNames[1]; -var collA = st.s.getCollection( jsTest.name() + ".collA" ); -var collB = st.s.getCollection( jsTest.name() + ".collB" ); +var collA = st.s.getCollection(jsTest.name() + ".collA"); +var collB = st.s.getCollection(jsTest.name() + ".collB"); // Shard two collections -st.shardColl( collA, { _id : 1 }, false ); -st.shardColl( collB, { _id : 1 }, false ); +st.shardColl(collA, {_id: 1}, false); +st.shardColl(collB, {_id: 1}, false); // Split into a lot of chunks so balancing can occur -for( var i = 0; i < 10 - 1; i++ ){ // 10 chunks total - collA.getMongo().getDB("admin").runCommand({ split : collA + "", middle : { _id : i } }); - collA.getMongo().getDB("admin").runCommand({ split : collB + "", middle : { _id : i } }); +for (var i = 0; i < 10 - 1; i++) { // 10 chunks total + collA.getMongo().getDB("admin").runCommand({split: collA + "", middle: {_id: i}}); + collA.getMongo().getDB("admin").runCommand({split: collB + "", middle: {_id: i}}); } // Disable balancing on one collection -sh.disableBalancing( collB ); +sh.disableBalancing(collB); -jsTest.log( "Balancing disabled on " + collB ); -printjson( collA.getDB().getSisterDB( "config" ).collections.find().toArray() ); +jsTest.log("Balancing disabled on " + collB); +printjson(collA.getDB().getSisterDB("config").collections.find().toArray()); st.startBalancer(); // Make sure collA gets balanced -assert.soon( function(){ - var shardAChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collA ), shard : shardAName }).itcount(); - var shardBChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collA ), shard : shardBName }).itcount(); - printjson({ shardA : shardAChunks, shardB : shardBChunks }); +assert.soon(function() { + var shardAChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collA), shard: shardAName}).itcount(); + var shardBChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collA), shard: shardBName}).itcount(); + printjson({shardA: shardAChunks, shardB: shardBChunks}); return shardAChunks == shardBChunks; -}, "" + collA + " chunks not balanced!", 5 * 60 * 1000 ); +}, "" + collA + " chunks not balanced!", 5 * 60 * 1000); -jsTest.log( "Chunks for " + collA + " are balanced." ); +jsTest.log("Chunks for " + collA + " are balanced."); // Check that the collB chunks were not moved -var shardAChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collB ), shard : shardAName }).itcount(); -var shardBChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collB ), shard : shardBName }).itcount(); -printjson({ shardA : shardAChunks, shardB : shardBChunks }); -assert( shardAChunks == 0 || shardBChunks == 0 ); +var shardAChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collB), shard: shardAName}).itcount(); +var shardBChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collB), shard: shardBName}).itcount(); +printjson({shardA: shardAChunks, shardB: shardBChunks}); +assert(shardAChunks == 0 || shardBChunks == 0); // Re-enable balancing for collB -sh.enableBalancing( collB ); +sh.enableBalancing(collB); // Make sure that collB is now balanced -assert.soon( function(){ - var shardAChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collB ), shard : shardAName }).itcount(); - var shardBChunks = st.s.getDB( "config" ).chunks.find({ _id : sh._collRE( collB ), shard : shardBName }).itcount(); - printjson({ shardA : shardAChunks, shardB : shardBChunks }); +assert.soon(function() { + var shardAChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collB), shard: shardAName}).itcount(); + var shardBChunks = + st.s.getDB("config").chunks.find({_id: sh._collRE(collB), shard: shardBName}).itcount(); + printjson({shardA: shardAChunks, shardB: shardBChunks}); return shardAChunks == shardBChunks; -}, "" + collB + " chunks not balanced!", 5 * 60 * 1000 ); +}, "" + collB + " chunks not balanced!", 5 * 60 * 1000); -jsTest.log( "Chunks for " + collB + " are balanced." ); +jsTest.log("Chunks for " + collB + " are balanced."); // Re-disable balancing for collB -sh.disableBalancing( collB ); +sh.disableBalancing(collB); // Wait for the balancer to fully finish the last migration and write the changelog // MUST set db var here, ugly but necessary db = st.s0.getDB("config"); sh.waitForBalancer(true); // Make sure auto-migrates on insert don't move chunks -var lastMigration = sh._lastMigration( collB ); +var lastMigration = sh._lastMigration(collB); var bulk = collB.initializeUnorderedBulkOp(); -for( var i = 0; i < 1000000; i++ ){ - bulk.insert({ _id: i, hello: "world" }); +for (var i = 0; i < 1000000; i++) { + bulk.insert({_id: i, hello: "world"}); } assert.writeOK(bulk.execute()); -printjson( lastMigration ); -printjson( sh._lastMigration( collB ) ); +printjson(lastMigration); +printjson(sh._lastMigration(collB)); -if(lastMigration == null) { +if (lastMigration == null) { assert.eq(null, sh._lastMigration(collB)); -} -else { +} else { assert.eq(lastMigration.time, sh._lastMigration(collB).time); } |