diff options
author | Max Hirschhorn <max.hirschhorn@mongodb.com> | 2018-07-10 01:39:36 -0400 |
---|---|---|
committer | Max Hirschhorn <max.hirschhorn@mongodb.com> | 2018-07-10 01:39:36 -0400 |
commit | a750bf210f70dd6e15cd65a15d50aeb8cd75fa3f (patch) | |
tree | 63b3d3213ce60f08625981f087392e0fd314e957 /jstests/libs/mongoebench.js | |
parent | 4c725a11acf11e41e8200500a03d3cec97a25dbe (diff) | |
download | mongo-a750bf210f70dd6e15cd65a15d50aeb8cd75fa3f.tar.gz |
SERVER-35537 Create mongoebench for running benchRun against mobile.
It take a JSON config file with a "pre" section for any setup logic and
an "ops" section for the operations that the benchRun workers should
execute repeatedly.
Diffstat (limited to 'jstests/libs/mongoebench.js')
-rw-r--r-- | jstests/libs/mongoebench.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/jstests/libs/mongoebench.js b/jstests/libs/mongoebench.js new file mode 100644 index 00000000000..f6feb4eb9f0 --- /dev/null +++ b/jstests/libs/mongoebench.js @@ -0,0 +1,49 @@ +"use strict"; + +var {runMongoeBench} = (function() { + + /** + * Spawns a mongoebench process with the specified options. + * + * If a plain JavaScript object is specified as the 'config' parameter, then it is serialized to + * a file as a JSON string which is then specified as the config file for the mongoebench + * process. + */ + function runMongoeBench(config, options = {}) { + const args = ["mongoebench"]; + + if (typeof config === "object") { + const filename = MongoRunner.dataPath + "mongoebench_config.json"; + writeFile(filename, tojson(config)); + args.push(filename); + } else if (typeof config === "string") { + args.push(config); + } else { + throw new Error("'config' parameter must be a string or an object"); + } + + if (!options.hasOwnProperty("dbpath")) { + options.dbpath = MongoRunner.dataDir; + } + + for (let key of Object.keys(options)) { + const value = options[key]; + if (value === null || value === undefined) { + throw new Error( + "Value '" + value + "' for '" + key + + "' option is ambiguous; specify {flag: ''} to add --flag command line" + + " options'"); + } + + args.push("--" + key); + if (value !== "") { + args.push(value.toString()); + } + } + + const exitCode = _runMongoProgram(...args); + assert.eq(0, exitCode, "encountered an error in mongoebench"); + } + + return {runMongoeBench}; +})(); |