summaryrefslogtreecommitdiff
path: root/jstests/concurrency/fsm_workloads/explain_aggregate.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/concurrency/fsm_workloads/explain_aggregate.js')
-rw-r--r--jstests/concurrency/fsm_workloads/explain_aggregate.js70
1 files changed, 32 insertions, 38 deletions
diff --git a/jstests/concurrency/fsm_workloads/explain_aggregate.js b/jstests/concurrency/fsm_workloads/explain_aggregate.js
index e0bbccb7683..883ab11c06e 100644
--- a/jstests/concurrency/fsm_workloads/explain_aggregate.js
+++ b/jstests/concurrency/fsm_workloads/explain_aggregate.js
@@ -9,43 +9,37 @@
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
load('jstests/concurrency/fsm_workloads/explain.js'); // for $config
-var $config = extendWorkload(
- $config,
- function($config, $super) {
-
- function assertCursorStages(num, obj) {
- assertAlways(obj.stages, tojson(obj));
- assertAlways.eq(num, obj.stages.length, tojson(obj.stages));
- assertAlways(obj.stages[0].$cursor, tojson(obj.stages[0]));
- assertAlways(obj.stages[0].$cursor.hasOwnProperty('queryPlanner'),
- tojson(obj.stages[0].$cursor));
+var $config = extendWorkload($config, function($config, $super) {
+
+ function assertCursorStages(num, obj) {
+ assertAlways(obj.stages, tojson(obj));
+ assertAlways.eq(num, obj.stages.length, tojson(obj.stages));
+ assertAlways(obj.stages[0].$cursor, tojson(obj.stages[0]));
+ assertAlways(obj.stages[0].$cursor.hasOwnProperty('queryPlanner'),
+ tojson(obj.stages[0].$cursor));
+ }
+
+ $config.states = Object.extend({
+ explainMatch: function explainMatch(db, collName) {
+ var res = db[collName].explain().aggregate([{$match: {i: this.nInserted / 2}}]);
+ assertAlways.commandWorked(res);
+
+ // stages reported: $cursor
+ assertCursorStages(1, res);
+ },
+ explainMatchProject: function explainMatchProject(db, collName) {
+ var res = db[collName].explain().aggregate(
+ [{$match: {i: this.nInserted / 3}}, {$project: {i: 1}}]);
+ assertAlways.commandWorked(res);
+
+ // stages reported: $cursor, $project
+ assertCursorStages(2, res);
}
+ },
+ $super.states);
- $config.states = Object.extend(
- {
- explainMatch: function explainMatch(db, collName) {
- var res = db[collName].explain().aggregate([{$match: {i: this.nInserted / 2}}]);
- assertAlways.commandWorked(res);
-
- // stages reported: $cursor
- assertCursorStages(1, res);
- },
- explainMatchProject: function explainMatchProject(db, collName) {
- var res =
- db[collName]
- .explain()
- .aggregate([{$match: {i: this.nInserted / 3}}, {$project: {i: 1}}]);
- assertAlways.commandWorked(res);
-
- // stages reported: $cursor, $project
- assertCursorStages(2, res);
- }
- },
- $super.states);
-
- $config.transitions =
- Object.extend({explain: $config.data.assignEqualProbsToTransitions($config.states)},
- $super.transitions);
-
- return $config;
- });
+ $config.transitions = Object.extend(
+ {explain: $config.data.assignEqualProbsToTransitions($config.states)}, $super.transitions);
+
+ return $config;
+});