1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// Tests the "writeCmd" and "readCmd" options to benchRun().
(function() {
"use strict";
var coll = db.bench_test_crud_commands;
coll.drop();
assert.commandWorked(coll.getDB().createCollection(coll.getName()));
function executeBenchRun(benchOps) {
var benchArgs = {ops: benchOps, parallel: 2, seconds: 1, host: db.getMongo().host};
if (jsTest.options().auth) {
benchArgs['db'] = 'admin';
benchArgs['username'] = jsTest.options().adminUser;
benchArgs['password'] = jsTest.options().adminPassword;
}
return benchRun(benchArgs);
}
function testInsert(writeCmd, wc) {
coll.drop();
var docs = [];
for (var i = 0; i < 100; i++) {
docs.push({x: 1});
}
var res = executeBenchRun([{ns: coll.getFullName(),
op: "insert",
doc: docs,
writeCmd: writeCmd,
writeConcern : wc}]);
assert.gt(coll.count(), 0);
assert.eq(coll.findOne({}, {_id:0}), docs[0]);
assert.gt(res.insert, 0, tojson(res));
}
function testFind(readCmd) {
coll.drop();
for (var i = 0; i < 100; i++) {
assert.writeOK(coll.insert({}));
}
var res = executeBenchRun([{ns: coll.getFullName(),
op: "find",
query: {},
batchSize: NumberInt(10),
readCmd: readCmd}]);
assert.gt(res.query, 0, tojson(res));
}
function testFindOne(readCmd) {
coll.drop();
for (var i = 0; i < 100; i++) {
assert.writeOK(coll.insert({}));
}
var res = executeBenchRun([{ns: coll.getFullName(),
op: "findOne",
query: {},
readCmd: readCmd}]);
assert.gt(res.findOne, 0, tojson(res));
}
testInsert(false, {});
testInsert(true, {"writeConcern" : {"w" : "majority"}});
testInsert(true, {"writeConcern" : {"w" : 1, "j": false}});
testInsert(true, {"writeConcern" : {"j" : true}});
testFind(false);
testFind(true);
testFindOne(false);
testFindOne(true);
})();
|