diff options
Diffstat (limited to 'jstests/sharding/bouncing_count.js')
-rw-r--r-- | jstests/sharding/bouncing_count.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/jstests/sharding/bouncing_count.js b/jstests/sharding/bouncing_count.js new file mode 100644 index 0000000..d9630a4 --- /dev/null +++ b/jstests/sharding/bouncing_count.js @@ -0,0 +1,49 @@ +// Tests whether new sharding is detected on insert by mongos + +var st = new ShardingTest( name = "test", shards = 10, verbose = 0, mongos = 3 ) + +var mongosA = st.s0 +var mongosB = st.s1 +var mongosC = st.s2 + +var admin = mongosA.getDB("admin") +var config = mongosA.getDB("config") + +var collA = mongosA.getCollection( "foo.bar" ) +var collB = mongosB.getCollection( "" + collA ) +var collC = mongosB.getCollection( "" + collA ) + +admin.runCommand({ enableSharding : "" + collA.getDB() }) +admin.runCommand({ shardCollection : "" + collA, key : { _id : 1 } }) + +var shards = config.shards.find().sort({ _id : 1 }).toArray() + +jsTestLog( "Splitting up the collection..." ) + +// Split up the collection +for( var i = 0; i < shards.length; i++ ){ + printjson( admin.runCommand({ split : "" + collA, middle : { _id : i } }) ) + printjson( admin.runCommand({ moveChunk : "" + collA, find : { _id : i }, to : shards[i]._id }) ) +} + +mongosB.getDB("admin").runCommand({ flushRouterConfig : 1 }) +mongosC.getDB("admin").runCommand({ flushRouterConfig : 1 }) +printjson( collB.count() ) +printjson( collC.count() ) + +// Change up all the versions... +for( var i = 0; i < shards.length; i++ ){ + printjson( admin.runCommand({ moveChunk : "" + collA, find : { _id : i }, to : shards[ (i + 1) % shards.length ]._id }) ) +} + +// Make sure mongos A is up-to-date +mongosA.getDB("admin").runCommand({ flushRouterConfig : 1 }) + +config.printShardingStatus( true ) + +jsTestLog( "Running count!" ) + +printjson( collB.count() ) +printjson( collC.find().toArray() ) + +st.stop()
\ No newline at end of file |