diff options
Diffstat (limited to 'jstests/sharding/addshard2.js')
-rw-r--r-- | jstests/sharding/addshard2.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/jstests/sharding/addshard2.js b/jstests/sharding/addshard2.js new file mode 100644 index 0000000..92a54da --- /dev/null +++ b/jstests/sharding/addshard2.js @@ -0,0 +1,52 @@ + +// don't start any shards, yet +s = new ShardingTest( "add_shard2", 1, 0, 1, {useHostname : true} ); + +var conn1 = startMongodTest( 30001 , "add_shard21" , 0 , {useHostname : true} ); +var conn2 = startMongodTest( 30002 , "add_shard22" , 0 , {useHostname : true} ); + +var rs1 = new ReplSetTest( { "name" : "add_shard2_rs1", nodes : 3 , startPort : 31200 } ); +rs1.startSet(); +rs1.initiate(); +var master1 = rs1.getMaster(); + +var rs2 = new ReplSetTest( { "name" : "add_shard2_rs2", nodes : 3 , startPort : 31203 } ); +rs2.startSet(); +rs2.initiate(); +var master2 = rs2.getMaster(); + +// step 1. name given +assert(s.admin.runCommand({"addshard" : getHostName()+":30001", "name" : "bar"}).ok, "failed to add shard in step 1"); +var shard = s.getDB("config").shards.findOne({"_id" : {"$nin" : ["shard0000"]}}); +assert(shard, "shard wasn't found"); +assert.eq("bar", shard._id, "shard has incorrect name"); + +// step 2. replica set +assert(s.admin.runCommand({"addshard" : "add_shard2_rs1/"+getHostName()+":31200"}).ok, "failed to add shard in step 2"); +shard = s.getDB("config").shards.findOne({"_id" : {"$nin" : ["shard0000", "bar"]}}); +assert(shard, "shard wasn't found"); +assert.eq("add_shard2_rs1", shard._id, "t2 name"); + +// step 3. replica set w/ name given +assert(s.admin.runCommand({"addshard" : "add_shard2_rs2/"+getHostName()+":31203", "name" : "myshard"}).ok, + "failed to add shard in step 4"); +shard = s.getDB("config").shards.findOne({"_id" : {"$nin" : ["shard0000", "bar", "add_shard2_rs1"]}}); +assert(shard, "shard wasn't found"); +assert.eq("myshard", shard._id, "t3 name"); + +// step 4. no name given +assert(s.admin.runCommand({"addshard" : getHostName()+":30002"}).ok, "failed to add shard in step 4"); +shard = s.getDB("config").shards.findOne({"_id" : {"$nin" : ["shard0000", "bar", "add_shard2_rs1", "myshard"]}}); +assert(shard, "shard wasn't found"); +assert.eq("shard0001", shard._id, "t4 name"); + +assert.eq(s.getDB("config").shards.count(), 5, "unexpected number of shards"); + +// step 5. replica set w/ a wrong host +assert(!s.admin.runCommand({"addshard" : "add_shard2_rs2/NonExistingHost:31203"}).ok, "accepted bad hostname in step 5"); + +// step 6. replica set w/ mixed wrong/right hosts +assert(!s.admin.runCommand({"addshard" : "add_shard2_rs2/"+getHostName()+":31203,foo:9999"}).ok, + "accepted bad hostname in step 6"); + +s.stop();
\ No newline at end of file |