summaryrefslogtreecommitdiff
path: root/jstests/noPassthroughWithMongod/sharding_balance3.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/noPassthroughWithMongod/sharding_balance3.js')
-rw-r--r--jstests/noPassthroughWithMongod/sharding_balance3.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/jstests/noPassthroughWithMongod/sharding_balance3.js b/jstests/noPassthroughWithMongod/sharding_balance3.js
new file mode 100644
index 00000000000..91196bcdebf
--- /dev/null
+++ b/jstests/noPassthroughWithMongod/sharding_balance3.js
@@ -0,0 +1,59 @@
+// sharding_balance3.js
+
+// simple test to make sure things get balanced
+
+s = new ShardingTest( "slow_sharding_balance3" , 2 , 3 , 1 , { chunksize : 1 } );
+
+s.adminCommand( { enablesharding : "test" } );
+
+s.config.settings.find().forEach( printjson );
+
+db = s.getDB( "test" );
+
+bigString = ""
+while ( bigString.length < 10000 )
+ bigString += "asdasdasdasdadasdasdasdasdasdasdasdasda";
+
+inserted = 0;
+num = 0;
+while ( inserted < ( 40 * 1024 * 1024 ) ){
+ db.foo.insert( { _id : num++ , s : bigString } );
+ inserted += bigString.length;
+}
+
+db.getLastError();
+s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } );
+assert.lt( 20 , s.config.chunks.count() , "setup2" );
+
+function diff1(){
+ var x = s.chunkCounts( "foo" );
+ printjson( x )
+ return Math.max( x.shard0000 , x.shard0001 ) - Math.min( x.shard0000 , x.shard0001 );
+}
+
+assert.lt( 10 , diff1() );
+
+// Wait for balancer to kick in.
+var initialDiff = diff1();
+var maxRetries = 3;
+while ( diff1() == initialDiff ){
+ sleep( 5000 );
+ assert.lt( 0, maxRetries--, "Balancer did not kick in.");
+}
+
+print("* A");
+print( "disabling the balancer" );
+s.config.settings.update( { _id : "balancer" }, { $set : { stopped : true } } , true );
+s.config.settings.find().forEach( printjson );
+print("* B");
+
+
+print( diff1() )
+
+var currDiff = diff1();
+assert.repeat( function(){
+ var d = diff1();
+ return d != currDiff;
+} , "balance with stopped flag should not have happened" , 1000 * 60 , 5000 );
+
+s.stop()