log4js-node/test/tap/server-test.js
2018-07-19 08:13:59 +10:00

71 lines
2.3 KiB
JavaScript

const test = require('tap').test;
const net = require('net');
const log4js = require('../../lib/log4js');
const vcr = require('../../lib/appenders/recording');
const levels = require('../../lib/levels');
const LoggingEvent = require('../../lib/LoggingEvent');
log4js.configure({
appenders: {
vcr: { type: 'recording' },
tcp: { type: 'tcp-server', port: 5678 }
},
categories: {
default: { appenders: ['vcr'], level: 'debug' }
}
});
// give the socket a chance to start up
test('TCP Server', (batch) => {
batch.test('should listen for TCP messages and re-send via process.send', (t) => {
setTimeout(() => {
const socket = net.connect(5678, () => {
socket.write(
`${(new LoggingEvent('test-category', levels.INFO, ['something'], {})).serialise()
}__LOG4JS__${
(new LoggingEvent('test-category', levels.INFO, ['something else'], {})).serialise()
}__LOG4JS__some nonsense__LOG4JS__{"some":"json"}__LOG4JS__`,
() => {
socket.end();
setTimeout(() => {
log4js.shutdown(() => {
const logs = vcr.replay();
t.equal(logs.length, 4);
t.match(logs[0], {
data: ['something'],
categoryName: 'test-category',
level: { levelStr: 'INFO' },
context: {}
});
t.match(logs[1], {
data: ['something else'],
categoryName: 'test-category',
level: { levelStr: 'INFO' },
context: {}
});
t.match(logs[2], {
data: ['Unable to parse log:', 'some nonsense', 'because: ', SyntaxError],
categoryName: 'log4js',
level: { levelStr: 'ERROR' },
context: {}
});
t.match(logs[3], {
data: ['Unable to parse log:', '{"some":"json"}', 'because: ', TypeError],
categoryName: 'log4js',
level: { levelStr: 'ERROR' },
context: {}
});
t.end();
});
}, 100);
}
);
});
socket.unref();
}, 100);
batch.end();
});
});