1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-28 00:06:53 +01:00
unleash.unleash/lib/metrics.test.js
2018-11-28 16:14:48 +01:00

59 lines
1.7 KiB
JavaScript

'use strict';
const { test } = require('ava');
const { EventEmitter } = require('events');
const eventBus = new EventEmitter();
const eventStore = new EventEmitter();
const clientMetricsStore = new EventEmitter();
const { REQUEST_TIME } = require('./events');
const { FEATURE_UPDATED } = require('./event-type');
const { startMonitoring } = require('./metrics');
const { register: prometheusRegister } = require('prom-client');
test.before(() => {
startMonitoring(true, eventBus, eventStore, clientMetricsStore);
});
test('should collect metrics for requests', t => {
eventBus.emit(REQUEST_TIME, {
path: 'somePath',
method: 'GET',
statusCode: 200,
time: 1337,
});
const metrics = prometheusRegister.metrics();
t.regex(
metrics,
/http_request_duration_milliseconds{quantile="0\.99",path="somePath",method="GET",status="200"} 1337/
);
});
test('should collect metrics for updated toggles', t => {
eventStore.emit(FEATURE_UPDATED, {
data: { name: 'TestToggle' },
});
const metrics = prometheusRegister.metrics();
t.regex(metrics, /feature_toggle_update_total{toggle="TestToggle"} 1/);
});
test('should collect metrics for client metric reports', t => {
clientMetricsStore.emit('metrics', {
bucket: {
toggles: {
TestToggle: {
yes: 10,
no: 5,
},
},
},
});
const metrics = prometheusRegister.metrics();
t.regex(
metrics,
/feature_toggle_usage_total{toggle="TestToggle",active="true"} 10\nfeature_toggle_usage_total{toggle="TestToggle",active="false"} 5/
);
});