summaryrefslogtreecommitdiff
path: root/jstests/replsets/pipelineout.js
diff options
context:
space:
mode:
authorMatt Dannenberg <matt.dannenberg@10gen.com>2013-09-26 15:13:26 -0400
committerMatt Dannenberg <matt.dannenberg@10gen.com>2013-10-11 18:38:46 -0400
commit6ba8fc2f0ee77cffd2270556afc5984e44c1b243 (patch)
treeb167614f0539a5fee3398e6bd6b55d7665a183fa /jstests/replsets/pipelineout.js
parent3b2050ef315f39314909509dcfa9676a971ff988 (diff)
downloadmongo-6ba8fc2f0ee77cffd2270556afc5984e44c1b243.tar.gz
SERVER-3253 expand $out testing
Diffstat (limited to 'jstests/replsets/pipelineout.js')
-rw-r--r--jstests/replsets/pipelineout.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/jstests/replsets/pipelineout.js b/jstests/replsets/pipelineout.js
new file mode 100644
index 00000000000..037cf718bd3
--- /dev/null
+++ b/jstests/replsets/pipelineout.js
@@ -0,0 +1,35 @@
+// 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], "priority" : 5},
+ {"_id" : 1, "host" : nodes[1]}
+ ]});
+
+var primary = replTest.getMaster().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().toArray(), secondary.out.find().toArray());