diff options
author | Matt Dannenberg <dannenberg.matt@gmail.com> | 2012-06-08 12:50:06 -0400 |
---|---|---|
committer | Spencer T Brody <spencer@10gen.com> | 2012-06-11 13:10:16 -0400 |
commit | 629e6583fa56b5689fb80192896a050e85f3edba (patch) | |
tree | 300d01dcde12b54e34469744a809a454e2ac12ab /jstests | |
parent | 66eb52c108d9d91fed9e2bfffe52b28e4418aea3 (diff) | |
download | mongo-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.js | 66 | ||||
-rw-r--r-- | jstests/aggregation/testbugs.js | 1 |
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'); |