QueryStats: Fix comparison of timeranges (#65025)

* fix timerange comparison

* remove import
pull/65028/head
Sven Grossmann 2 years ago committed by GitHub
parent 67fe282f7e
commit 6ae373b8c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      public/app/plugins/datasource/loki/components/stats.test.ts
  2. 6
      public/app/plugins/datasource/loki/components/stats.ts

@ -1,4 +1,4 @@
import { TimeRange } from '@grafana/data'; import { dateTime, getDefaultTimeRange } from '@grafana/data';
import { createLokiDatasource } from '../mocks'; import { createLokiDatasource } from '../mocks';
@ -8,23 +8,25 @@ describe('shouldUpdateStats', () => {
it('should return true if the query has changed', () => { it('should return true if the query has changed', () => {
const query = '{job="grafana"}'; const query = '{job="grafana"}';
const prevQuery = '{job="not-grafana"}'; const prevQuery = '{job="not-grafana"}';
const timerange = { raw: { from: 'now-1h', to: 'now' } } as TimeRange; const timerange = getDefaultTimeRange();
const prevTimerange = { raw: { from: 'now-1h', to: 'now' } } as TimeRange; const prevTimerange = timerange;
expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(true); expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(true);
}); });
it('should return true if the timerange has changed', () => { it('should return true if the timerange has changed', () => {
const query = '{job="grafana"}'; const query = '{job="grafana"}';
const prevQuery = '{job="grafana"}'; const prevQuery = '{job="grafana"}';
const timerange = { raw: { from: 'now-1h', to: 'now' } } as TimeRange; const timerange = getDefaultTimeRange();
const prevTimerange = { raw: { from: 'now-2h', to: 'now' } } as TimeRange; timerange.from = dateTime(Date.now() - 1000000);
const prevTimerange = getDefaultTimeRange();
expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(true); expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(true);
}); });
it('should return false if the query and timerange have not changed', () => { it('should return false if the query and timerange have not changed', () => {
const query = '{job="grafana"}'; const query = '{job="grafana"}';
const prevQuery = '{job="grafana"}'; const prevQuery = '{job="grafana"}';
const timerange = { raw: { from: 'now-1h', to: 'now' } } as TimeRange; const timerange = getDefaultTimeRange();
const prevTimerange = { raw: { from: 'now-1h', to: 'now' } } as TimeRange; const prevTimerange = timerange;
expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(false); expect(shouldUpdateStats(query, prevQuery, timerange, prevTimerange)).toBe(false);
}); });
}); });

@ -18,11 +18,7 @@ export function shouldUpdateStats(
timerange: TimeRange, timerange: TimeRange,
prevTimerange: TimeRange | undefined prevTimerange: TimeRange | undefined
): boolean { ): boolean {
if ( if (query === prevQuery && timerange.from.isSame(prevTimerange?.from) && timerange.to.isSame(prevTimerange?.to)) {
query === prevQuery &&
timerange.raw.from === prevTimerange?.raw.from &&
timerange.raw.to === prevTimerange?.raw.to
) {
return false; return false;
} }

Loading…
Cancel
Save