logzio-nodejs-metrics
Version:
A nodejs implementation for sending metrics to Logz.io
62 lines (53 loc) • 1.59 kB
JavaScript
const nock = require('nock');
const logzioLogger = require('../lib/logzio-nodejs-metrics.js');
const dummyHost = 'logz.io';
const nockHttpAddress = `http://${dummyHost}:8070`;
const token = 'testToken';
const createTestMetrics = function createLogger(options) {
const myOptions = options;
myOptions.token = token;
myOptions.type = 'test-node';
myOptions.debug = true;
myOptions.host = dummyHost;
myOptions.sendIntervalMs = options.sendIntervalMs || 1000;
return logzioLogger.createMetrics(myOptions);
};
const sendLogs = (logger, count = 2) => {
Array(count)
.fill()
.forEach((item, i) => {
logger.send({ cpu: 0.2 + i / 100 }, { host: `my.host.${i}` });
});
};
describe('metrics', () => {
describe('logs a single line', () => {
afterEach(done => {
nock.restore();
nock.cleanAll();
done();
});
it('sends metrics as an object', done => {
const sendIntervalMs = 1;
const logger = createTestMetrics({
sendIntervalMs
});
nock(nockHttpAddress)
.post(`/?token=${token}`)
.reply((uri, body) => {
const parsedBody = body
.split('\n')
.filter(row => row !== '')
.map(metric => JSON.parse(metric));
expect(parsedBody[0]).toEqual(
expect.objectContaining({ metrics: { cpu: 0.2 } })
);
expect(parsedBody[0]).toEqual(
expect.objectContaining({ dim: { host: 'my.host.0' } })
);
done();
});
sendLogs(logger);
logger.close();
});
});
});