Skip to content

Instantly share code, notes, and snippets.

@owenallenaz
Created January 3, 2016 20:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save owenallenaz/f5a8497e977c45d013ff to your computer and use it in GitHub Desktop.
Save owenallenaz/f5a8497e977c45d013ff to your computer and use it in GitHub Desktop.
Testing worker based socket pooling mongodb
var async = require("async/");
var mongodb = require("mongodb");
var assert = require("assert");
mongodb.MongoClient.connect("mongodb://127.0.0.1/test", {}, function(err, conn) {
if (err) { throw err; }
var collection = conn.collection("test");
var newDocs = [];
for(var i = 0; i < 100000; i++) {
newDocs.push({ i : i });
}
var fastFn = function(cb) {
collection.find({}).limit(1).toArray(function(err, docs) {
if (err) { return cb(err); }
console.log("fastFn done", docs);
cb(null);
});
}
var cursorFn = function(cb) {
var cursor = collection.find({}).limit(5).batchSize(2);
cursor.next(function(err, docs) {
if (err) { return cb(err); }
console.log("first", docs);
cursor.next(function(err, docs) {
if (err) { return cb(err); }
console.log("second", docs);
cursor.next(function(err, docs) {
if (err) { return cb(err); }
console.log("third", docs);
cb(null);
});
});
});
}
var slowFn = function(cb) {
collection.update({}, { $set : { rand : "aaaaaaaaaaaaaaaaaaaaaaaaaa" } }, { multi : true }, function(err, result) {
if (err) { return cb(err); }
console.log("slowFn done");
console.log("result", result.result);
cb(null);
});
}
async.series({
"remove" : function(cb) {
console.log("starting remove");
collection.remove({}, cb);
},
"insert" : function(cb) {
console.log("starting insert");
collection.insert(newDocs, cb);
},
"test" : function(cb) {
console.log("starting test");
async.parallel([
slowFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn,
cursorFn,
fastFn,
fastFn,
fastFn,
fastFn,
fastFn
], cb);
}
}, function(err) {
assert.ifError(err);
console.log("done");
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment