eazy-pomelo
Version:
NetEase Pomelo Of EazyGame OEM
249 lines (223 loc) • 5.88 kB
JavaScript
var should = require('should');
var pomelo = require('../../');
var consoleModule = require('../../lib/modules/console');
describe('console module test', function() {
describe('#monitorHandler', function() {
it('should execute the corresponding command with different signals', function() {
var flag;
var rs;
var opts = {
app: {
components: {
__connector__: {
blacklist: []
}
},
stop: function(value) {
flag = value;
},
addCrons: function(array) {
rs = array;
},
removeCrons: function(array) {
rs = array;
},
isFrontend: function() {
return true;
}
}
};
var module = new consoleModule(opts);
var agent1 = {
type: 'area'
};
var msg1 = {signal: 'stop'};
module.monitorHandler(agent1, msg1);
flag.should.eql(true);
var msg2 = {signal: 'list'};
var agent2 = {
type: 'chat',
id: 'chat-server-1'
};
module.monitorHandler(agent2, msg2, function(obj) {
obj.serverId.should.eql('chat-server-1');
obj.body.serverType.should.eql('chat');
});
var msg3 = {signal: 'addCron'};
module.monitorHandler(agent2, msg3, null);
rs.length.should.eql(1);
var msg4 = {signal: 'removeCron'};
module.monitorHandler(agent2, msg4, null);
rs.length.should.eql(1);
var msg5 = {signal: 'blacklist', blacklist: ['127.0.0.1']};
module.monitorHandler(agent1, msg5, null);
opts.app.components.__connector__.blacklist.length.should.eql(1);
});
});
describe('#clientHandler', function() {
var _exit;
var _setTimeout;
var exitCount = 0;
before(function(done) {
_exit = process.exit;
_setTimeout = setTimeout;
done();
});
after(function(done) {
process.exit = _exit;
setTimeout = _setTimeout;
done();
});
var opts = {
app: {
clusterSeq: {},
stop: function(value) {
return value;
},
getServerById: function() {
return {
host: '127.0.0.1'
};
},
getServers: function() {
return {
'chat-server-1': {
}
}
},
get: function(value) {
switch(value) {
case 'main':
return __dirname + '/../../index.js';
case 'env':
return 'dev';
}
},
set: function(value) {
return value;
},
getServersByType: function() {
return [{id: 'chat-server-1'}];
}
}
};
var module = new consoleModule(opts);
it('should execute kill command', function(done) {
var msg = {signal: 'kill'};
process.exit = function() {exitCount++;};
setTimeout = function(cb, timeout) {
if (timeout > 3000) {
timeout = 3000;
}
_setTimeout(cb, timeout);
};
var agent1 = {
request: function(recordId, moduleId, msg, cb) {
cb('chat-server-1');
},
idMap: {
'chat-server-1': {
type: 'chat',
id: 'chat-server-1'
}
}
};
module.clientHandler(agent1, msg, function(err, result) {
should.not.exist(err);
should.exist(result.code);
});
var agent2 = {
request: function(recordId, moduleId, msg, cb) {
cb(null);
},
idMap: {
'chat-server-1': {
type: 'chat',
id: 'chat-server-1'
}
}
};
module.clientHandler(agent2, msg, function(err, result) {
should.not.exist(err);
should.exist(result.code);
result.code.should.eql('remained');
done();
});
});
it('should execute stop command', function(done) {
var msg1 = {signal: 'stop', ids: ['chat-server-1']};
var msg2 = {signal: 'stop', ids:[]};
var agent = {
notifyById: function(serverId, moduleId, msg) {
},
notifyAll: function(moduleId, msg) {
}
};
module.clientHandler(agent, msg1, function(err, result) {
result.status.should.eql('part');
});
module.clientHandler(agent, msg2, function(err, result) {
result.status.should.eql('all');
done();
});
});
it('should execute list command', function() {
var msg = {signal: 'list'};
var agent = {
request: function(recordId, moduleId, msg, cb) {
cb({serverId: 'chat-server-1', body: {'server':{}}});
},
idMap: {
'chat-server-1': {
type: 'chat',
id: 'chat-server-1'
}
}
};
module.clientHandler(agent, msg, function(err, result) {
should.exist(result.msg);
});
});
it('should execute add command', function() {
var msg1 = {signal: 'add', args: ['host=127.0.0.1', 'port=88888', 'clusterCount=2']};
var msg2 = {signal: 'add', args: ['host=127.0.0.1', 'port=88888', 'id=chat-server-1', 'serverType=chat']};
var agent = {};
module.clientHandler(agent, msg1, function(err, result) {
should.not.exist(err);
result.length.should.eql(0);
});
module.clientHandler(agent, msg2, function(err, result) {
result.status.should.eql('ok');
});
});
it('should execute blacklist command', function() {
var msg1 = {signal: 'blacklist', args: ['127.0.0.1']};
var msg2 = {signal: 'blacklist', args: ['abc']};
var agent = {
notifyAll: function(moduleId, msg) {
}
};
module.clientHandler(agent, msg1, function(err, result) {
result.status.should.eql('ok');
});
module.clientHandler(agent, msg2, function(err, result) {
should.exist(err);
});
});
it('should execute restart command', function() {
var msg1 = {signal: 'restart', ids:['chat-server-1']};
var msg2 = {signal: 'restart', type:'chat', ids:[]};
var agent = {
request: function(recordId, moduleId, msg, cb) {
cb(null);
}
};
module.clientHandler(agent, msg1, function(err, result) {
should.exist(err);
});
module.clientHandler(agent, msg2, function(err, result) {
should.exist(err);
});
});
});
});