Skip to content

Instantly share code, notes, and snippets.

@yuki-takeichi
Last active February 24, 2016 02:48
Show Gist options
  • Save yuki-takeichi/c8dd600aa38d46640a9a to your computer and use it in GitHub Desktop.
Save yuki-takeichi/c8dd600aa38d46640a9a to your computer and use it in GitHub Desktop.
mongo fd test
var MongoClient = require('mongodb').MongoClient;
var mongoUri = "mongodb://192.168.11.2:27017/hoge";
function mapM(fs, cb) {
var xs = [];
function _mapM(fs, cb) {
var f = fs.shift();
f(function(x) {
xs.push(x);
if (fs.length == 0) {
cb(xs);
} else {
_mapM(fs, cb);
}
});
}
_mapM(fs, cb);
}
function connectDB(cb) {
MongoClient.connect(mongoUri, function(err, db) {
cb({err: err, db: db});
});
}
var fs = [];
var max = 500;
for (var i = 0; i < max; i++) {
fs.push(connectDB);
//fs.push(function(f) { f(i); }); // debug
}
mapM(fs, function(results) {
var succeeded = 0;
var failed = 0;
console.log('done');
require('fs').readFileSync('/dev/stdin', 'utf8'); // press Ctrl-D to quit
for (var i = 0; i < max; i++) {
var db = results[i].db;
var err = results[i].err;
if (db) { db.close(); succeeded++; }
if (err) { console.log(err); failed++; }
}
console.log("succeeded: " + succeeded + ", failed: " + failed + ".");
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment