Includes workloads for:
explain
compact
reindex
collMod
count
distinct
touch
$where
Added to blacklists in FSM runners
Fixed the way we check for storage engines
Added two options for arbitrary function execution against cluster:
- Specified via ClusterOptions as setupFunctions to be run on the
cluster before workloads are run
- As part of setup and teardown with the cluster provided as a third
argument to these workload functions
76 lines
2.2 KiB
JavaScript
76 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* collmod.js
|
|
*
|
|
* Base workload for collMod command.
|
|
* Generates some random data and inserts it into a collection with a
|
|
* TTL index. Runs a collMod command to change the value of the
|
|
* expireAfterSeconds setting to a random integer.
|
|
*
|
|
* All threads update the same TTL index on the same collection.
|
|
*/
|
|
var $config = (function() {
|
|
|
|
var data = {
|
|
numDocs: 1000,
|
|
maxTTL: 5000 // max time to live
|
|
};
|
|
|
|
var states = (function() {
|
|
|
|
function collMod(db, collName) {
|
|
var newTTL = Random.randInt(this.maxTTL);
|
|
var res = db.runCommand({ collMod: this.threadCollName,
|
|
index: {
|
|
keyPattern: { createdAt: 1 },
|
|
expireAfterSeconds: newTTL
|
|
}
|
|
});
|
|
assertAlways.commandWorked(res);
|
|
// only assert if new expireAfterSeconds differs from old one
|
|
if (res.hasOwnProperty('expireAfterSeconds_new')) {
|
|
assertWhenOwnDB.eq(res.expireAfterSeconds_new, newTTL);
|
|
}
|
|
}
|
|
|
|
return {
|
|
collMod: collMod
|
|
};
|
|
|
|
})();
|
|
|
|
var transitions = {
|
|
collMod: { collMod: 1 }
|
|
};
|
|
|
|
function setup(db, collName, cluster) {
|
|
// other workloads that extend this one might have set 'this.threadCollName'
|
|
this.threadCollName = this.threadCollName || collName;
|
|
var bulk = db[this.threadCollName].initializeUnorderedBulkOp();
|
|
for (var i = 0; i < this.numDocs; ++i) {
|
|
bulk.insert({ createdAt: new Date() });
|
|
}
|
|
|
|
var res = bulk.execute();
|
|
assertAlways.writeOK(res);
|
|
assertAlways.eq(this.numDocs, res.nInserted);
|
|
|
|
// create TTL index
|
|
res = db[this.threadCollName].ensureIndex({ createdAt: 1 },
|
|
{ expireAfterSeconds: 3600 });
|
|
assertAlways.commandWorked(res);
|
|
}
|
|
|
|
return {
|
|
threadCount: 10,
|
|
iterations: 20,
|
|
data: data,
|
|
startState: 'collMod',
|
|
states: states,
|
|
transitions: transitions,
|
|
setup: setup
|
|
};
|
|
|
|
})();
|