summaryrefslogtreecommitdiff
path: root/jstests/sharding/shard_aware_primary_failover.js
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2016-03-18 11:27:33 -0400
committerRandolph Tan <randolph@10gen.com>2016-03-23 14:39:22 -0400
commit86d463da0b058ad032a699edcd594d76088e12d8 (patch)
treefaefab0a76fde32bb5df841c8c8d724c609e56d1 /jstests/sharding/shard_aware_primary_failover.js
parent1e67bede1a72e5fad8173c1bf76380ccb13b8470 (diff)
downloadmongo-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.js51
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();
+
+})();