diff options
author | Randolph Tan <randolph@10gen.com> | 2016-03-18 11:27:33 -0400 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2016-03-23 14:39:22 -0400 |
commit | 86d463da0b058ad032a699edcd594d76088e12d8 (patch) | |
tree | faefab0a76fde32bb5df841c8c8d724c609e56d1 /jstests/sharding/shard_aware_primary_failover.js | |
parent | 1e67bede1a72e5fad8173c1bf76380ccb13b8470 (diff) | |
download | mongo-86d463da0b058ad032a699edcd594d76088e12d8.tar.gz |
SERVER-22661 Add initialization from shard identity doc
Diffstat (limited to 'jstests/sharding/shard_aware_primary_failover.js')
-rw-r--r-- | jstests/sharding/shard_aware_primary_failover.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/jstests/sharding/shard_aware_primary_failover.js b/jstests/sharding/shard_aware_primary_failover.js new file mode 100644 index 00000000000..6fac918494e --- /dev/null +++ b/jstests/sharding/shard_aware_primary_failover.js @@ -0,0 +1,51 @@ +/** + * Test that a new primary that gets elected will properly perform shard initialization. + */ + +(function() { + "use strict"; + + var st = new ShardingTest({shards: 1}); + + var replTest = new ReplSetTest({nodes: 3}); + replTest.startSet(); + var nodes = replTest.nodeList(); + replTest.initiate({ + _id: replTest.name, + members: [ + {_id: 0, host: nodes[0]}, + {_id: 1, host: nodes[1]}, + {_id: 2, host: nodes[2], arbiterOnly: true} + ], + protocolVersion: 1 + }); + + var primaryConn = replTest.getPrimary(); + + var shardIdentityDoc = { + _id: 'shardIdentity', + configsvrConnectionString: st.configRS.getURL(), + shardName: 'newShard', + clusterId: ObjectId() + }; + + assert.writeOK(primaryConn.getDB('admin') + .system.version.insert(shardIdentityDoc, {writeConcern: {w: 'majority'}})); + + replTest.stopMaster(); + replTest.waitForMaster(); + + primaryConn = replTest.getPrimary(); + + var res = primaryConn.getDB('admin').runCommand({shardingState: 1}); + + assert(res.enabled); + assert.eq(shardIdentityDoc.configsvrConnectionString, res.configServer); + assert.eq(shardIdentityDoc.shardName, res.shardName); + assert.eq(shardIdentityDoc.clusterId, res.clusterId); + + replTest.stopSet(); + + st.stop(); + +})(); |