mirror of https://github.com/linkerd/linkerd2.git
72 lines
2.6 KiB
JavaScript
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");
|
|
});
|
|
});
|
|
});
|