123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /**
- * Module dependencies.
- */
- var cluster = require('../')
- , http = require('http')
- , fs = require('fs');
- require('./common');
- var server = http.createServer(function(req, res){
- setTimeout(function(){
- res.writeHead(200);
- res.end('Hello World');
- }, 1000);
- });
- cluster = cluster(server)
- .set('workers', 2)
- .use(cluster.pidfiles())
- .listen(3002);
- var a, b
- , options = { host: 'localhost', port: 3002 };
- function getPID(name) {
- var pid = fs.readFileSync(__dirname + '/pids/' + name, 'ascii');
- return parseInt(pid, 10);
- }
- function movePID(name) {
- var pid = getPID(name);
- fs.writeFileSync(__dirname + '/pids/old.' + name, pid.toString(), 'ascii');
- }
- if (cluster.isChild) {
- cluster.on('restart', function(){
- http.get(options, function(res){
- res.statusCode.should.equal(200);
- var a = getPID('old.worker.0.pid')
- , b = getPID('old.worker.1.pid');
- a.should.not.equal(getPID('worker.0.pid'));
- b.should.not.equal(getPID('worker.1.pid'));
- cluster.close();
- });
- });
- } else {
- var pending = 2;
- cluster.on('worker pidfile', function(){
- --pending || (function(){
- movePID('worker.0.pid')
- movePID('worker.1.pid');
- // issue some requests
- var n = 20
- , pending = n;
- while (n--) {
- http.get(options, function(res){
- res.statusCode.should.equal(200);
- --pending || cluster.restart();
- });
- }
- })();
- });
- }
|