diff options
Diffstat (limited to 'jstests/concurrency/fsm_workloads/yield_sort_merge.js')
-rw-r--r-- | jstests/concurrency/fsm_workloads/yield_sort_merge.js | 75 |
1 files changed, 35 insertions, 40 deletions
diff --git a/jstests/concurrency/fsm_workloads/yield_sort_merge.js b/jstests/concurrency/fsm_workloads/yield_sort_merge.js index c46163df492..d715a813701 100644 --- a/jstests/concurrency/fsm_workloads/yield_sort_merge.js +++ b/jstests/concurrency/fsm_workloads/yield_sort_merge.js @@ -10,49 +10,44 @@ load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload load('jstests/concurrency/fsm_workloads/yield.js'); // for $config -var $config = extendWorkload( - $config, - function($config, $super) { - - /* - * Execute a query that will use the SORT_MERGE stage. - */ - $config.states.query = function sortMerge(db, collName) { - var nMatches = 50; // Don't push this too high, or SORT_MERGE stage won't be selected. - - // Build an array [0, nMatches). - var matches = []; - for (var i = 0; i < nMatches; i++) { - matches.push(i); +var $config = extendWorkload($config, function($config, $super) { + + /* + * Execute a query that will use the SORT_MERGE stage. + */ + $config.states.query = function sortMerge(db, collName) { + var nMatches = 50; // Don't push this too high, or SORT_MERGE stage won't be selected. + + // Build an array [0, nMatches). + var matches = []; + for (var i = 0; i < nMatches; i++) { + matches.push(i); + } + + var cursor = db[collName].find({a: {$in: matches}}).sort({b: -1}).batchSize(this.batchSize); + + var verifier = function sortMergeVerifier(doc, prevDoc) { + var correctOrder = true; + if (prevDoc !== null) { + correctOrder = (doc.b <= prevDoc.b); } - - var cursor = - db[collName].find({a: {$in: matches}}).sort({b: -1}).batchSize(this.batchSize); - - var verifier = function sortMergeVerifier(doc, prevDoc) { - var correctOrder = true; - if (prevDoc !== null) { - correctOrder = (doc.b <= prevDoc.b); - } - return doc.a < nMatches && correctOrder; - }; - - this.advanceCursor(cursor, verifier); + return doc.a < nMatches && correctOrder; }; - $config.data.genUpdateDoc = function genUpdateDoc() { - var newA = Random.randInt(this.nDocs); - var newB = Random.randInt(this.nDocs); - return { - $set: {a: newA, b: newB} - }; - }; + this.advanceCursor(cursor, verifier); + }; - $config.setup = function setup(db, collName, cluster) { - $super.setup.apply(this, arguments); + $config.data.genUpdateDoc = function genUpdateDoc() { + var newA = Random.randInt(this.nDocs); + var newB = Random.randInt(this.nDocs); + return {$set: {a: newA, b: newB}}; + }; - assertAlways.commandWorked(db[collName].ensureIndex({a: 1, b: 1})); - }; + $config.setup = function setup(db, collName, cluster) { + $super.setup.apply(this, arguments); + + assertAlways.commandWorked(db[collName].ensureIndex({a: 1, b: 1})); + }; - return $config; - }); + return $config; +}); |