UNPKG

workforce

Version:

A cluster manager inspired by Learnboost's cluster.

127 lines (100 loc) 2.55 kB
var workforce = require('..'); describe('events', function(){ var server; beforeEach(function(){ server = workforce(__dirname + '/server') .set('workers', 2); }); describe('worker', function(){ it('should emit for each worker listening', function(done){ var count = 0; server.on('worker', function(worker){ worker.should.have.property('state', 'listening'); count += 1; }); server.listen(3000, function(){ count.should.equal(2); server.exit(); done(); }); }); }); describe('listening', function(){ it('should emit after all workers are ready', function(done){ var count = 0; server.on('worker', function(){ count += 1; }); server.on('listening', function(){ count.should.equal(2); }); server.listen(3000, function(){ server.exit(); done(); }); }); }); describe('worker exit', function(){ it('should emit for each worker', function(done){ var count = 0; server.on('worker exit', function(){ count += 1; }); server.listen(3000, function(){ server.exit(function(){ count.should.equal(2); done(); }); }); }); }); describe('exit', function(){ it('should emit after all workers have exited', function(){ var count = 0; server.on('worker exit', function(){ count += 1; }); server.on('exit', function(){ count.should.equal(2); }); server.listen(3000, function(){ server.exit(); }); }); }); describe('shutdown', function(){ it('should emit after all workers have exited', function(){ var count = 0; server.on('worker exit', function(){ count += 1; }); server.on('shutdown', function(){ count.should.equal(2); }); server.listen(3000, function(){ server.shutdown(); }); }); }); describe('restart', function(){ it('should emit after all workers have exited', function(){ var exits = 0; var workers = 0; server.on('worker', function(){ workers += 1; }); server.on('worker exit', function(){ exits += 1; }); server.on('restart', function(){ workers.should.equal(3); exits.should.equal(2); done(); server.exit(); }); server.listen(3000, function(){ server.restart(); }); }); }); });