mirror of https://github.com/mongodb/mongo
63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
/**
|
|
* @tags: [
|
|
* uses_multiple_connections,
|
|
* uses_parallel_shell,
|
|
* # benchRun does not use runCommand which is required by the `simulate_atlas_proxy` override.
|
|
* simulate_atlas_proxy_incompatible,
|
|
* # TODO SERVER-84638: remove this incompatibility once benchrun passes on shell options.
|
|
* grpc_incompatible,
|
|
* ]
|
|
*/
|
|
const t = db.bench_test2;
|
|
t.drop();
|
|
|
|
let docs = [];
|
|
for (let i = 0; i < 100; i++) {
|
|
docs.push({_id: i, x: 0});
|
|
}
|
|
assert.commandWorked(t.insert(docs));
|
|
|
|
const benchArgs = {
|
|
ops: [
|
|
{
|
|
ns: t.getFullName(),
|
|
op: "update",
|
|
query: {_id: {"#RAND_INT": [0, 100]}},
|
|
update: {$inc: {x: 1}},
|
|
writeCmd: true,
|
|
},
|
|
],
|
|
parallel: 2,
|
|
seconds: 1,
|
|
host: db.getMongo().host,
|
|
};
|
|
|
|
if (jsTest.options().auth) {
|
|
benchArgs["db"] = "admin";
|
|
benchArgs["username"] = jsTest.options().authUser;
|
|
benchArgs["password"] = jsTest.options().authPassword;
|
|
}
|
|
|
|
const res = benchRun(benchArgs);
|
|
printjson(res);
|
|
|
|
let sumsq = 0;
|
|
let sum = 0;
|
|
|
|
let min = 1000;
|
|
let max = 0;
|
|
t.find().forEach(function (z) {
|
|
sum += z.x;
|
|
sumsq += Math.pow(res.update / 100 - z.x, 2);
|
|
min = Math.min(z.x, min);
|
|
max = Math.max(z.x, max);
|
|
});
|
|
|
|
const avg = sum / 100;
|
|
const std = Math.sqrt(sumsq / 100);
|
|
|
|
print("Avg: " + avg);
|
|
print("Std: " + std);
|
|
print("Min: " + min);
|
|
print("Max: " + max);
|