From 2ff62eae4de26dc803f7e497f6ce5c7bb3f08d67 Mon Sep 17 00:00:00 2001 From: muddydixon Date: Tue, 28 Aug 2012 13:38:42 +0900 Subject: [PATCH] in repliace env, set hosts as Array to new Mongolian --- lib/server.js | 48 +++++++++++++++++++++++++++++++++++------------- test/server.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 test/server.js diff --git a/lib/server.js b/lib/server.js index 3a6ba8c..ec384d6 100644 --- a/lib/server.js +++ b/lib/server.js @@ -97,21 +97,43 @@ var Mongolian = module.exports = function(serversOrOptions) { } // Browse the constructor arguments - for (var i=0; i -1){ + hosts = hosts.concat(arg.split(/\s*,\s*/).map(function(uri){ return parseUrl(uri); })) + }else{ + hosts.push(parseUrl(arg)) + } + }else if(arg instanceof Array){ + hosts = hosts.concat(arg.map(function(uri){ return parseUrl(uri); })) + }else if(typeof arg === 'object'){ + for(var attr in arg){ + if(arg.hasOwnProperty(attr)){ + opt[attr] = arg[attr] + } + } + } + } + for(var i = 0; i < hosts.length; i++){ + addServer(hosts[i]) + if (hosts[i].database) inlineDatabase = hosts[i] + } + if(typeof opt.log !== 'undefined'){ + for (var logLevel in this.log) { + this.log[logLevel] = (opt.log && opt.log[logLevel]) || function() {} } } + if(opt.host) addServer(opt) + if (!this._servers.length) { addServer(parseUrl('localhost')) } diff --git a/test/server.js b/test/server.js new file mode 100644 index 0000000..a43b707 --- /dev/null +++ b/test/server.js @@ -0,0 +1,44 @@ +/* Mongolian DeadBeef by Marcello Bastea-Forte - zlib license */ + +var Mongolian = require('../mongolian') + +var server, db, collection +var hosts = [ + 'mongodb://localhost', + 'mongodb://localhost:27018', + 'localhost:27019' +] + +module.exports = { + "create connection in replica set in arguments": function(test) { + server = new Mongolian(hosts[0], hosts[1], hosts[2], { log:false }); + test.equals(server._servers.length, 3) + test.ok(server._serverNames['localhost:27017']) + test.ok(server._serverNames['localhost:27018']) + test.ok(server._serverNames['localhost:27019']) + + db = server.db('mongolian_test') + collection = db.collection('testindex') + db.dropDatabase(function(error){ + test.ifError(error) + + server.close() + test.done() + }) + }, + "create connection in replica set with Array": function(test) { + server = new Mongolian(hosts, { log:false }); + test.equals(server._servers.length, 3) + test.ok(server._serverNames['localhost:27017']) + test.ok(server._serverNames['localhost:27018']) + test.ok(server._serverNames['localhost:27019']) + + db = server.db('mongolian_test') + collection = db.collection('testindex') + db.dropDatabase(function(error){ + test.ifError(error) + server.close() + test.done() + }) + } +};