Fix rate function hint for series with nulls

pull/13528/head
David Kaltschmidt 7 years ago
parent b0172427b1
commit 107bef2d6d
  1. 7
      public/app/plugins/datasource/prometheus/query_hints.ts
  2. 8
      public/app/plugins/datasource/prometheus/specs/query_hints.test.ts

@ -30,13 +30,14 @@ export function getQueryHints(series: any[], datasource?: any): any[] {
const datapoints: number[][] = s.datapoints;
if (query.indexOf('rate(') === -1 && datapoints.length > 1) {
let increasing = false;
const monotonic = datapoints.filter(dp => dp[0] !== null).every((dp, index) => {
const nonNullData = datapoints.filter(dp => dp[0] !== null);
const monotonic = nonNullData.every((dp, index) => {
if (index === 0) {
return true;
}
increasing = increasing || dp[0] > datapoints[index - 1][0];
increasing = increasing || dp[0] > nonNullData[index - 1][0];
// monotonic?
return dp[0] >= datapoints[index - 1][0];
return dp[0] >= nonNullData[index - 1][0];
});
if (increasing && monotonic) {
const simpleMetric = query.trim().match(/^\w+$/);

@ -15,6 +15,14 @@ describe('getQueryHints()', () => {
expect(hints).toEqual([null]);
});
it('returns no hint for a flat series', () => {
const series = [
{ datapoints: [[null, 1000], [23, 1001], [null, 1002], [23, 1003]], query: 'metric', responseIndex: 0 },
];
const hints = getQueryHints(series);
expect(hints).toEqual([null]);
});
it('returns a rate hint for a monotonously increasing series', () => {
const series = [{ datapoints: [[23, 1000], [24, 1001]], query: 'metric', responseIndex: 0 }];
const hints = getQueryHints(series);

Loading…
Cancel
Save