(function() { var s = new ShardingTest({ name: "Sharding multiple ns", shards: 1, mongos: 1, other: { rs : true , chunkSize: 1 } }); s.adminCommand( { enablesharding : "test" } ); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); db = s.getDB( "test" ); var bulk = db.foo.initializeUnorderedBulkOp(); var bulk2 = db.bar.initializeUnorderedBulkOp(); for ( i=0; i<100; i++ ) { bulk.insert({ _id: i, x: i }); bulk2.insert({ _id: i, x: i }); } assert.writeOK(bulk.execute()); assert.writeOK(bulk2.execute()); sh.splitAt( "test.foo" , { _id : 50 } ); other = new Mongo( s.s.name ); dbother = other.getDB( "test" ); assert.eq( 5 , db.foo.findOne( { _id : 5 } ).x ); assert.eq( 5 , dbother.foo.findOne( { _id : 5 } ).x ); assert.eq( 5 , db.bar.findOne( { _id : 5 } ).x ); assert.eq( 5 , dbother.bar.findOne( { _id : 5 } ).x ); s._rs[0].test.awaitReplication(); s._rs[0].test.stopMaster(15); // Wait for the primary to come back online... var primary = s._rs[0].test.getPrimary(); // Wait for the mongos to recognize the new primary... ReplSetTest.awaitRSClientHosts( db.getMongo(), primary, { ismaster : true } ); assert.eq( 5 , db.foo.findOne( { _id : 5 } ).x ); assert.eq( 5 , db.bar.findOne( { _id : 5 } ).x ); s.adminCommand( { shardcollection : "test.bar" , key : { _id : 1 } } ); sh.splitAt( "test.bar" , { _id : 50 } ); yetagain = new Mongo( s.s.name ); assert.eq( 5 , yetagain.getDB( "test" ).bar.findOne( { _id : 5 } ).x ); assert.eq( 5 , yetagain.getDB( "test" ).foo.findOne( { _id : 5 } ).x ); assert.eq( 5 , dbother.bar.findOne( { _id : 5 } ).x ); assert.eq( 5 , dbother.foo.findOne( { _id : 5 } ).x ); s.stop(); })();