Skip to content

Instantly share code, notes, and snippets.

@christkv
Created June 18, 2011 23:31
Show Gist options
  • Save christkv/1033593 to your computer and use it in GitHub Desktop.
Save christkv/1033593 to your computer and use it in GitHub Desktop.
Server for replicaset test
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