linkerd2/web/app/test/MetricUtilsTest.js

72 lines
2.6 KiB
JavaScript

import _ from 'lodash';
import deployRollupFixtures from './fixtures/deployRollup.json';
import { expect } from 'chai';
import multiDeployRollupFixtures from './fixtures/multiDeployRollup.json';
import timeseriesFixtures from './fixtures/singleDeployTs.json';
import { processRollupMetrics, processTimeseriesMetrics } from '../js/components/util/MetricUtils.js';
describe('MetricUtils', () => {
describe('processTsWithLatencyBreakdown', () => {
it('Converts raw metrics to plottable timeseries data', () => {
let deployName = 'test/potato3';
let histograms = ['P50', 'P95', 'P99'];
let result = processTimeseriesMetrics(timeseriesFixtures.metrics, "targetDeploy")[deployName];
_.each(histograms, quantile => {
_.each(result["LATENCY"][quantile], datum => {
expect(datum.timestamp).not.to.be.empty;
expect(datum.value).not.to.be.empty;
expect(datum.label).to.equal(quantile);
});
});
_.each(result["REQUEST_RATE"], datum => {
expect(datum.timestamp).not.to.be.empty;
expect(datum.value).to.exist;
});
_.each(result["SUCCESS_RATE"], datum => {
expect(datum.timestamp).not.to.be.empty;
expect(datum.value).to.exist;
});
});
});
describe('processMetrics', () => {
it('Extracts the values from the nested raw rollup response', () => {
let result = processRollupMetrics(deployRollupFixtures.metrics, "targetDeploy");
let expectedResult = [
{
name: 'test/potato3',
requestRate: 6.1,
successRate: 0.3770491803278688,
latency: {
P95: 953,
P99: 990,
P50: 537
},
added: true
}
];
expect(result).to.deep.equal(expectedResult);
});
it('Extracts the specified entity metrics in the rollup', () => {
let helloResult = processRollupMetrics(multiDeployRollupFixtures.metrics, "targetDeploy");
let helloPodResult = processRollupMetrics(multiDeployRollupFixtures.metrics, "targetPod");
let meshResult = processRollupMetrics(multiDeployRollupFixtures.metrics, "component");
let pathResult = processRollupMetrics(multiDeployRollupFixtures.metrics, "path");
expect(helloResult).to.have.length(1);
expect(helloPodResult).to.have.length(1);
expect(meshResult).to.have.length(1);
expect(pathResult).to.have.length(1);
expect(helloResult[0].name).to.equal("default/hello");
expect(helloPodResult[0].name).to.equal("default/hello-12f3f-1e2aa");
expect(meshResult[0].name).to.equal("mesh");
expect(pathResult[0].name).to.equal("/Get/Hello");
});
});
});