Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions test/benchmarks/driver_bench/src/driver.mts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,9 @@ export function metrics(test_name: string, result: number, count: number) {
* For use in setup/teardown mostly.
*/
export class DriverTester {
readonly DB_NAME = DB_NAME;
readonly COLLECTION_NAME = COLLECTION_NAME;

public client: mongodb.MongoClient;
constructor() {
this.client = new MongoClient(MONGODB_URI, MONGODB_CLIENT_OPTIONS);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { driver, type mongodb } from '../../driver.mjs';

export const taskSize = 16.22;

let collection: mongodb.Collection<{ _id: number }>;

export async function before() {
await driver.drop();
await driver.create();

const tweet = await driver.load('single_and_multi_document/tweet.json', 'json');
await driver.insertManyOf(tweet, 10000, true);

collection = driver.client.db(driver.DB_NAME).collection(driver.COLLECTION_NAME);
}

export async function run() {
for (let _id = 0; _id < 10000; ++_id) {
await collection.findOne({ _id });
}
}

export async function after() {
await driver.drop();
await driver.close();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { driver, type mongodb } from '../../driver.mjs';

export const taskSize = 27.31;

let collection: mongodb.Collection;
let documents: Record<string, any>[];
let largeDoc: Record<string, any>;

export async function before() {
largeDoc = await driver.load('single_and_multi_document/large_doc.json', 'json');
}

export async function beforeEach() {
await driver.drop();
await driver.create();

// Make new "documents" so the _id field is not carried over from the last run
documents = Array.from({ length: 10 }, () => ({ ...largeDoc }));

collection = driver.collection;
}

export async function run() {
for (const doc of documents) {
await collection.insertOne(doc);
}
}

export async function after() {
await driver.drop();
await driver.close();
}
24 changes: 24 additions & 0 deletions test/benchmarks/driver_bench/src/suites/single_bench/ping.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { driver, type mongodb } from '../../driver.mjs';

// { ping: 1 } is 15 bytes of BSON x 10,000 iterations
export const taskSize = 0.15;

let db: mongodb.Db;

export async function before() {
await driver.drop();
await driver.create();

db = driver.db;
}

export async function run() {
for (let i = 0; i < 10000; ++i) {
await db.command({ ping: 1 });
}
}

export async function after() {
await driver.drop();
await driver.close();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { driver, type mongodb } from '../../driver.mjs';

// { hello: true } is 13 bytes of BSON x 10,000 iterations
export const taskSize = 0.13;

let db: mongodb.Db;

export async function before() {
await driver.drop();
await driver.create();

db = driver.db;
}

export async function run() {
for (let i = 0; i < 10000; ++i) {
await db.command({ hello: true });
}
}

export async function after() {
await driver.drop();
await driver.close();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { driver, type mongodb } from '../../driver.mjs';

export const taskSize = 2.75;

let collection: mongodb.Collection;
let documents: Record<string, any>[];
let smallDoc: Record<string, any>;

export async function before() {
smallDoc = await driver.load('single_and_multi_document/small_doc.json', 'json');
}

export async function beforeEach() {
await driver.drop();
await driver.create();

// Make new "documents" so the _id field is not carried over from the last run
documents = Array.from({ length: 10000 }, () => ({ ...smallDoc }));

collection = driver.collection;
}

export async function run() {
for (const doc of documents) {
await collection.insertOne(doc);
}
}

export async function after() {
await driver.drop();
await driver.close();
}