summaryrefslogtreecommitdiff
path: root/jstests/libs/mongoebench.js
diff options
context:
space:
mode:
authorMax Hirschhorn <max.hirschhorn@mongodb.com>2018-07-10 01:39:36 -0400
committerMax Hirschhorn <max.hirschhorn@mongodb.com>2018-07-10 01:39:36 -0400
commita750bf210f70dd6e15cd65a15d50aeb8cd75fa3f (patch)
tree63b3d3213ce60f08625981f087392e0fd314e957 /jstests/libs/mongoebench.js
parent4c725a11acf11e41e8200500a03d3cec97a25dbe (diff)
downloadmongo-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.js49
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};
+})();