2017-07-05 14:06:26 +02:00

203 lines
6.2 KiB
JavaScript

process.env.NODE_ENV = 'test';
var PM2 = require('../..');
var should = require('should');
var fs = require('fs');
var path = require('path');
describe('Programmatic log feature test', function() {
var proc1 = null;
var procs = [];
var pm2 = new PM2.custom({
cwd : __dirname + '/../fixtures'
});
before(function(done) {
this.timeout(5000);
pm2.delete('all', function() {
done();
});
});
after(function(done) {
pm2.disconnect(done);
});
afterEach(function(done) {
pm2.delete('all', done);
});
describe('Log merging', function() {
it('should process HAS post fixed logs with id (merge_logs: false)', function(done) {
pm2.start({
script: './echo.js',
error_file : 'error-echo.log',
out_file : 'out-echo.log'
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
out_file.should.containEql('out-echo-0.log');
err_file.should.containEql('error-echo-0.log');
setTimeout(function() {
fs.readFileSync(out_file).toString().should.containEql('echo.js');
fs.readFileSync(err_file).toString().should.containEql('echo.js-error');
done();
}, 500);
});
});
it('should process HAS NOT post fixed logs with id (merge_logs: true)', function(done) {
pm2.start({
script: './echo.js',
error_file : 'error-echo.log',
out_file : 'out-echo.log',
merge_logs : true
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
out_file.should.containEql('out-echo.log');
err_file.should.containEql('error-echo.log');
setTimeout(function() {
fs.readFileSync(out_file).toString().should.containEql('echo.js');
fs.readFileSync(err_file).toString().should.containEql('echo.js-error');
done();
}, 500);
});
});
it('should process HAS NOT post fixed logs with id and MERGED FILE (merge_logs: true)', function(done) {
pm2.start({
script: './echo.js',
error_file : 'error-echo.log',
out_file : 'out-echo.log',
log_file : 'merged.log',
merge_logs : true
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
var log_file = procs[0].pm2_env.pm_log_path;
out_file.should.containEql('out-echo.log');
err_file.should.containEql('error-echo.log');
log_file.should.containEql('merged.log');
setTimeout(function() {
fs.readFileSync(out_file).toString().should.containEql('echo.js');
fs.readFileSync(err_file).toString().should.containEql('echo.js-error');
fs.readFileSync(log_file).toString().should.containEql('echo.js-error');
fs.readFileSync(log_file).toString().should.containEql('echo.js');
done();
}, 500);
});
});
});
describe('Log timestamp', function() {
it('should every file be timestamped', function(done) {
pm2.start({
script : './echo.js',
error_file : 'error-echo.log',
out_file : 'out-echo.log',
log_file : 'merged.log',
merge_logs : true,
log_date_format : 'YYYY-MM-DD HH:mm Z'
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
var log_file = procs[0].pm2_env.pm_log_path;
out_file.should.containEql('out-echo.log');
err_file.should.containEql('error-echo.log');
log_file.should.containEql('merged.log');
setTimeout(function() {
fs.readFileSync(out_file).toString().should.containEql('20');
fs.readFileSync(err_file).toString().should.containEql('20');
fs.readFileSync(log_file).toString().should.containEql('20');
done();
}, 500);
});
});
});
describe('Disable logs', function() {
it('should start app with log disabled', function(done) {
try {
fs.writeFileSync(path.resolve('./test/fixtures/error-echo-disabled.log'), '');
fs.writeFileSync(path.resolve('./test/fixtures/out-echo-disabled.log'), '');
fs.writeFileSync(path.resolve('./test/fixtures/merged.log'), '');
} catch(e) {}
pm2.start({
script : './echo.js',
error_file : 'error-echo-disabled.log',
out_file : 'out-echo-disabled.log',
log_file : 'merged.log',
disable_logs : true,
merge_logs : true
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
var log_file = procs[0].pm2_env.pm_log_path;
setTimeout(function() {
fs.readFileSync(err_file).toString().should.eql('');
fs.readFileSync(out_file).toString().should.eql('');
done();
}, 500);
});
});
it('should start app with log disabled', function(done) {
try {
fs.writeFileSync(path.resolve('./test/fixtures/error-echo-disabled.log'), '');
fs.writeFileSync(path.resolve('./test/fixtures/out-echo-disabled.log'), '');
fs.writeFileSync(path.resolve('./test/fixtures/merged.log'), '');
} catch(e) {
}
pm2.start({
script : './echo.js',
error_file : '/dev/null',
out_file : '/dev/null',
log_file : '/dev/null',
disable_logs : true,
merge_logs : true
}, function(err, procs) {
should(err).be.null();
var out_file = procs[0].pm2_env.pm_out_log_path;
var err_file = procs[0].pm2_env.pm_err_log_path;
setTimeout(function() {
fs.readFileSync(err_file).toString().should.eql('');
fs.readFileSync(out_file).toString().should.eql('');
done();
}, 500);
});
});
});
});