Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
jaakkos committed Mar 18, 2023
1 parent 19a7160 commit 18202d2
Showing 1 changed file with 121 additions and 0 deletions.
121 changes: 121 additions & 0 deletions test-bench/winston-3x/test/on_reload_test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@

//
// Requiring `winston-logstash` will expose
// `winston.transports.Logstash`
//
const fs = require('fs');
const net = require('net');
const winston = require('winston');
const LogstashTransport =
require('winston-logstash/lib/winston-logstash-latest');

jest.setTimeout(50000);

function generateRandom(min = 0, max = 100) {
// find diff
const difference = max - min;

// generate random number
let rand = Math.random();

// multiply with difference
rand = Math.floor( rand * difference);

// add with min value
rand = rand + min;

return rand;
}

function delay(t, v) {
return new Promise((resolve) => setTimeout(resolve, t, v));
}

Promise.prototype.delay = function(t) {
return this.then(function(v) {
return delay(t, v);
});
};

const assertClient = (port) => {
const client = new net.Socket();

return new Promise((resolve, rejects) => {
client.connect(port, 'localhost', function() {
console.log('Connected');
// client.write('Hello, server! Love, Client.');
});

client.on('data', function(data) {
resolve(JSON.parse(data));
// console.log('Received: ' + data);
client.destroy(); // kill client after server's response
});

client.on('close', function() {
console.log('Connection closed');
});

client.on('error', (error) => {
rejects(error);
client.destroy();
});
});
};

describe('Ensure connection to logstash is working after config reload', () => {
it('should append for lines after reload too', (done) => {
const portNumber = generateRandom(8888, 8821);
const logger = winston.createLogger({
transports: [
new LogstashTransport({
max_connect_retries: -1,
port: 9777,
node_name: 'my node name',
host: 'localhost',
ssl_enable: false,
ca: __dirname + '/../../../test/support/ssl/ca.cert',
ssl_key: __dirname + '/../../../test/support/ssl/client.key',
ssl_cert: __dirname + '/../../../test/support/ssl/client.cert',
}),
],
});

const valueForAssertion = assertClient(9999);
let expectMessage = 'unsecure logger: ' + Date.now();
logger.log('info', expectMessage);

valueForAssertion.then((value) => {
expect(value.message).toEqual(expectMessage);
expect(value.level).toEqual('info');
})
.then(() => {
const configValue = `
output {
stdout { }
tcp {
id => "tcp-output-${portNumber}"
mode => server
host => "0.0.0.0"
port => ${portNumber}
}
}
`;
fs.writeFileSync('/Users/jaakkos/Development/OpenSource/winston-logstash/test-bench/logstash/logstash/pipeline/empty-for-testing.conf', configValue);
})
.delay(3000)
.then(() => {
const valueForSecondAssertion = assertClient(portNumber);
expectMessage = 'unsecure logger: ' + Date.now();
logger.log('info', expectMessage);

valueForSecondAssertion.then((value) => {
expect(value.message).toEqual(expectMessage);
expect(value.level).toEqual('info');

logger.close();
done();
});
});
});
});

0 comments on commit 18202d2

Please sign in to comment.