diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index 86c445d91e1..8b0d34d9065 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -11,7 +11,7 @@ command_type: system # Protect ourself against rogue test case, or curl gone wild, that runs forever # Good rule of thumb: the averageish length a task takes, times 5 # That roughly accounts for variable system performance for various buildvariants -exec_timeout_secs: 2100 +exec_timeout_secs: 7200 # What to do when evergreen hits the timeout (`post:` tasks are run automatically) timeout: @@ -474,7 +474,7 @@ functions: AWS_CREDENTIAL_TYPE: regular working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws auth test with assume role credentials": @@ -489,7 +489,7 @@ functions: AWS_CREDENTIAL_TYPE: assume-role working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws auth test with aws EC2 credentials": @@ -520,7 +520,7 @@ functions: AWS_CREDENTIAL_TYPE: env-creds working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws auth test with aws credentials and session token as environment variables": @@ -535,7 +535,7 @@ functions: AWS_CREDENTIAL_TYPE: session-creds working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws auth test AssumeRoleWithWebIdentity with AWS_ROLE_SESSION_NAME set": @@ -551,7 +551,7 @@ functions: AWS_ROLE_SESSION_NAME: test working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws auth test AssumeRoleWithWebIdentity with AWS_ROLE_SESSION_NAME unset": @@ -566,7 +566,7 @@ functions: AWS_CREDENTIAL_TYPE: web-identity working_dir: "src" binary: bash - args: + args: - .evergreen/run-mongodb-aws-test.sh "run aws ECS auth test": @@ -582,9 +582,9 @@ functions: AWS_CREDENTIAL_TYPE: web-identity working_dir: "src" binary: bash - args: + args: - .evergreen/prepare-mongodb-aws-ecs-auth.sh - + "run custom csfle tests": - command: subprocess.exec type: test @@ -620,7 +620,7 @@ functions: MONGODB_AWS_SDK: 'true' working_dir: "src" binary: bash - args: + args: - .evergreen/run-lambda-aws-tests.sh "upload test results": @@ -708,22 +708,6 @@ functions: args: - ${PROJECT_DIRECTORY}/.evergreen/run-benchmarks.sh - # TODO(NODE-6729): Remove this task when the original tasks are using the new runner - "run new spec driver benchmarks": - - command: subprocess.exec - type: test - params: - working_dir: "src" - env: - PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} - MONGODB_URI: ${MONGODB_URI} - DRIVERS_TOOLS: ${DRIVERS_TOOLS} - MONGODB_CLIENT_OPTIONS: ${MONGODB_CLIENT_OPTIONS} - NEW_BENCH: "true" - binary: bash - args: - - ${PROJECT_DIRECTORY}/.evergreen/run-benchmarks.sh - "run x509 auth tests": - command: subprocess.exec type: test diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 574c3700f60..55ffc80fd07 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1,6 +1,6 @@ stepback: true command_type: system -exec_timeout_secs: 2100 +exec_timeout_secs: 7200 timeout: - command: subprocess.exec params: @@ -633,20 +633,6 @@ functions: binary: bash args: - ${PROJECT_DIRECTORY}/.evergreen/run-benchmarks.sh - run new spec driver benchmarks: - - command: subprocess.exec - type: test - params: - working_dir: src - env: - PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} - MONGODB_URI: ${MONGODB_URI} - DRIVERS_TOOLS: ${DRIVERS_TOOLS} - MONGODB_CLIENT_OPTIONS: ${MONGODB_CLIENT_OPTIONS} - NEW_BENCH: 'true' - binary: bash - args: - - ${PROJECT_DIRECTORY}/.evergreen/run-benchmarks.sh run x509 auth tests: - command: subprocess.exec type: test @@ -2918,7 +2904,7 @@ tasks: tags: - run-spec-benchmark-tests - performance - exec_timeout_secs: 3600 + exec_timeout_secs: 7200 commands: - command: expansions.update type: setup @@ -2934,12 +2920,12 @@ tasks: - func: run spec driver benchmarks - command: perf.send params: - file: src/results.json + file: src/test/benchmarks/driver_bench/results.json - name: run-spec-benchmark-tests-node-server-timeoutMS-120000 tags: - run-spec-benchmark-tests - performance - exec_timeout_secs: 3600 + exec_timeout_secs: 7200 commands: - command: expansions.update type: setup @@ -2955,12 +2941,12 @@ tasks: - func: run spec driver benchmarks - command: perf.send params: - file: src/results.json + file: src/test/benchmarks/driver_bench/results.json - name: run-spec-benchmark-tests-node-server-timeoutMS-0 tags: - run-spec-benchmark-tests - performance - exec_timeout_secs: 3600 + exec_timeout_secs: 7200 commands: - command: expansions.update type: setup @@ -2976,12 +2962,12 @@ tasks: - func: run spec driver benchmarks - command: perf.send params: - file: src/results.json + file: src/test/benchmarks/driver_bench/results.json - name: run-spec-benchmark-tests-node-server-monitorCommands-true tags: - run-spec-benchmark-tests - performance - exec_timeout_secs: 3600 + exec_timeout_secs: 7200 commands: - command: expansions.update type: setup @@ -2997,12 +2983,12 @@ tasks: - func: run spec driver benchmarks - command: perf.send params: - file: src/results.json + file: src/test/benchmarks/driver_bench/results.json - name: run-spec-benchmark-tests-node-server-logging tags: - run-spec-benchmark-tests - performance - exec_timeout_secs: 3600 + exec_timeout_secs: 7200 commands: - command: expansions.update type: setup @@ -3018,25 +3004,7 @@ tasks: - func: run spec driver benchmarks - command: perf.send params: - file: src/results.json - - name: run-spec-benchmark-tests-node-server-new - tags: - - run-spec-benchmark-tests - - performance - exec_timeout_secs: 18000 - commands: - - command: expansions.update - type: setup - params: - updates: - - {key: NODE_LTS_VERSION, value: v22.11.0} - - {key: VERSION, value: v6.0-perf} - - {key: TOPOLOGY, value: server} - - {key: AUTH, value: noauth} - - {key: MONGODB_CLIENT_OPTIONS, value: '{}'} - - func: install dependencies - - func: bootstrap mongo-orchestration - - func: run new spec driver benchmarks + file: src/test/benchmarks/driver_bench/results.json - name: run-unit-tests-node-16 tags: - unit-tests @@ -4856,7 +4824,6 @@ buildvariants: - run-spec-benchmark-tests-node-server-timeoutMS-0 - run-spec-benchmark-tests-node-server-monitorCommands-true - run-spec-benchmark-tests-node-server-logging - - run-spec-benchmark-tests-node-server-new - name: rhel8-custom-dependency-tests display_name: Custom Dependency Version Test run_on: rhel80-large diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 85118f7e9be..c186877222a 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -728,7 +728,7 @@ function addPerformanceTasks() { const makePerfTask = (name, MONGODB_CLIENT_OPTIONS) => ({ name, tags: ['run-spec-benchmark-tests', 'performance'], - exec_timeout_secs: 3600, + exec_timeout_secs: 7200, commands: [ updateExpansions({ NODE_LTS_VERSION: 'v22.11.0', @@ -744,33 +744,11 @@ function addPerformanceTasks() { ].map(func => ({ func })), { command: 'perf.send', - params: { file: 'src/results.json' } + params: { file: 'src/test/benchmarks/driver_bench/results.json' } } ] }); - // TODO(NODE-6729): Remove this task when the original tasks are using the new runner - const makePerfTaskNEW = (name, MONGODB_CLIENT_OPTIONS) => ({ - name, - tags: ['run-spec-benchmark-tests', 'performance'], - exec_timeout_secs: 18000, - commands: [ - updateExpansions({ - NODE_LTS_VERSION: 'v22.11.0', - VERSION: 'v6.0-perf', - TOPOLOGY: 'server', - AUTH: 'noauth', - MONGODB_CLIENT_OPTIONS: JSON.stringify(MONGODB_CLIENT_OPTIONS) - }), - ...[ - 'install dependencies', - 'bootstrap mongo-orchestration', - 'run new spec driver benchmarks' - ].map(func => ({ func })) - // No perf send! just testing - ] - }); - const tasks = [ makePerfTask('run-spec-benchmark-tests-node-server', {}), makePerfTask('run-spec-benchmark-tests-node-server-timeoutMS-120000', { timeoutMS: 120000 }), @@ -781,8 +759,7 @@ function addPerformanceTasks() { makePerfTask('run-spec-benchmark-tests-node-server-logging', { mongodbLogPath: 'stderr', mongodbLogComponentSeverities: { default: 'trace' } - }), - makePerfTaskNEW('run-spec-benchmark-tests-node-server-new', {}) + }) ]; TASKS.push(...tasks); diff --git a/.evergreen/run-benchmarks.sh b/.evergreen/run-benchmarks.sh index 9593c0db41c..605148710ba 100644 --- a/.evergreen/run-benchmarks.sh +++ b/.evergreen/run-benchmarks.sh @@ -11,13 +11,6 @@ export MONGODB_CLIENT_OPTIONS=$MONGODB_CLIENT_OPTIONS npm run build:ts -if [[ "${NEW_BENCH:-}" == "true" ]]; then - pushd test/benchmarks/driver_bench - npm start - popd - exit 0 -fi - # If MONGODB_CLIENT_OPTIONS contains mongodbLogComponentSeverities redirect stderr to a file if [[ $MONGODB_CLIENT_OPTIONS == *"mongodbLogComponentSeverities"* ]]; then npm run check:bench 2> bench.log diff --git a/package.json b/package.json index fe5c2394d31..1697fd8afa0 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "build:docs": "./etc/docs/build.ts", "build:typedoc": "typedoc", "build:nightly": "node ./.github/scripts/nightly.mjs", - "check:bench": "node test/benchmarks/driverBench", + "check:bench": "npm --prefix test/benchmarks/driver_bench start", "check:coverage": "nyc npm run test:all", "check:integration-coverage": "nyc npm run check:test", "check:lambda": "mocha --config test/mocha_lambda.json test/integration/node-specific/examples/handler.test.js", diff --git a/test/benchmarks/driverBench/common.js b/test/benchmarks/driverBench/common.js deleted file mode 100644 index 8c2b03ea191..00000000000 --- a/test/benchmarks/driverBench/common.js +++ /dev/null @@ -1,204 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const { Readable } = require('stream'); -const { pipeline } = require('stream/promises'); -const child_process = require('child_process'); - -/** - * The path to the MongoDB Node.js driver. - * This MUST be set to the directory the driver is installed in - * NOT the file "lib/index.js" that is the driver's export. - */ -const MONGODB_DRIVER_PATH = (() => { - let driverPath = process.env.MONGODB_DRIVER_PATH; - if (!driverPath?.length) { - driverPath = path.resolve(__dirname, '../../..'); - } - return driverPath; -})(); - -const { MongoClient, GridFSBucket } = require(MONGODB_DRIVER_PATH); - -/** Grab the version from the package.json */ -const { version: MONGODB_DRIVER_VERSION } = require(path.join(MONGODB_DRIVER_PATH, 'package.json')); - -/** - * Use git to optionally determine the git revision, - * but the benchmarks could be run against an npm installed version so this should be allowed to fail - */ -const MONGODB_DRIVER_REVISION = (() => { - try { - return child_process - .execSync('git rev-parse --short HEAD', { - cwd: MONGODB_DRIVER_PATH, - encoding: 'utf8' - }) - .trim(); - } catch { - return 'unknown revision'; - } -})(); - -/** - * Find the BSON dependency inside the driver PATH given and grab the version from the package.json. - */ -const MONGODB_BSON_PATH = path.join(MONGODB_DRIVER_PATH, 'node_modules', 'bson'); -const { version: MONGODB_BSON_VERSION } = require(path.join(MONGODB_BSON_PATH, 'package.json')); - -/** - * If you need to test BSON changes, you should clone, checkout and build BSON. - * run: `npm link` with no arguments to register the link. - * Then in the driver you are testing run `npm link bson` to use your local build. - * - * This will symlink the BSON into the driver's node_modules directory. So here - * we can find the revision of the BSON we are testing against if .git exists. - */ -const MONGODB_BSON_REVISION = (() => { - if (!fs.existsSync(path.join(MONGODB_BSON_PATH, '.git'))) { - return 'installed from npm'; - } - try { - return child_process - .execSync('git rev-parse --short HEAD', { - cwd: path.join(MONGODB_BSON_PATH), - encoding: 'utf8' - }) - .trim(); - } catch { - return 'unknown revision'; - } -})(); - -const DB_NAME = 'perftest'; -const COLLECTION_NAME = 'corpus'; - -const SPEC_DIRECTORY = path.resolve(__dirname, 'spec'); - -function loadSpecFile(filePath, encoding) { - const fp = [SPEC_DIRECTORY].concat(filePath); - return fs.readFileSync(path.join.apply(path, fp), encoding); -} - -function loadSpecString(filePath) { - return loadSpecFile(filePath, 'utf8'); -} - -const MONGODB_CLIENT_OPTIONS = (() => { - const optionsString = process.env.MONGODB_CLIENT_OPTIONS; - let options = undefined; - if (optionsString?.length) { - options = JSON.parse(optionsString); - } - return { ...options }; -})(); - -const MONGODB_URI = (() => { - if (process.env.MONGODB_URI?.length) return process.env.MONGODB_URI; - return 'mongodb://127.0.0.1:27017'; -})(); - -function makeClient() { - this.client = new MongoClient(MONGODB_URI, MONGODB_CLIENT_OPTIONS); -} - -function connectClient() { - return this.client.connect(); -} - -function disconnectClient() { - this.client.close(); -} - -function initDb() { - this.db = this.client.db(DB_NAME); -} - -function dropDb() { - return this.db.dropDatabase(); -} - -function createCollection() { - return this.db.createCollection(COLLECTION_NAME); -} - -function initCollection() { - this.collection = this.db.collection(COLLECTION_NAME); -} - -function dropCollection() { - return this.collection.drop().catch(e => { - if (e.code !== 26 /* NamespaceNotFound */) { - throw e; - } - }); -} - -function initBucket() { - this.bucket = new GridFSBucket(this.db); -} - -function dropBucket() { - return this.bucket && this.bucket.drop(); -} - -function makeLoadJSON(name) { - return function () { - this.doc = JSON.parse(loadSpecString(['single_and_multi_document', name])); - }; -} - -function makeLoadTweets(makeId) { - return function () { - const doc = this.doc; - const tweets = []; - for (let _id = 1; _id <= 10000; _id += 1) { - tweets.push(Object.assign({}, doc, makeId ? { _id } : {})); - } - - return this.collection.insertMany(tweets); - }; -} - -function makeLoadInsertDocs(numberOfOperations) { - return function () { - this.docs = []; - for (let i = 0; i < numberOfOperations; i += 1) { - this.docs.push(Object.assign({}, this.doc)); - } - }; -} - -async function writeSingleByteFileToBucket() { - const stream = this.bucket.openUploadStream('setup-file.txt'); - const oneByteFile = Readable.from('a'); - return pipeline(oneByteFile, stream); -} - -module.exports = { - MONGODB_URI, - MONGODB_CLIENT_OPTIONS, - MONGODB_DRIVER_PATH, - MONGODB_DRIVER_VERSION, - MONGODB_DRIVER_REVISION, - MONGODB_BSON_PATH, - MONGODB_BSON_VERSION, - MONGODB_BSON_REVISION, - makeClient, - connectClient, - disconnectClient, - initDb, - dropDb, - createCollection, - initCollection, - dropCollection, - makeLoadJSON, - loadSpecFile, - loadSpecString, - initBucket, - dropBucket, - makeLoadTweets, - makeLoadInsertDocs, - writeSingleByteFileToBucket -}; diff --git a/test/benchmarks/driverBench/index.js b/test/benchmarks/driverBench/index.js deleted file mode 100644 index 3f83779f9d3..00000000000 --- a/test/benchmarks/driverBench/index.js +++ /dev/null @@ -1,126 +0,0 @@ -'use strict'; - -const MongoBench = require('../mongoBench'); -const os = require('node:os'); -const util = require('node:util'); -const process = require('node:process'); - -const Runner = MongoBench.Runner; - -let bsonType = 'js-bson'; -// TODO(NODE-4606): test against different driver configurations in CI - -const { writeFile } = require('fs/promises'); -const { makeParallelBenchmarks, makeSingleBench, makeMultiBench } = require('../mongoBench/suites'); -const { - MONGODB_CLIENT_OPTIONS, - MONGODB_DRIVER_PATH, - MONGODB_DRIVER_VERSION, - MONGODB_DRIVER_REVISION, - MONGODB_BSON_PATH, - MONGODB_BSON_VERSION, - MONGODB_BSON_REVISION -} = require('./common'); - -const hw = os.cpus(); -const ram = os.totalmem() / 1024 ** 3; -const platform = { name: hw[0].model, cores: hw.length, ram: `${ram}GB` }; - -const systemInfo = () => - [ - `\n- cpu: ${platform.name}`, - `- cores: ${platform.cores}`, - `- arch: ${os.arch()}`, - `- os: ${process.platform} (${os.release()})`, - `- ram: ${platform.ram}`, - `- node: ${process.version}`, - `- driver: ${MONGODB_DRIVER_VERSION} (${MONGODB_DRIVER_REVISION}): ${MONGODB_DRIVER_PATH}`, - ` - options ${util.inspect(MONGODB_CLIENT_OPTIONS)}`, - `- bson: ${MONGODB_BSON_VERSION} (${MONGODB_BSON_REVISION}): (${MONGODB_BSON_PATH})\n` - ].join('\n'); -console.log(systemInfo()); - -function average(arr) { - return arr.reduce((x, y) => x + y, 0) / arr.length; -} - -const benchmarkRunner = new Runner() - .suite('singleBench', suite => makeSingleBench(suite)) - .suite('multiBench', suite => makeMultiBench(suite)) - .suite('parallel', suite => makeParallelBenchmarks(suite)); - -benchmarkRunner - .run() - .then(microBench => { - const singleBench = average([ - microBench.singleBench.findOne, - microBench.singleBench.smallDocInsertOne, - microBench.singleBench.largeDocInsertOne - ]); - const multiBench = average(Object.values(microBench.multiBench)); - - const parallelBench = average([ - microBench.parallel.ldjsonMultiFileUpload, - microBench.parallel.ldjsonMultiFileExport, - microBench.parallel.gridfsMultiFileUpload, - microBench.parallel.gridfsMultiFileDownload - ]); - - const readBench = average([ - microBench.singleBench.findOne, - microBench.multiBench.findManyAndEmptyCursor, - microBench.multiBench.gridFsDownload, - microBench.parallel.gridfsMultiFileDownload, - microBench.parallel.ldjsonMultiFileExport - ]); - const writeBench = average([ - microBench.singleBench.smallDocInsertOne, - microBench.singleBench.largeDocInsertOne, - microBench.multiBench.smallDocBulkInsert, - microBench.multiBench.largeDocBulkInsert, - microBench.multiBench.gridFsUpload, - microBench.parallel.ldjsonMultiFileUpload, - microBench.parallel.gridfsMultiFileUpload - ]); - - const driverBench = average([readBench, writeBench]); - - const benchmarkResults = { - singleBench, - multiBench, - parallelBench, - readBench, - writeBench, - driverBench, - ...microBench.parallel, - ...microBench.bsonBench, - ...microBench.singleBench, - ...microBench.multiBench - }; - - return Object.entries(benchmarkResults).map(([benchmarkName, result]) => { - return { - info: { - test_name: benchmarkName, - tags: [bsonType], - // Args can only be a map of string -> int32. So if its a number leave it be, - // if it is anything else test for truthiness and set to 1 or 0. - args: Object.fromEntries( - Object.entries(MONGODB_CLIENT_OPTIONS).map(([key, value]) => [ - key, - typeof value === 'number' ? value : value ? 1 : 0 - ]) - ) - }, - metrics: [{ name: 'megabytes_per_second', value: result }] - }; - }); - }) - .then(data => { - const results = JSON.stringify(data, undefined, 2); - return writeFile('results.json', results); - }) - .catch(err => { - console.error('failure: ', err.name, err.message); - process.exit(1); - }); diff --git a/test/benchmarks/driver_bench/package.json b/test/benchmarks/driver_bench/package.json index b04ad793245..d8b78648829 100644 --- a/test/benchmarks/driver_bench/package.json +++ b/test/benchmarks/driver_bench/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "prestart": "rm -rf lib && tsc", - "start": "node lib/main.mjs" + "start": "node lib/main.mjs", + "clean": "rm -f results*.json" } } diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file00.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file00.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file00.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file00.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file01.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file01.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file01.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file01.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file02.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file02.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file02.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file02.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file03.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file03.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file03.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file03.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file04.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file04.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file04.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file04.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file05.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file05.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file05.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file05.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file06.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file06.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file06.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file06.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file07.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file07.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file07.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file07.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file08.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file08.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file08.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file08.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file09.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file09.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file09.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file09.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file10.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file10.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file10.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file10.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file11.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file11.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file11.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file11.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file12.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file12.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file12.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file12.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file13.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file13.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file13.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file13.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file14.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file14.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file14.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file14.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file15.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file15.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file15.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file15.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file16.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file16.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file16.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file16.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file17.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file17.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file17.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file17.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file18.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file18.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file18.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file18.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file19.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file19.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file19.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file19.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file20.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file20.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file20.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file20.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file21.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file21.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file21.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file21.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file22.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file22.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file22.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file22.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file23.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file23.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file23.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file23.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file24.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file24.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file24.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file24.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file25.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file25.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file25.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file25.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file26.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file26.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file26.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file26.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file27.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file27.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file27.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file27.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file28.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file28.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file28.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file28.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file29.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file29.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file29.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file29.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file30.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file30.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file30.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file30.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file31.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file31.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file31.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file31.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file32.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file32.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file32.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file32.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file33.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file33.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file33.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file33.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file34.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file34.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file34.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file34.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file35.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file35.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file35.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file35.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file36.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file36.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file36.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file36.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file37.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file37.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file37.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file37.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file38.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file38.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file38.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file38.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file39.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file39.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file39.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file39.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file40.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file40.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file40.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file40.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file41.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file41.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file41.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file41.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file42.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file42.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file42.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file42.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file43.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file43.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file43.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file43.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file44.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file44.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file44.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file44.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file45.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file45.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file45.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file45.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file46.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file46.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file46.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file46.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file47.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file47.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file47.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file47.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file48.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file48.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file48.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file48.txt diff --git a/test/benchmarks/driverBench/spec/parallel/gridfs_multi/file49.txt b/test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file49.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/gridfs_multi/file49.txt rename to test/benchmarks/driver_bench/spec/parallel/gridfs_multi/file49.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson000.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson000.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson000.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson000.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson001.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson001.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson001.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson001.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson002.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson002.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson002.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson002.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson003.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson003.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson003.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson003.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson004.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson004.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson004.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson004.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson005.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson005.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson005.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson005.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson006.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson006.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson006.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson006.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson007.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson007.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson007.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson007.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson008.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson008.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson008.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson008.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson009.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson009.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson009.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson009.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson010.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson010.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson010.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson010.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson011.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson011.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson011.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson011.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson012.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson012.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson012.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson012.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson013.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson013.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson013.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson013.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson014.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson014.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson014.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson014.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson015.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson015.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson015.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson015.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson016.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson016.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson016.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson016.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson017.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson017.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson017.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson017.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson018.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson018.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson018.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson018.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson019.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson019.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson019.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson019.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson020.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson020.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson020.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson020.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson021.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson021.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson021.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson021.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson022.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson022.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson022.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson022.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson023.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson023.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson023.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson023.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson024.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson024.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson024.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson024.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson025.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson025.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson025.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson025.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson026.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson026.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson026.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson026.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson027.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson027.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson027.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson027.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson028.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson028.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson028.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson028.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson029.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson029.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson029.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson029.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson030.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson030.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson030.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson030.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson031.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson031.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson031.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson031.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson032.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson032.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson032.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson032.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson033.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson033.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson033.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson033.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson034.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson034.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson034.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson034.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson035.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson035.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson035.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson035.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson036.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson036.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson036.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson036.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson037.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson037.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson037.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson037.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson038.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson038.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson038.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson038.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson039.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson039.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson039.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson039.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson040.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson040.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson040.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson040.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson041.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson041.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson041.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson041.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson042.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson042.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson042.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson042.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson043.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson043.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson043.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson043.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson044.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson044.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson044.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson044.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson045.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson045.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson045.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson045.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson046.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson046.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson046.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson046.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson047.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson047.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson047.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson047.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson048.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson048.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson048.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson048.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson049.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson049.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson049.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson049.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson050.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson050.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson050.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson050.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson051.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson051.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson051.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson051.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson052.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson052.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson052.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson052.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson053.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson053.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson053.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson053.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson054.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson054.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson054.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson054.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson055.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson055.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson055.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson055.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson056.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson056.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson056.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson056.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson057.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson057.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson057.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson057.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson058.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson058.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson058.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson058.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson059.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson059.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson059.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson059.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson060.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson060.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson060.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson060.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson061.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson061.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson061.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson061.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson062.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson062.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson062.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson062.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson063.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson063.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson063.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson063.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson064.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson064.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson064.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson064.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson065.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson065.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson065.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson065.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson066.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson066.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson066.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson066.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson067.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson067.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson067.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson067.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson068.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson068.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson068.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson068.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson069.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson069.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson069.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson069.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson070.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson070.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson070.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson070.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson071.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson071.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson071.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson071.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson072.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson072.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson072.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson072.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson073.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson073.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson073.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson073.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson074.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson074.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson074.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson074.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson075.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson075.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson075.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson075.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson076.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson076.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson076.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson076.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson077.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson077.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson077.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson077.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson078.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson078.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson078.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson078.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson079.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson079.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson079.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson079.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson080.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson080.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson080.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson080.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson081.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson081.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson081.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson081.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson082.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson082.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson082.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson082.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson083.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson083.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson083.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson083.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson084.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson084.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson084.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson084.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson085.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson085.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson085.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson085.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson086.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson086.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson086.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson086.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson087.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson087.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson087.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson087.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson088.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson088.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson088.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson088.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson089.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson089.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson089.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson089.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson090.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson090.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson090.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson090.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson091.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson091.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson091.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson091.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson092.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson092.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson092.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson092.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson093.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson093.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson093.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson093.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson094.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson094.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson094.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson094.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson095.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson095.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson095.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson095.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson096.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson096.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson096.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson096.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson097.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson097.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson097.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson097.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson098.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson098.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson098.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson098.txt diff --git a/test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson099.txt b/test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson099.txt similarity index 100% rename from test/benchmarks/driverBench/spec/parallel/ldjson_multi/ldjson099.txt rename to test/benchmarks/driver_bench/spec/parallel/ldjson_multi/ldjson099.txt diff --git a/test/benchmarks/driverBench/spec/single_and_multi_document/gridfs_large.bin b/test/benchmarks/driver_bench/spec/single_and_multi_document/gridfs_large.bin similarity index 100% rename from test/benchmarks/driverBench/spec/single_and_multi_document/gridfs_large.bin rename to test/benchmarks/driver_bench/spec/single_and_multi_document/gridfs_large.bin diff --git a/test/benchmarks/driverBench/spec/single_and_multi_document/large_doc.json b/test/benchmarks/driver_bench/spec/single_and_multi_document/large_doc.json similarity index 100% rename from test/benchmarks/driverBench/spec/single_and_multi_document/large_doc.json rename to test/benchmarks/driver_bench/spec/single_and_multi_document/large_doc.json diff --git a/test/benchmarks/driverBench/spec/single_and_multi_document/small_doc.json b/test/benchmarks/driver_bench/spec/single_and_multi_document/small_doc.json similarity index 100% rename from test/benchmarks/driverBench/spec/single_and_multi_document/small_doc.json rename to test/benchmarks/driver_bench/spec/single_and_multi_document/small_doc.json diff --git a/test/benchmarks/driverBench/spec/single_and_multi_document/tweet.json b/test/benchmarks/driver_bench/spec/single_and_multi_document/tweet.json similarity index 100% rename from test/benchmarks/driverBench/spec/single_and_multi_document/tweet.json rename to test/benchmarks/driver_bench/spec/single_and_multi_document/tweet.json diff --git a/test/benchmarks/driver_bench/src/driver.mts b/test/benchmarks/driver_bench/src/driver.mts index 620bc850f09..ab172fe7bd6 100644 --- a/test/benchmarks/driver_bench/src/driver.mts +++ b/test/benchmarks/driver_bench/src/driver.mts @@ -113,8 +113,7 @@ export const EJSON = BSON.EJSON; const DB_NAME = 'perftest'; const COLLECTION_NAME = 'corpus'; -// TODO(NODE-6729): move spec into this folder: export const SPEC_DIRECTORY = path.resolve(__dirname, '..', 'spec'); -export const SPEC_DIRECTORY = path.resolve(__dirname, '..', '..', 'driverBench', 'spec'); +export const SPEC_DIRECTORY = path.resolve(__dirname, '..', 'spec'); export const PARALLEL_DIRECTORY = path.resolve(SPEC_DIRECTORY, 'parallel'); export const TEMP_DIRECTORY = path.resolve(SPEC_DIRECTORY, 'tmp'); diff --git a/test/benchmarks/driver_bench/src/runner.mts b/test/benchmarks/driver_bench/src/runner.mts index 287838e407b..f360b2ef0ac 100644 --- a/test/benchmarks/driver_bench/src/runner.mts +++ b/test/benchmarks/driver_bench/src/runner.mts @@ -39,16 +39,6 @@ const MAX_COUNT = 100; await benchmark.before?.(); -// for 1/10th the max iterations -const warmupIterations = (MAX_COUNT / 10) | 0; - -// Warm Up. -for (let i = 0; i < warmupIterations; i++) { - await benchmark.beforeEach?.(); - await timeTask(); - await benchmark.afterEach?.(); -} - // Allocate an obscene amount of space const data = new Float64Array(10_000_000); @@ -69,7 +59,7 @@ do { if (totalDuration < ONE_MIN) continue; // 100 runs OR five minutes - if (count >= 100 || totalDuration >= FIVE_MIN) break; + if (count >= MAX_COUNT || totalDuration >= FIVE_MIN) break; // count exceeds data space, we never intend to have more than a million data points let alone 10M if (count === data.length) break; diff --git a/test/benchmarks/mongoBench/benchmark.js b/test/benchmarks/mongoBench/benchmark.js deleted file mode 100644 index c2a3d5324d8..00000000000 --- a/test/benchmarks/mongoBench/benchmark.js +++ /dev/null @@ -1,205 +0,0 @@ -'use strict'; - -class Benchmark { - constructor() { - // The Task itself - this._task = null; - - // Lifecycle Hooks - this._setup = []; - this._beforeTask = []; - this._afterTask = []; - this._teardown = []; - - // Meta information - this._taskSize = null; - this._description = null; - this._taskType = 'async'; - } - - /** - * Set the task to benchmark - * - * @param {Function} fn The task to benchmark - * @returns {this} this - */ - task(fn) { - if (typeof fn !== 'function') { - throw new TypeError(`Argument fn (${fn}) must be a function`); - } - - if (this._task !== null) { - throw new Error('You cannot have more than one task per benchmark'); - } - - this._task = fn; - - return this; - } - - /** - * Add a setup lifecycle hook - * - * @param {Function|Function[]} fn The lifecycle hook - * @returns {this} this - */ - setup(fn) { - return this._pushLifecycleHook(this._setup, fn); - } - - /** - * Add a beforeTask lifecycle hook - * - * @param {Function|Function[]} fn The lifecycle hook - * @returns {this} this - */ - beforeTask(fn) { - return this._pushLifecycleHook(this._beforeTask, fn); - } - - /** - * Add an afterTask lifecycle hook - * - * @param {Function|Function[]} fn The lifecycle hook - * @returns {this} this - */ - afterTask(fn) { - return this._pushLifecycleHook(this._afterTask, fn); - } - - /** - * Add a teardown lifecycle hook - * - * @param {Function|Function[]} fn The lifecycle hook - * @returns {this} this - */ - teardown(fn) { - return this._pushLifecycleHook(this._teardown, fn); - } - - /** - * Set the Task Size - * - * @param {number} size The Task Size in MB - * @returns {this} this - */ - taskSize(size) { - if (!(Number.isFinite(size) && size > 0)) { - throw new TypeError(`size (${size}) must be a finite number greater than zero`); - } - - if (this._taskSize != null) { - throw new Error(`taskSize has already been set`); - } - - this._taskSize = size; - - return this; - } - - /** - * Sets the task type - either a synchronous or asynchronous task. The default is async. - * - * @param {'async' | 'sync'} type - the type of task - */ - taskType(type) { - if (['async', 'sync'].includes(type)) { - this._taskType = type; - } else { - throw new Error( - `Invalid value for benchmark field _taskType: expected either 'async' or 'sync', but received ${type}` - ); - } - - return this; - } - - /** - * Set the Description - * - * @param {string} description The description of the benchmark - * @returns {this} this - */ - description(description) { - if (typeof description !== 'string' || !description) { - throw new TypeError(`description (${description}) must be a non-zero length string`); - } - - if (this._description != null) { - throw new Error(`description has already been set`); - } - - this._description = description; - - return this; - } - - /** - * Validates that the benchmark has all the fields necessary - * - * @throws Error - */ - validate() { - for (const key of ['_task', '_taskSize', '_taskType']) { - if (!this[key]) { - throw new Error(`Benchmark is missing required field ${key}`); - } - } - } - - toObj() { - return { - // Required Fields - task: this._task, - taskSize: this._taskSize, - - // Optional Fields - description: this._description || `Performance test`, - setup: this._convertArrayToAsyncPipeFn(this._setup), - beforeTask: this._convertArrayToAsyncPipeFn(this._beforeTask), - afterTask: this._convertArrayToAsyncPipeFn(this._afterTask), - teardown: this._convertArrayToAsyncPipeFn(this._teardown) - }; - } - - /** - * @param {any} hookList - * @param {any} fn - */ - _pushLifecycleHook(hookList, fn) { - if (Array.isArray(fn)) { - fn.forEach(f => this._pushLifecycleHook(hookList, f)); - return this; - } - - if (typeof fn !== 'function') { - throw new TypeError(`Parameter ${fn} must be a function`); - } - - hookList.push(fn); - return this; - } - - /** - * Converts an array of task functions into a single async function, that awaits each - * task function and resolves once all are completed. - * - * The returned function will reject if any of the task functions fails. - * - * @param {any} arr - * @return {() => Promise} - */ - _convertArrayToAsyncPipeFn(arr) { - const array = arr.length ? arr : []; - return async function () { - // copy the array to guard against modification - const chain = [].concat(array); - const context = this; - for (const fn of chain) { - await fn.call(context); - } - }; - } -} - -module.exports = Benchmark; diff --git a/test/benchmarks/mongoBench/constants.js b/test/benchmarks/mongoBench/constants.js deleted file mode 100644 index 4065d97719a..00000000000 --- a/test/benchmarks/mongoBench/constants.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -const MINUTE_TO_MS = 60 * 1e3; -const FIVE_MINUTES_TO_MS = MINUTE_TO_MS * 5; - -const DEFAULT_MIN_EXECUTION_TIME = - Number.parseInt(process.env.DRIVER_BENCH_MIN_EX_TIME, 10) || MINUTE_TO_MS; - -const DEFAULT_MAX_EXECUTION_TIME = - Number.parseInt(process.env.DRIVER_BENCH_MAX_EX_TIME, 10) || FIVE_MINUTES_TO_MS; - -const DEFAULT_MIN_EXECUTION_COUNT = - Number.parseInt(process.env.DRIVER_BENCH_MIN_EX_COUNT, 10) || 100; - -const DEFAULT_MAX_EXECUTION_COUNT = - Number.parseInt(process.env.DRIVER_BENCH_MAX_EX_COUNT, 10) || 10000000; - -module.exports = { - DEFAULT_MIN_EXECUTION_COUNT, - DEFAULT_MIN_EXECUTION_TIME, - DEFAULT_MAX_EXECUTION_TIME, - DEFAULT_MAX_EXECUTION_COUNT -}; diff --git a/test/benchmarks/mongoBench/index.js b/test/benchmarks/mongoBench/index.js deleted file mode 100644 index da41e251c95..00000000000 --- a/test/benchmarks/mongoBench/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = { - Runner: require('./runner') -}; diff --git a/test/benchmarks/mongoBench/runner.js b/test/benchmarks/mongoBench/runner.js deleted file mode 100644 index b3e3c5cd6aa..00000000000 --- a/test/benchmarks/mongoBench/runner.js +++ /dev/null @@ -1,200 +0,0 @@ -'use strict'; - -const CONSTANTS = require('./constants'); -const { performance } = require('perf_hooks'); -const Suite = require('./suite'); - -const PERCENTILES = [10, 25, 50, 75, 95, 98, 99]; -function percentileIndex(percentile, total) { - return Math.max(Math.floor((total * percentile) / 100 - 1), 0); -} - -function timeSyncTask(task, ctx) { - const start = performance.now(); - task.call(ctx); - const end = performance.now(); - - return (end - start) / 1000; -} - -async function timeAsyncTask(task, ctx) { - const start = performance.now(); - await task.call(ctx); - const end = performance.now(); - - return (end - start) / 1000; -} - -/** - * Returns the execution time for the benchmarks in mb/second - * - * This function internally calculates the 50th percentile execution time and uses - * that as the median. - * - * @param {Benchmark} benchmark - * @param {{ rawData: number[], count: number}} data - * @returns number - */ -function calculateMicroBench(benchmark, data) { - const rawData = data.rawData; - const count = data.count; - - const sortedData = [].concat(rawData).sort((a, b) => a - b); - - const percentiles = PERCENTILES.reduce((acc, pct) => { - acc[pct] = sortedData[percentileIndex(pct, count)]; - return acc; - }, {}); - - const medianExecution = percentiles[50]; - - return benchmark.taskSize / medianExecution; -} - -class Runner { - constructor(options) { - options = options || {}; - this.minExecutionTime = options.minExecutionTime || CONSTANTS.DEFAULT_MIN_EXECUTION_TIME; - this.maxExecutionTime = options.maxExecutionTime || CONSTANTS.DEFAULT_MAX_EXECUTION_TIME; - this.minExecutionCount = options.minExecutionCount || CONSTANTS.DEFAULT_MIN_EXECUTION_COUNT; - this.maxExecutionCount = options.maxExecutionCount || CONSTANTS.DEFAULT_MAX_EXECUTION_COUNT; - this.reporter = - options.reporter || - function () { - console.log.apply(console, arguments); - }; - this.children = {}; - } - - /** - * Adds a new test suite to the runner - * @param {string} name - the name of the test suite - * @param {(suite: Suite) => void} fn a function that registers a set of benchmarks onto the - * parameter `suite` - * @returns {this} this - */ - suite(name, fn) { - if (typeof name !== 'string' || !name) { - throw new TypeError(`Argument "name" (${name}) must be a non-zero length string`); - } - - if (typeof fn !== 'function') { - throw new TypeError(`Argument "fn" must be a function`); - } - - if (name in this.children) { - throw new Error(`Name "${name}" already taken`); - } - - const _suite = new Suite(); - const suite = fn(_suite) || _suite; - - if (!(suite instanceof Suite)) { - throw new TypeError(`returned object is not a suite`); - } - - this.children[name] = suite; - - return this; - } - - async run() { - this.reporter(`Running Benchmarks`); - const result = {}; - - for (const [suiteName, suite] of Object.entries(this.children)) { - this.reporter(` Executing suite "${suiteName}"`); - result[suiteName] = await this._runSuite(suite); - } - - return result; - } - - /** - * - * @param {Suite} suite - * - * @returns {{string: number | undefined}} - */ - async _runSuite(suite) { - const benchmarks = Object.entries(suite.getBenchmarks()).map(([name, benchmark]) => [ - name, - benchmark.toObj() - ]); - - const result = {}; - - for (const [name, benchmark] of benchmarks) { - this.reporter(` Executing Benchmark "${name}"`); - result[name] = await this._runBenchmark(benchmark); - this.reporter(` Executed Benchmark "${name}" =`, result[name]); - } - - return result; - } - - /** - * Runs a single benchmark. - * - * @param {Benchmark} benchmark - * @returns {Promise} A promise containing the mb/s for the benchmark. This function never rejects, - * it instead returns Promise if there is an error. - */ - async _runBenchmark(benchmark) { - const ctx = {}; - try { - await benchmark.setup.call(ctx); - const result = await this._loopTask(benchmark, ctx); - await benchmark.teardown.call(ctx); - return calculateMicroBench(benchmark, result); - } catch (error) { - return this._errorHandler(error); - } - } - - /** - * - * @param {Benchmark} benchmark - * @param {any} ctx - * @returns {{ rawData: number[], count: number}} - */ - async _loopTask(benchmark, ctx) { - const start = performance.now(); - const rawData = []; - const minExecutionCount = this.minExecutionCount; - const minExecutionTime = this.minExecutionTime; - const maxExecutionTime = this.maxExecutionTime; - const maxExecutionAttempts = this.maxExecutionCount; - let time = performance.now() - start; - let count = 1; - - const taskTimer = benchmark._taskType === 'sync' ? timeSyncTask : timeAsyncTask; - - while ( - time < maxExecutionTime && - (time < minExecutionTime || count < minExecutionCount) && - count <= maxExecutionAttempts - ) { - await benchmark.beforeTask.call(ctx); - const executionTime = await taskTimer(benchmark.task, ctx); - rawData.push(executionTime); - count++; - time = performance.now(); - } - - return { - rawData, - count - }; - } - - _errorHandler(error) { - this.reporter(`Error: ${error.name} - ${error.message} - ${error.stack}`); - for (let cause = error.cause; cause != null; cause = cause.cause) { - this.reporter(`Caused by: ${cause.name} - ${cause.message} - ${cause.stack}`); - } - throw error; - } -} - -module.exports = Runner; diff --git a/test/benchmarks/mongoBench/suite.js b/test/benchmarks/mongoBench/suite.js deleted file mode 100644 index 397f172b265..00000000000 --- a/test/benchmarks/mongoBench/suite.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -const Benchmark = require('./benchmark'); - -class Suite { - constructor() { - this.children = {}; - } - - /** - * - * @param {string} name the name of the benchmark - * @param {(benchmark: Benchmark) => void} fn a function that configures the `benchmark` parameter - * @returns {this} this - */ - benchmark(name, fn) { - if (typeof name !== 'string' || !name) { - throw new TypeError(`Argument "name" (${name}) must be a non-zero length string`); - } - - if (typeof fn !== 'function') { - throw new TypeError(`Argument "fn" must be a function`); - } - - if (name in this.children) { - throw new Error(`Name "${name}" already taken`); - } - - const _benchmark = new Benchmark(); - const benchmark = fn(_benchmark) || _benchmark; - - if (!(benchmark instanceof Benchmark)) { - throw new TypeError(`returned object is not a benchmark`); - } - - benchmark.validate(); - - this.children[name] = benchmark; - - return this; - } - - getBenchmarks() { - return this.children; - } -} - -module.exports = Suite; diff --git a/test/benchmarks/mongoBench/suites/index.js b/test/benchmarks/mongoBench/suites/index.js deleted file mode 100644 index 72d73c9d4e5..00000000000 --- a/test/benchmarks/mongoBench/suites/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const { makeParallelBenchmarks } = require('./parallelBench'); -const { makeSingleBench } = require('./singleBench'); -const { makeMultiBench } = require('./multiBench'); - -module.exports = { - makeParallelBenchmarks, - makeSingleBench, - makeMultiBench -}; diff --git a/test/benchmarks/mongoBench/suites/multiBench.js b/test/benchmarks/mongoBench/suites/multiBench.js deleted file mode 100644 index c6afab962cc..00000000000 --- a/test/benchmarks/mongoBench/suites/multiBench.js +++ /dev/null @@ -1,222 +0,0 @@ -const { Readable } = require('stream'); -const { pipeline } = require('stream/promises'); -const { - loadSpecFile, - makeLoadJSON, - makeClient, - connectClient, - initDb, - dropDb, - initCollection, - makeLoadTweets, - disconnectClient, - makeLoadInsertDocs, - createCollection, - dropCollection, - dropBucket, - initBucket, - writeSingleByteFileToBucket -} = require('../../driverBench/common'); - -function loadGridFs() { - this.bin = loadSpecFile(['single_and_multi_document', 'gridfs_large.bin']); -} - -function gridFsInitUploadStream() { - this.uploadStream = this.bucket.openUploadStream('gridfstest'); -} - -async function gridFsUpload() { - const uploadData = Readable.from(this.bin); - const uploadStream = this.uploadStream; - await pipeline(uploadData, uploadStream); -} - -function makeMultiBench(suite) { - return suite - .benchmark('findManyAndEmptyCursor', benchmark => - benchmark - .taskSize(16.22) - .setup(makeLoadJSON('tweet.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initCollection) - .setup(makeLoadTweets(false)) - .task(async function () { - // eslint-disable-next-line no-unused-vars - for await (const _ of this.collection.find({})) { - // do nothing - } - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('smallDocBulkInsert', benchmark => - benchmark - .taskSize(2.75) - .setup(makeLoadJSON('small_doc.json')) - .setup(makeLoadInsertDocs(10000)) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(createCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .beforeTask(initCollection) - .task(async function () { - await this.collection.insertMany(this.docs, { ordered: true }); - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('largeDocBulkInsert', benchmark => - benchmark - .taskSize(27.31) - .setup(makeLoadJSON('large_doc.json')) - .setup(makeLoadInsertDocs(10)) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(createCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .beforeTask(initCollection) - .task(async function () { - await this.collection.insertMany(this.docs, { ordered: true }); - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('gridFsUpload', benchmark => - benchmark - .taskSize(52.43) - .setup(loadGridFs) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .beforeTask(dropBucket) - .beforeTask(initBucket) - .beforeTask(gridFsInitUploadStream) - .beforeTask(writeSingleByteFileToBucket) - .task(gridFsUpload) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('gridFsDownload', benchmark => - benchmark - .taskSize(52.43) - .setup(loadGridFs) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(dropBucket) - .setup(initBucket) - .setup(gridFsInitUploadStream) - .setup(async function () { - await gridFsUpload.call(this); - this.id = this.uploadStream.id; - this.uploadData = undefined; - }) - .task(async function () { - // eslint-disable-next-line no-unused-vars - for await (const _ of this.bucket.openDownloadStream(this.id)) { - // do nothing - } - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('findManyAndToArray', benchmark => - benchmark - .taskSize(16.22) - .setup(makeLoadJSON('tweet.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initCollection) - .setup(makeLoadTweets(false)) - .task(async function () { - await this.collection.find({}).toArray(); - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('aggregateAMillionDocumentsAndToArray', benchmark => - benchmark - .taskSize(16) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .task(async function () { - await this.db - .aggregate([ - { $documents: [{}] }, - { - $set: { - field: { - $reduce: { - input: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], - initialValue: [0], - in: { $concatArrays: ['$$value', '$$value'] } - } - } - } - }, - { $unwind: '$field' }, - { $limit: 1000000 } - ]) - .toArray(); - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('aggregateAMillionTweetsAndToArray', benchmark => - benchmark - .taskSize(1500) - .setup(makeLoadJSON('tweet.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .task(async function () { - await this.db - .aggregate([ - { $documents: [this.doc] }, - { - $set: { - id: { - $reduce: { - input: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], - initialValue: [0], - in: { $concatArrays: ['$$value', '$$value'] } - } - } - } - }, - { $unwind: '$id' }, - { $limit: 1000000 } - ]) - .toArray(); - }) - .teardown(dropDb) - .teardown(disconnectClient) - ); -} - -module.exports = { makeMultiBench }; diff --git a/test/benchmarks/mongoBench/suites/parallelBench.js b/test/benchmarks/mongoBench/suites/parallelBench.js deleted file mode 100644 index b011603b75d..00000000000 --- a/test/benchmarks/mongoBench/suites/parallelBench.js +++ /dev/null @@ -1,199 +0,0 @@ -'use strict'; - -const { createReadStream, createWriteStream } = require('fs'); -const { rm, mkdir, readdir } = require('fs/promises'); -const { resolve } = require('path'); -const { Readable } = require('stream'); -const readline = require('readline'); -const { - makeClient, - disconnectClient, - dropDb, - initBucket, - dropBucket, - initCollection, - initDb, - connectClient, - dropCollection, - createCollection -} = require('../../driverBench/common'); -const { pipeline } = require('stream/promises'); -const { EJSON } = require('bson'); - -const benchmarkFileDirectory = resolve(__dirname, '..', '..', 'driverBench', 'spec', 'parallel'); - -async function initTemporaryDirectory() { - const temporaryDirectory = resolve(benchmarkFileDirectory, 'downloads'); - await rm(temporaryDirectory, { recursive: true, force: true }); - await mkdir(temporaryDirectory); - this.temporaryDirectory = temporaryDirectory; -} - -async function clearTemporaryDirectory() { - const fileNames = await readdir(this.temporaryDirectory); - const files = fileNames.map(filename => resolve(this.temporaryDirectory, filename)); - - await Promise.all(files.map(file => rm(file))); -} - -async function ldjsonMultiUpload() { - const directory = resolve(benchmarkFileDirectory, 'ldjson_multi'); - const files = await readdir(directory); - const uploads = files.map(async file => { - const stream = createReadStream(resolve(directory, file)); - const lineReader = readline.createInterface({ - input: stream - }); - - const operations = []; - - for await (const line of lineReader) { - operations.push({ - insertOne: { - document: JSON.parse(line) - } - }); - } - - stream.close(); - lineReader.close(); - - return this.collection.bulkWrite(operations); - }); - - await Promise.all(uploads); -} - -async function ldjsonMultiExport() { - const skips = Array.from({ length: 100 }, (_, index) => index * 5000); - - const promises = skips.map(async skip => { - const documentCursor = this.collection.find({}, { skip, limit: 5000 }); - documentCursor.map(doc => EJSON.stringify(doc)); - const outputStream = createWriteStream(resolve(this.temporaryDirectory, `tmp-${skip}.txt`)); - return pipeline(documentCursor.stream(), outputStream); - }); - - await Promise.all(promises); -} - -async function gridfsMultiFileUpload() { - const directory = resolve(benchmarkFileDirectory, 'gridfs_multi'); - const files = await readdir(directory); - const uploadPromises = files.map(async filename => { - const file = resolve(directory, filename); - const fileStream = createReadStream(file); - const uploadStream = this.bucket.openUploadStream(file); - return pipeline(fileStream, uploadStream); - }); - await Promise.all(uploadPromises); -} - -async function gridfsMultiFileDownload() { - const files = await this.bucket - .find() - .map(({ _id }) => ({ - path: resolve(this.temporaryDirectory, `${_id}.txt`), - _id - })) - .toArray(); - - const downloads = files.map(async ({ _id, path }) => { - const fileStream = createWriteStream(path); - const downloadStream = this.bucket.openDownloadStream(_id); - return pipeline(downloadStream, fileStream); - }); - - await Promise.all(downloads); -} - -/** - * - * @param {Suite} suite - * @returns Benchmark - */ -function makeParallelBenchmarks(suite) { - return suite - .benchmark('ldjsonMultiFileUpload', benchmark => - // https://github.com/mongodb/specifications/blob/master/source/benchmarking/benchmarking.rst#ldjson-multi-file-import - benchmark - .taskSize(565) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .beforeTask(initCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .task(ldjsonMultiUpload) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('ldjsonMultiFileExport', benchmark => - // https://github.com/mongodb/specifications/blob/master/source/benchmarking/benchmarking.rst#ldjson-multi-file-export - benchmark - .taskSize(565) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .beforeTask(initCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .beforeTask(ldjsonMultiUpload) - .beforeTask(initTemporaryDirectory) - .task(ldjsonMultiExport) - .afterTask(clearTemporaryDirectory) - .teardown(dropDb) - .teardown(async function () { - await rm(this.temporaryDirectory, { recursive: true, force: true }); - }) - .teardown(disconnectClient) - ) - .benchmark('gridfsMultiFileUpload', benchmark => - // https://github.com/mongodb/specifications/blob/master/source/benchmarking/benchmarking.rst#gridfs-multi-file-upload - benchmark - .taskSize(262.144) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .beforeTask(dropBucket) - .beforeTask(initBucket) - .beforeTask(async function () { - const stream = this.bucket.openUploadStream('setup-file.txt'); - const oneByteFile = Readable.from('a'); - return pipeline(oneByteFile, stream); - }) - .task(gridfsMultiFileUpload) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('gridfsMultiFileDownload', benchmark => - // https://github.com/mongodb/specifications/blob/master/source/benchmarking/benchmarking.rst#gridfs-multi-file-download - benchmark - .taskSize(262.144) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(initTemporaryDirectory) - .setup(dropBucket) - .setup(initBucket) - .setup(gridfsMultiFileUpload) - .beforeTask(clearTemporaryDirectory) - .setup(initBucket) - .task(gridfsMultiFileDownload) - .teardown(dropDb) - .teardown(async function () { - await rm(this.temporaryDirectory, { recursive: true, force: true }); - }) - .teardown(disconnectClient) - ); -} - -module.exports = { makeParallelBenchmarks }; diff --git a/test/benchmarks/mongoBench/suites/singleBench.js b/test/benchmarks/mongoBench/suites/singleBench.js deleted file mode 100644 index 5dd3fb92947..00000000000 --- a/test/benchmarks/mongoBench/suites/singleBench.js +++ /dev/null @@ -1,121 +0,0 @@ -const { - makeClient, - connectClient, - initDb, - disconnectClient, - dropDb, - initCollection, - createCollection, - dropCollection, - makeLoadJSON, - makeLoadTweets -} = require('../../driverBench/common'); - -function makeSingleBench(suite) { - suite - .benchmark('returnDocument', benchmark => - benchmark - .taskSize(1.531e-3) // One tweet is 1,531 bytes or 0.001531 MB - .setup(makeLoadJSON('tweet.json')) - .task(async function () { - return this.doc; - }) - ) - .benchmark('ping', benchmark => - benchmark - .taskSize(0.15) // { ping: 1 } is 15 bytes of BSON x 10,000 iterations - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .task(async function () { - for (let i = 0; i < 10000; ++i) { - await this.db.command({ ping: 1 }); - } - }) - .teardown(disconnectClient) - ) - .benchmark('runCommand', benchmark => - benchmark - // { hello: true } is 13 bytes of BSON x 10,000 iterations - .taskSize(0.13) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .task(async function () { - for (let i = 0; i < 10000; ++i) { - await this.db.command({ hello: true }); - } - }) - .teardown(disconnectClient) - ) - .benchmark('findOne', benchmark => - benchmark - .taskSize(16.22) - .setup(makeLoadJSON('tweet.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initCollection) - .setup(makeLoadTweets(true)) - .task(async function () { - for (let _id = 0; _id < 10000; ++_id) { - await this.collection.findOne({ _id }); - } - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('smallDocInsertOne', benchmark => - benchmark - .taskSize(2.75) - .setup(makeLoadJSON('small_doc.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(createCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .beforeTask(initCollection) - .beforeTask(function () { - this.docs = Array.from({ length: 10000 }, () => Object.assign({}, this.doc)); - }) - .task(async function () { - for (const doc of this.docs) { - await this.collection.insertOne(doc); - } - }) - .teardown(dropDb) - .teardown(disconnectClient) - ) - .benchmark('largeDocInsertOne', benchmark => - benchmark - .taskSize(27.31) - .setup(makeLoadJSON('large_doc.json')) - .setup(makeClient) - .setup(connectClient) - .setup(initDb) - .setup(dropDb) - .setup(initDb) - .setup(initCollection) - .setup(createCollection) - .beforeTask(dropCollection) - .beforeTask(createCollection) - .beforeTask(initCollection) - .beforeTask(function () { - this.docs = Array.from({ length: 10 }, () => Object.assign({}, this.doc)); - }) - .task(async function () { - for (const doc of this.docs) { - await this.collection.insertOne(doc); - } - }) - .teardown(dropDb) - .teardown(disconnectClient) - ); -} - -module.exports = { makeSingleBench };