diff options
Diffstat (limited to 'jstests/concurrency/fsm_workloads/yield_sort_merge.js')
-rw-r--r-- | jstests/concurrency/fsm_workloads/yield_sort_merge.js | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/jstests/concurrency/fsm_workloads/yield_sort_merge.js b/jstests/concurrency/fsm_workloads/yield_sort_merge.js index cea2a974090..ee63b0d8298 100644 --- a/jstests/concurrency/fsm_workloads/yield_sort_merge.js +++ b/jstests/concurrency/fsm_workloads/yield_sort_merge.js @@ -7,50 +7,52 @@ * may match. * Other workloads that need an index { a: 1, b: 1 } can extend this */ -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 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); +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); } - return doc.a < nMatches && correctOrder; - }; - this.advanceCursor(cursor, verifier); - }; + var cursor = + db[collName].find({a: {$in: matches}}).sort({b: -1}).batchSize(this.batchSize); - $config.data.genUpdateDoc = function genUpdateDoc() { - var newA = Random.randInt(this.nDocs); - var newB = Random.randInt(this.nDocs); - return { $set: { a: newA, b: newB } }; - }; + var verifier = function sortMergeVerifier(doc, prevDoc) { + var correctOrder = true; + if (prevDoc !== null) { + correctOrder = (doc.b <= prevDoc.b); + } + return doc.a < nMatches && correctOrder; + }; - $config.setup = function setup(db, collName, cluster) { - $super.setup.apply(this, arguments); + this.advanceCursor(cursor, verifier); + }; - assertAlways.commandWorked(db[collName].ensureIndex({ a: 1, b: 1 })); - }; + $config.data.genUpdateDoc = function genUpdateDoc() { + var newA = Random.randInt(this.nDocs); + var newB = Random.randInt(this.nDocs); + return { + $set: {a: newA, b: newB} + }; + }; - return $config; -}); + $config.setup = function setup(db, collName, cluster) { + $super.setup.apply(this, arguments); + + assertAlways.commandWorked(db[collName].ensureIndex({a: 1, b: 1})); + }; + return $config; + }); |