This is just a cleanup work to hide some of the private state of ReplSetTest so it is easier to encapsulate and add new logic. Also enables strict mode.
51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
var replTest = new ReplSetTest({name: 'sync2', nodes: 5, useBridge: true});
|
|
var nodes = replTest.nodeList();
|
|
var conns = replTest.startSet({oplogSize: "2"});
|
|
replTest.initiate({"_id": "sync2",
|
|
"members": [
|
|
{"_id": 0, host: nodes[0], priority: 2},
|
|
{"_id": 1, host: nodes[1]},
|
|
{"_id": 2, host: nodes[2]},
|
|
{"_id": 3, host: nodes[3]},
|
|
{"_id": 4, host: nodes[4]}]
|
|
});
|
|
|
|
var master = replTest.getPrimary();
|
|
jsTestLog("Replica set test initialized");
|
|
|
|
// initial sync
|
|
master.getDB("foo").bar.insert({x:1});
|
|
replTest.awaitReplication();
|
|
|
|
conns[0].disconnect(conns[4]);
|
|
conns[1].disconnect(conns[2]);
|
|
conns[2].disconnect(conns[3]);
|
|
conns[3].disconnect(conns[1]);
|
|
|
|
// 4 is connected to 2
|
|
conns[4].disconnect(conns[1]);
|
|
conns[4].disconnect(conns[3]);
|
|
|
|
assert.soon(function() {
|
|
master = replTest.getPrimary();
|
|
return master === conns[0];
|
|
}, 60 * 1000, "node 0 did not become primary quickly enough");
|
|
|
|
replTest.awaitReplication();
|
|
jsTestLog("Checking that ops still replicate correctly");
|
|
var option = { writeConcern: { w: 5, wtimeout: 30000 }};
|
|
// In PV0, this write can fail as a result of a bad spanning tree. If 2 was syncing from 4 prior to
|
|
// bridging, it will not change sync sources and receive the write in time. This was not a problem
|
|
// in 3.0 because the old version of mongobridge caused all the nodes to restart during
|
|
// partitioning, forcing the set to rebuild the spanning tree.
|
|
assert.writeOK(master.getDB("foo").bar.insert({ x: 1 }, option));
|
|
|
|
// 4 is connected to 3
|
|
conns[4].disconnect(conns[2]);
|
|
conns[4].reconnect(conns[3]);
|
|
|
|
option = { writeConcern: { w: 5, wtimeout: 30000 }};
|
|
assert.writeOK(master.getDB("foo").bar.insert({ x: 1 }, option));
|
|
|
|
replTest.stopSet();
|