UNPKG

enhancer-recluster

Version:

Clustering library with support for zero-downtime reloading

86 lines (71 loc) 2.02 kB
var nlb = require('../../index.js'), path = require('path'), http = require('http'), fs = require('fs'), tap = require('tap'); var balancer = null; var serverjs = path.join(__dirname, 'server.js'); http.globalAgent.maxSockets = Infinity; function request(opt, cb) { http.get(opt.url, function(res) { if (res.statusCode == 200) return cb(null); return cb(res.statusCode); }).on('error', function(err) { cb(err || "Generic error"); }); } function setServer(file, done) { try { var source = path.join(__dirname, file); fs.readFile(source, function(err, data) { if (err) return done(err); fs.writeFile(serverjs, data, function(err) { if (err) return done(err); return done(); }); }); } catch (e) { console.log("Error setting server", e, file); done(e); } } function setUp(opt) { return function setUp(t) { setServer(opt.file, function(err) { if (err) throw err; var options = { respawn: 0.1, workers:2, timeout: 0.3 //readyWhen: 'started' }; for (var key in opt) options[key] = opt[key]; exports.balancer = balancer = nlb(path.join(__dirname, 'server.js'), options); balancer.once('ready', function() { t.end(); }); balancer.run(); }); } } function tearDown(t) { balancer.terminate(function() { t.end(); }); } function runTest(desc, opt, testfn) { if (!testfn) { testfn = opt; opt = {file: 'server-ok.js'}; } tap.test(desc, function(t) { t.test('-> setup', setUp(opt)) t.test('-> ' + desc, testfn); t.test('-> teardown', tearDown); }); } exports.runTest = runTest; exports.balancer = balancer; exports.setServer = setServer; exports.request = request;