39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* compact_simultaneous_padding_bytes.js
|
|
*
|
|
* Bulk inserts 1000 documents and builds indexes. Then alternates between compacting the
|
|
* collection and verifying the number of documents and indexes. Operates on a single collection
|
|
* for all threads. Uses paddingBytes as a parameter for compact.
|
|
*/
|
|
|
|
load('jstests/concurrency/fsm_libs/extend_workload.js'); // for extendWorkload
|
|
load('jstests/concurrency/fsm_workloads/compact.js'); // for $config
|
|
load('jstests/concurrency/fsm_workload_helpers/server_types.js'); // for isEphemeral
|
|
|
|
var $config = extendWorkload($config, function($config, $super) {
|
|
$config.states.init = function init(db, collName) {
|
|
this.threadCollName = collName;
|
|
};
|
|
|
|
$config.states.compact = function compact(db, collName) {
|
|
var res = db.runCommand({
|
|
compact: this.threadCollName,
|
|
paddingBytes: 1024 * 5,
|
|
force: true
|
|
});
|
|
if (!isEphemeral(db)) {
|
|
assertAlways.commandWorked(res);
|
|
} else {
|
|
assertAlways.commandFailedWithCode(res, ErrorCodes.CommandNotSupported);
|
|
}
|
|
};
|
|
|
|
// no-op the query state because querying while compacting can result in closed cursors
|
|
// as per SERVER-3964, as well as inaccurate counts, leaving nothing to assert.
|
|
$config.states.query = function query(db, collName) { };
|
|
|
|
return $config;
|
|
});
|