summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorMatt Dannenberg <dannenberg.matt@gmail.com>2012-06-08 12:50:06 -0400
committerSpencer T Brody <spencer@10gen.com>2012-06-11 13:10:16 -0400
commit629e6583fa56b5689fb80192896a050e85f3edba (patch)
tree300d01dcde12b54e34469744a809a454e2ac12ab /jstests
parent66eb52c108d9d91fed9e2bfffe52b28e4418aea3 (diff)
downloadmongo-629e6583fa56b5689fb80192896a050e85f3edba.tar.gz
SERVER-6045 check for valid pipeline elements
added an aggregation/bugs jstest Signed-off-by: Spencer T Brody <spencer@10gen.com>
Diffstat (limited to 'jstests')
-rw-r--r--jstests/aggregation/bugs/server6045.js66
-rw-r--r--jstests/aggregation/testbugs.js1
2 files changed, 67 insertions, 0 deletions
diff --git a/jstests/aggregation/bugs/server6045.js b/jstests/aggregation/bugs/server6045.js
new file mode 100644
index 00000000000..7dcf294fce0
--- /dev/null
+++ b/jstests/aggregation/bugs/server6045.js
@@ -0,0 +1,66 @@
+/* @file : jstests/aggregation/bugs/server6045.js
+ *
+ * SERVER 6045 : aggregate cmd crashes server with empty pipeline argument
+ *
+ * This test validates part of SERVER 6045 ticket. Return errmsg upon blank
+ * document in pipeline. Previously blank documents in pipeline would cause
+ * server to crash
+ */
+
+/*
+ * 1) Grab aggdb
+ * 2) Empty aggdb
+ * 3) Populate aggdb
+ * 4) Run aggregate with an empty document as the pipeline, at the start of the
+ * pipeline, at the end of the pipeline, and in the middle of the pipeline
+ * 5) Assert that all four position return the expected error
+ */
+
+// load the test utilities
+load('jstests/aggregation/extras/utils.js');
+
+// Use aggdb
+db = db.getSiblingDB('aggdb');
+
+// Empty and fill aggdb
+db.agg.drop();
+db.agg.insert({key: "string", value: 17});
+db.agg.insert({key: "yarn", value: 42});
+
+// As pipeline
+var s6045p1 = db.runCommand({aggregate:"aggtype", pipeline: [{}]});
+// Start of pipeline
+var s6045p2 = db.runCommand({aggregate:"aggtype", pipeline: [
+ { $project : {
+ value : 1,
+ } },
+ {}
+ ]});
+// End of pipeline
+var s6045p3 = db.runCommand({aggregate:"aggtype", pipeline: [
+ {},
+ { $project : {
+ value : 1,
+ } }
+ ]});
+// Middle of pipeline
+var s6045p4 = db.runCommand({aggregate:"aggtype", pipeline: [
+ { $project : {
+ value : 1,
+ } },
+ {},
+ { $project : {
+ value : 1,
+ } }
+ ]});
+// Expected result
+var a6045 = {
+ "errmsg" : "Pipeline received empty document as argument",
+ "ok" : 0
+};
+
+// Asserts
+assert(documentEq(s6045p1, a6045), 'server6045 failed' + s6045p1);
+assert(documentEq(s6045p2, a6045), 'server6045 failed' + s6045p2);
+assert(documentEq(s6045p3, a6045), 'server6045 failed' + s6045p3);
+assert(documentEq(s6045p4, a6045), 'server6045 failed' + s6045p4);
diff --git a/jstests/aggregation/testbugs.js b/jstests/aggregation/testbugs.js
index 4a6237615df..03092bdc8cf 100644
--- a/jstests/aggregation/testbugs.js
+++ b/jstests/aggregation/testbugs.js
@@ -14,3 +14,4 @@ load('jstests/aggregation/bugs/server5012.js');
load('jstests/aggregation/bugs/server5209.js');
load('jstests/aggregation/bugs/server5369.js');
load('jstests/aggregation/bugs/server5973.js');
+load('jstests/aggregation/bugs/server6045.js');