mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
Loki Query Splitting: Ignore empty queries like hidden queries (#72376)
Loki query splitting: ignore empty queries like hidden queries
This commit is contained in:
parent
51b199e986
commit
6f3dfb2d8b
@ -170,26 +170,30 @@ describe('runSplitQuery()', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Hidden queries', () => {
|
||||
const request = getQueryOptions<LokiQuery>({
|
||||
targets: [
|
||||
{ expr: 'count_over_time({a="b"}[1m])', refId: 'A', hide: true },
|
||||
{ expr: '{a="b"}', refId: 'B' },
|
||||
],
|
||||
range,
|
||||
});
|
||||
describe('Hidden and empty queries', () => {
|
||||
beforeAll(() => {
|
||||
jest.spyOn(logsTimeSplit, 'splitTimeRange').mockReturnValue([]);
|
||||
jest.spyOn(metricTimeSplit, 'splitTimeRange').mockReturnValue([]);
|
||||
jest.mocked(trackGroupedQueries).mockClear();
|
||||
jest.useFakeTimers().setSystemTime(new Date('Wed May 17 2023 17:20:12 GMT+0200'));
|
||||
});
|
||||
beforeEach(() => {
|
||||
jest.mocked(logsTimeSplit.splitTimeRange).mockClear();
|
||||
jest.mocked(logsTimeSplit.splitTimeRange).mockClear();
|
||||
jest.mocked(trackGroupedQueries).mockClear();
|
||||
});
|
||||
afterAll(() => {
|
||||
jest.mocked(logsTimeSplit.splitTimeRange).mockRestore();
|
||||
jest.mocked(metricTimeSplit.splitTimeRange).mockRestore();
|
||||
jest.useRealTimers();
|
||||
});
|
||||
test('Ignores hidden queries', async () => {
|
||||
const request = getQueryOptions<LokiQuery>({
|
||||
targets: [
|
||||
{ expr: 'count_over_time({a="b"}[1m])', refId: 'A', hide: true },
|
||||
{ expr: '{a="b"}', refId: 'B' },
|
||||
],
|
||||
range,
|
||||
});
|
||||
await expect(runSplitQuery(datasource, request)).toEmitValuesWith(() => {
|
||||
expect(logsTimeSplit.splitTimeRange).toHaveBeenCalled();
|
||||
expect(metricTimeSplit.splitTimeRange).not.toHaveBeenCalled();
|
||||
@ -214,6 +218,38 @@ describe('runSplitQuery()', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
test('Ignores empty queries', async () => {
|
||||
const request = getQueryOptions<LokiQuery>({
|
||||
targets: [
|
||||
{ expr: 'count_over_time({a="b"}[1m])', refId: 'A' },
|
||||
{ expr: '', refId: 'B' },
|
||||
],
|
||||
range,
|
||||
});
|
||||
await expect(runSplitQuery(datasource, request)).toEmitValuesWith(() => {
|
||||
expect(logsTimeSplit.splitTimeRange).not.toHaveBeenCalled();
|
||||
expect(metricTimeSplit.splitTimeRange).toHaveBeenCalled();
|
||||
expect(trackGroupedQueries).toHaveBeenCalledTimes(1);
|
||||
expect(trackGroupedQueries).toHaveBeenCalledWith(
|
||||
{
|
||||
data: [],
|
||||
state: LoadingState.Done,
|
||||
},
|
||||
[
|
||||
{
|
||||
partition: [],
|
||||
request: {
|
||||
...request,
|
||||
targets: request.targets.filter((query) => query.expr),
|
||||
},
|
||||
},
|
||||
],
|
||||
request,
|
||||
new Date(),
|
||||
{ predefinedOperations: '' }
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Dynamic maxLines for logs requests', () => {
|
||||
|
@ -216,7 +216,7 @@ function querySupportsSplitting(query: LokiQuery) {
|
||||
}
|
||||
|
||||
export function runSplitQuery(datasource: LokiDatasource, request: DataQueryRequest<LokiQuery>) {
|
||||
const queries = request.targets.filter((query) => !query.hide);
|
||||
const queries = request.targets.filter((query) => !query.hide).filter((query) => query.expr);
|
||||
const [nonSplittingQueries, normalQueries] = partition(queries, (query) => !querySupportsSplitting(query));
|
||||
const [logQueries, metricQueries] = partition(normalQueries, (query) => isLogsQuery(query.expr));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user