Files
mongo/jstests/concurrency/fsm_workloads/yield_id_hack.js
2016-05-28 17:55:12 -04:00

34 lines
1017 B
JavaScript

'use strict';
/*
* yield_id_hack.js (extends yield.js)
*
* Intersperse queries which use the ID_HACK stage with updates and deletes of documents they may
* match.
*/
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) {
/*
* Issue a query that will use the ID_HACK stage. This cannot be
* batched, so issue a
* number of them to increase the chances of yielding between
* getting the key and looking
* up its value.
*/
$config.states.query = function idHack(db, collName) {
var nQueries = 100;
for (var i = 0; i < nQueries; i++) {
assertAlways.lte(db[collName].find({_id: i}).itcount(), 1);
var res = db[collName].findOne({_id: i});
if (res !== null) {
assertAlways.eq(i, res._id);
}
}
};
return $config;
});