CyTube/test/metrics/metricstest.js
2017-08-01 19:29:11 -07:00

38 lines
1.3 KiB
JavaScript

var assert = require('assert');
var JSONFileMetricsReporter = require('../../lib/metrics/jsonfilemetricsreporter').JSONFileMetricsReporter;
var Metrics = require('../../lib/metrics/metrics');
var os = require('os');
var fs = require('fs');
var path = require('path');
describe('JSONFileMetricsReporter', function () {
before(() => {
Metrics.clearReportHooks();
});
describe('#report', function () {
it('reports metrics to file', function (done) {
const outfile = path.resolve(os.tmpdir(),
'metrics' + Math.random() + '.txt');
const reporter = new JSONFileMetricsReporter(outfile);
Metrics.setReporter(reporter);
Metrics.incCounter('abc');
Metrics.incCounter('abc');
Metrics.incCounter('def', 10);
Metrics.addProperty('foo', { bar: 'baz' });
Metrics.flush();
setTimeout(function () {
const contents = String(fs.readFileSync(outfile));
const data = JSON.parse(contents);
assert.strictEqual(data.abc, 2);
assert.strictEqual(data.def, 10);
assert.deepStrictEqual(data.foo, { bar: 'baz' });
fs.unlinkSync(outfile);
done();
}, 100);
});
});
});