mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
197 lines
4.5 KiB
JavaScript
197 lines
4.5 KiB
JavaScript
|
|
var should = require('should');
|
|
var Ipm2 = require('../../lib/Interactor/pm2-interface');
|
|
var PM2 = require('../..');
|
|
var Plan = require('../helpers/plan.js');
|
|
|
|
var PROCESS_ARCH = Object.keys({
|
|
pm_id : 0,
|
|
name : 'app'
|
|
// server: 'server name' - attached in interactor
|
|
});
|
|
|
|
var PROCESS_EVENT = Object.keys({
|
|
event : 'process event name',
|
|
manually: true,
|
|
process : PROCESS_ARCH,
|
|
at : new Date()
|
|
});
|
|
|
|
var LOG_EVENT = Object.keys({
|
|
data : 'string',
|
|
process : PROCESS_ARCH,
|
|
at : new Date()
|
|
});
|
|
|
|
var ERROR_EVENT = Object.keys({
|
|
at : new Date(),
|
|
data : {
|
|
stack : '\n',
|
|
message : 'error'
|
|
},
|
|
process : PROCESS_ARCH
|
|
});
|
|
|
|
var HUMAN_EVENT = Object.keys({
|
|
at : new Date(),
|
|
process : PROCESS_ARCH,
|
|
data : {
|
|
__name : 'event:name'
|
|
}
|
|
});
|
|
|
|
var TRANSACTION_HTTP_EVENT = Object.keys({
|
|
data : {
|
|
url : '/user/root',
|
|
method : 'POST',
|
|
time : 234,
|
|
code : 200
|
|
},
|
|
at : new Date(),
|
|
process : PROCESS_ARCH
|
|
});
|
|
|
|
process.on('uncaughtException', function(e) {
|
|
console.log(e.stack);
|
|
process.exit(1);
|
|
});
|
|
|
|
describe('PM2 BUS / RPC', function() {
|
|
this.timeout(5000);
|
|
|
|
var pm2 = new PM2.custom({
|
|
independent : true,
|
|
cwd : __dirname + '/../fixtures/interface'
|
|
});
|
|
var pm2_bus;
|
|
|
|
after(function(done) {
|
|
pm2.destroy(done);
|
|
});
|
|
|
|
before(function(done) {
|
|
pm2.connect(function() {
|
|
pm2.launchBus(function(err, bus) {
|
|
pm2_bus = bus;
|
|
setTimeout(done, 1000);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Events', function() {
|
|
afterEach(function(done) {
|
|
pm2_bus.off('*');
|
|
|
|
pm2.delete('all', function(err, ret) {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should (process:event) when start process get online event and start event with right properties', function(done) {
|
|
var plan = new Plan(2, done);
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
console.log(event);
|
|
if (event == 'process:event') {
|
|
event.should.eql('process:event');
|
|
data.should.have.properties(PROCESS_EVENT);
|
|
data.process.should.have.properties(PROCESS_ARCH);
|
|
plan.ok(true);
|
|
}
|
|
});
|
|
|
|
pm2.start('./child.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
it('should (log:out log:err)', function(done) {
|
|
var plan = new Plan(2, done);
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
if (event == 'log:out') {
|
|
event.should.eql('log:out');
|
|
|
|
data.should.have.properties(LOG_EVENT);
|
|
plan.ok(true);
|
|
}
|
|
if (event == 'log:err') {
|
|
event.should.eql('log:err');
|
|
|
|
data.should.have.properties(LOG_EVENT);
|
|
plan.ok(true);
|
|
}
|
|
});
|
|
|
|
pm2.start('./log_out.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
it('should (process:exception)', function(done) {
|
|
var plan = new Plan(1, done);
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
if (event == 'process:exception') {
|
|
data.should.have.properties(ERROR_EVENT);
|
|
data.process.should.have.properties(PROCESS_ARCH);
|
|
plan.ok('true');
|
|
}
|
|
});
|
|
|
|
pm2.start('./process_exception.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
it('should (human:event)', function(done) {
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
|
|
if (event == 'human:event') {
|
|
data.should.have.properties(HUMAN_EVENT);
|
|
data.process.should.have.properties(PROCESS_ARCH);
|
|
return done();
|
|
}
|
|
});
|
|
|
|
pm2.start('./human_event.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
it('should (process:exception) with promise', function(done) {
|
|
var plan = new Plan(1, done);
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
if (event == 'process:exception') {
|
|
data.should.have.properties(ERROR_EVENT);
|
|
data.process.should.have.properties(PROCESS_ARCH);
|
|
plan.ok(true);
|
|
}
|
|
});
|
|
|
|
pm2.start('./promise_rejection.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
it('should (transaction:http)', function(done) {
|
|
|
|
pm2_bus.on('*', function(event, data) {
|
|
if (event == 'http:transaction') {
|
|
data.should.have.properties(TRANSACTION_HTTP_EVENT);
|
|
data.process.should.have.properties(PROCESS_ARCH);
|
|
done();
|
|
}
|
|
});
|
|
|
|
pm2.start('./http_transaction.js', {}, function(err, data) {
|
|
should(err).be.null();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|