Created
June 18, 2011 23:31
-
-
Save christkv/1033593 to your computer and use it in GitHub Desktop.
Server for replicaset test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var ReplicaSetManager = require('./test/tools/replica_set_manager').ReplicaSetManager; | |
var mongo = require('./lib/mongodb'), | |
Server = mongo.Server, | |
ReplSetServers = mongo.ReplSetServers, | |
http = require('http'), | |
debug = require('util').debug, | |
inspect = require('util').inspect; | |
var RS = new ReplicaSetManager({retries:120, arbiter_count:1, secondary_count:1, passive_count:0, name:'rs1'}); | |
var client, collection; | |
var cool_kids = ['Andrew', 'Jake', 'Mark', 'Pin-Bo', 'Bob', 'Chris', 'Sabo', 'Leonard']; | |
var db = null; | |
var server = http.createServer(function(req, res) { | |
if (req.url != '/query' && req.url != '/insert') { | |
return res.end(); | |
} | |
req.on('data', function(chunk) { | |
console.log("data received: "+chunk); | |
}); | |
req.on('end', function() { | |
if (req.url === '/insert') { | |
var i = Math.floor(Math.random()*cool_kids.length); | |
collection.insert({name: cool_kids[i]}, {safe: true}, function(err, docs) { | |
if (err) console.error("db.insert err: "+err); | |
if (err) return res.end(inspect(err)); | |
return res.end('Added '+cool_kids[i]+' to the cool_kids collection'); | |
}); | |
} else { // query | |
collection.find({}).toArray(function(err, docs) { | |
if (err) console.error("db.find err: "+err); | |
if (err) return res.end(inspect(err)); | |
return res.end(inspect(docs)); | |
}); | |
} | |
}); | |
}); | |
RS.startSet(true, function(err, result) { | |
if(err != null) throw err; | |
var replSet = new ReplSetServers([ | |
new Server( RS.host, RS.ports[1], { auto_reconnect: true } ), | |
new Server( RS.host, RS.ports[0], { auto_reconnect: true } ), | |
new Server( RS.host, RS.ports[2], { auto_reconnect: true } ) | |
], | |
{rs_name: 'rs1'} | |
); | |
db = new mongo.Db('repltest', replSet); | |
// Finish setup | |
server.listen(10000, function(err) { | |
function open() { | |
db.open(function(err, client_) { | |
if (err) console.error("db.open err: "+err); | |
client = client_; | |
client.dropDatabase(function(err, done) { | |
if (err) console.error("dropDatabase err: "+err); | |
client.createCollection('cool_kids', function(err, collection_) { | |
if (err) console.error("createCollection err: "+err); | |
collection = collection_; | |
collection.insert({name: 'Andrew'}, {safe: true}, function(err, docs) { | |
if (err) console.error("insert err: "+err); | |
}); | |
}); | |
}); | |
}); | |
} | |
db.on('timeout', function(replSet) { | |
console.error("Err: server timeout"); | |
}); | |
db.on('close', function(replSet) { | |
var err = new Error('close err'); | |
console.error("Err: server close: "+err.stack); | |
}); | |
open(); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment