var MongoClient = require('./').MongoClient,
|
|
assert = require('assert');
|
|
|
|
// var memwatch = require('memwatch-next');
|
|
// memwatch.on('leak', function(info) {
|
|
// console.log("======== leak")
|
|
// });
|
|
//
|
|
// memwatch.on('stats', function(stats) {
|
|
// console.log("======== stats")
|
|
// console.dir(stats)
|
|
// });
|
|
|
|
// // Take first snapshot
|
|
// var hd = new memwatch.HeapDiff();
|
|
|
|
MongoClient.connect('mongodb://localhost:27017/bench', function(err, db) {
|
|
var docs = [];
|
|
var total = 1000;
|
|
var count = total;
|
|
var measurements = [];
|
|
|
|
// Insert a bunch of documents
|
|
for(var i = 0; i < 100; i++) {
|
|
docs.push(JSON.parse(data));
|
|
}
|
|
|
|
var col = db.collection('inserts');
|
|
|
|
function execute(col, callback) {
|
|
var start = new Date().getTime();
|
|
|
|
col.find({}).limit(100).toArray(function(e, docs) {
|
|
measurements.push(new Date().getTime() - start);
|
|
assert.equal(null, e);
|
|
callback();
|
|
});
|
|
}
|
|
|
|
console.log("== insert documents")
|
|
col.insert(docs, function(e, r) {
|
|
docs = [];
|
|
assert.equal(null, e);
|
|
|
|
console.log("== start bench")
|
|
for(var i = 0; i < total; i++) {
|
|
execute(col, function(e) {
|
|
count = count - 1;
|
|
|
|
if(count == 0) {
|
|
// Calculate total execution time for operations
|
|
var totalTime = measurements.reduce(function(prev, curr) {
|
|
return prev + curr;
|
|
}, 0);
|
|
|
|
console.log("===========================================");
|
|
console.log("total time: " + totalTime)
|
|
|
|
// var diff = hd.end();
|
|
// console.log("===========================================");
|
|
// console.log(JSON.stringify(diff, null, 2))
|
|
|
|
db.close();
|
|
process.exit(0)
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
var data = JSON.stringify({
|
|
"data": [
|
|
{
|
|
"_id": 1,
|
|
"x": 11
|
|
},
|
|
{
|
|
"_id": 2,
|
|
"x": 22
|
|
},
|
|
{
|
|
"_id": 3,
|
|
"x": 33
|
|
}
|
|
],
|
|
"collection_name": "test",
|
|
"database_name": "command-monitoring-tests",
|
|
"tests": [
|
|
{
|
|
"description": "A successful mixed bulk write",
|
|
"operation": {
|
|
"name": "bulkWrite",
|
|
"arguments": {
|
|
"requests": [
|
|
{
|
|
"insertOne": {
|
|
"document": {
|
|
"_id": 4,
|
|
"x": 44
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"updateOne": {
|
|
"filter": {
|
|
"_id": 3
|
|
},
|
|
"update": {
|
|
"set": {
|
|
"x": 333
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"expectations": [
|
|
{
|
|
"command_started_event": {
|
|
"command": {
|
|
"insert": "test",
|
|
"documents": [
|
|
{
|
|
"_id": 4,
|
|
"x": 44
|
|
}
|
|
],
|
|
"ordered": true
|
|
},
|
|
"command_name": "insert",
|
|
"database_name": "command-monitoring-tests"
|
|
}
|
|
},
|
|
{
|
|
"command_succeeded_event": {
|
|
"reply": {
|
|
"ok": 1.0,
|
|
"n": 1
|
|
},
|
|
"command_name": "insert"
|
|
}
|
|
},
|
|
{
|
|
"command_started_event": {
|
|
"command": {
|
|
"update": "test",
|
|
"updates": [
|
|
{
|
|
"q": {
|
|
"_id": 3
|
|
},
|
|
"u": {
|
|
"set": {
|
|
"x": 333
|
|
}
|
|
},
|
|
"upsert": false,
|
|
"multi": false
|
|
}
|
|
],
|
|
"ordered": true
|
|
},
|
|
"command_name": "update",
|
|
"database_name": "command-monitoring-tests"
|
|
}
|
|
},
|
|
{
|
|
"command_succeeded_event": {
|
|
"reply": {
|
|
"ok": 1.0,
|
|
"n": 1
|
|
},
|
|
"command_name": "update"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"description": "A successful unordered bulk write with an unacknowledged write concern",
|
|
"operation": {
|
|
"name": "bulkWrite",
|
|
"arguments": {
|
|
"requests": [
|
|
{
|
|
"insertOne": {
|
|
"document": {
|
|
"_id": 4,
|
|
"x": 44
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"ordered": false,
|
|
"writeConcern": {
|
|
"w": 0
|
|
}
|
|
}
|
|
},
|
|
"expectations": [
|
|
{
|
|
"command_started_event": {
|
|
"command": {
|
|
"insert": "test",
|
|
"documents": [
|
|
{
|
|
"_id": 4,
|
|
"x": 44
|
|
}
|
|
],
|
|
"ordered": false,
|
|
"writeConcern": {
|
|
"w": 0
|
|
}
|
|
},
|
|
"command_name": "insert",
|
|
"database_name": "command-monitoring-tests"
|
|
}
|
|
},
|
|
{
|
|
"command_succeeded_event": {
|
|
"reply": {
|
|
"ok": 1.0
|
|
},
|
|
"command_name": "insert"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
});
|