153 lines
4.2 KiB
JavaScript
153 lines
4.2 KiB
JavaScript
import * as monitorHelper from '~/helpers/monitor_helper';
|
|
|
|
describe('monitor helper', () => {
|
|
const defaultConfig = { default: true, name: 'default name' };
|
|
const name = 'data name';
|
|
const series = [[1, 1], [2, 2], [3, 3]];
|
|
const data = ({ metric = { default_name: name }, values = series } = {}) => [{ metric, values }];
|
|
|
|
describe('makeDataSeries', () => {
|
|
const expectedDataSeries = [
|
|
{
|
|
...defaultConfig,
|
|
data: series,
|
|
},
|
|
];
|
|
|
|
it('converts query results to data series', () => {
|
|
expect(monitorHelper.makeDataSeries(data({ metric: {} }), defaultConfig)).toEqual(
|
|
expectedDataSeries,
|
|
);
|
|
});
|
|
|
|
it('returns an empty array if no query results exist', () => {
|
|
expect(monitorHelper.makeDataSeries([], defaultConfig)).toEqual([]);
|
|
});
|
|
|
|
it('handles multi-series query results', () => {
|
|
const expectedData = { ...expectedDataSeries[0], name: 'default name: data name' };
|
|
|
|
expect(monitorHelper.makeDataSeries([...data(), ...data()], defaultConfig)).toEqual([
|
|
expectedData,
|
|
expectedData,
|
|
]);
|
|
});
|
|
|
|
it('excludes NaN values', () => {
|
|
expect(
|
|
monitorHelper.makeDataSeries(
|
|
data({ metric: {}, values: [[1, 1], [2, NaN]] }),
|
|
defaultConfig,
|
|
),
|
|
).toEqual([{ ...expectedDataSeries[0], data: [[1, 1]] }]);
|
|
});
|
|
|
|
it('updates series name from templates', () => {
|
|
const config = {
|
|
...defaultConfig,
|
|
name: '{{cmd}}',
|
|
};
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[{ metric: { cmd: 'brpop' }, values: series }],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toEqual('brpop');
|
|
});
|
|
|
|
it('supports a multi metric label template expression', () => {
|
|
const config = {
|
|
...defaultConfig,
|
|
name: '',
|
|
};
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[
|
|
{
|
|
metric: {
|
|
backend: 'HA Server',
|
|
frontend: 'BA Server',
|
|
app: 'prometheus',
|
|
instance: 'k8 cluster 1',
|
|
},
|
|
values: series,
|
|
},
|
|
],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toBe(
|
|
'backend: HA Server, frontend: BA Server, app: prometheus, instance: k8 cluster 1',
|
|
);
|
|
});
|
|
|
|
it('supports space-padded template expressions', () => {
|
|
const config = {
|
|
...defaultConfig,
|
|
name: 'backend: {{ backend }}',
|
|
};
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[{ metric: { backend: 'HA Server' }, values: series }],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toEqual('backend: HA Server');
|
|
});
|
|
|
|
it('supports repeated template variables', () => {
|
|
const config = { ...defaultConfig, name: '{{cmd}}, {{cmd}}' };
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[{ metric: { cmd: 'brpop' }, values: series }],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toEqual('brpop, brpop');
|
|
});
|
|
|
|
it('supports hyphenated template variables', () => {
|
|
const config = { ...defaultConfig, name: 'expired - {{ test-attribute }}' };
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[{ metric: { 'test-attribute': 'test-attribute-value' }, values: series }],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toEqual('expired - test-attribute-value');
|
|
});
|
|
|
|
it('updates multiple series names from templates', () => {
|
|
const config = {
|
|
...defaultConfig,
|
|
name: '{{job}}: {{cmd}}',
|
|
};
|
|
|
|
const [result] = monitorHelper.makeDataSeries(
|
|
[{ metric: { cmd: 'brpop', job: 'redis' }, values: series }],
|
|
config,
|
|
);
|
|
|
|
expect(result.name).toEqual('redis: brpop');
|
|
});
|
|
|
|
it('updates name for each series', () => {
|
|
const config = {
|
|
...defaultConfig,
|
|
name: '{{cmd}}',
|
|
};
|
|
|
|
const [firstSeries, secondSeries] = monitorHelper.makeDataSeries(
|
|
[
|
|
{ metric: { cmd: 'brpop' }, values: series },
|
|
{ metric: { cmd: 'zrangebyscore' }, values: series },
|
|
],
|
|
config,
|
|
);
|
|
|
|
expect(firstSeries.name).toEqual('brpop');
|
|
expect(secondSeries.name).toEqual('zrangebyscore');
|
|
});
|
|
});
|
|
});
|