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.
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
// test $out in a replicated environment
|
|
var name = "pipelineout";
|
|
var replTest = new ReplSetTest( {name: name, nodes: 2} );
|
|
var nodes = replTest.nodeList();
|
|
|
|
replTest.startSet();
|
|
replTest.initiate({"_id" : name,
|
|
"members" : [
|
|
{"_id" : 0, "host" : nodes[0]},
|
|
{"_id" : 1, "host" : nodes[1]}
|
|
]});
|
|
|
|
var primary = replTest.getPrimary().getDB(name);
|
|
var secondary = replTest.liveNodes.slaves[0].getDB(name);
|
|
|
|
// populate the collection
|
|
for (i=0; i<5; i++) {
|
|
primary.in.insert({x:i});
|
|
}
|
|
replTest.awaitReplication();
|
|
|
|
// make sure $out cannot be run on a secondary
|
|
assert.throws(function() {
|
|
secondary.in.aggregate({$out: "out"}).itcount;
|
|
});
|
|
// even if slaveOk
|
|
secondary.setSlaveOk();
|
|
assert.throws(function() {
|
|
secondary.in.aggregate({$out: "out"}).itcount;
|
|
});
|
|
|
|
// run one and check for proper replication
|
|
primary.in.aggregate({$out: "out"}).itcount;
|
|
replTest.awaitReplication();
|
|
assert.eq(primary.out.find().sort( { x : 1 } ).toArray(),
|
|
secondary.out.find().sort( { x : 1 } ).toArray());
|