You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

231 lines
5.1 KiB

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"
}
}
]
}
]
});