2022-09-06 20:35:54 +08:00
|
|
|
import { AbstractLabelOperator, AbstractQuery } from '@grafana/data';
|
2022-04-22 21:33:13 +08:00
|
|
|
|
2022-09-20 17:34:07 +08:00
|
|
|
import LanguageProvider from './LanguageProvider';
|
2025-07-07 15:23:27 +08:00
|
|
|
import { ElasticsearchDataQuery } from './dataquery.gen';
|
2022-04-22 21:33:13 +08:00
|
|
|
import { ElasticDatasource } from './datasource';
|
2022-09-06 20:35:54 +08:00
|
|
|
import { createElasticDatasource } from './mocks';
|
2021-02-24 05:58:07 +08:00
|
|
|
|
2025-07-07 15:23:27 +08:00
|
|
|
const baseLogsQuery: Partial<ElasticsearchDataQuery> = {
|
2021-02-24 05:58:07 +08:00
|
|
|
metrics: [{ type: 'logs', id: '1' }],
|
|
|
|
};
|
|
|
|
|
2021-12-14 21:36:47 +08:00
|
|
|
describe('transform abstract query to elasticsearch query', () => {
|
2022-09-06 20:35:54 +08:00
|
|
|
let datasource: ElasticDatasource;
|
|
|
|
beforeEach(() => {
|
2023-10-24 16:25:23 +08:00
|
|
|
datasource = createElasticDatasource();
|
2022-09-06 20:35:54 +08:00
|
|
|
});
|
|
|
|
|
2021-12-14 21:36:47 +08:00
|
|
|
it('With some labels', () => {
|
2022-09-06 20:35:54 +08:00
|
|
|
const instance = new LanguageProvider(datasource);
|
2021-12-14 21:36:47 +08:00
|
|
|
const abstractQuery: AbstractQuery = {
|
2020-09-08 18:34:11 +08:00
|
|
|
refId: 'bar',
|
2021-12-14 21:36:47 +08:00
|
|
|
labelMatchers: [
|
|
|
|
{ name: 'label1', operator: AbstractLabelOperator.Equal, value: 'value1' },
|
|
|
|
{ name: 'label2', operator: AbstractLabelOperator.NotEqual, value: 'value2' },
|
|
|
|
{ name: 'label3', operator: AbstractLabelOperator.EqualRegEx, value: 'value3' },
|
|
|
|
{ name: 'label4', operator: AbstractLabelOperator.NotEqualRegEx, value: 'value4' },
|
|
|
|
],
|
2020-09-08 18:34:11 +08:00
|
|
|
};
|
2021-12-14 21:36:47 +08:00
|
|
|
const result = instance.importFromAbstractQuery(abstractQuery);
|
2021-02-24 05:58:07 +08:00
|
|
|
|
2021-12-14 21:36:47 +08:00
|
|
|
expect(result).toEqual({
|
|
|
|
...baseLogsQuery,
|
2022-12-22 23:06:30 +08:00
|
|
|
query: 'label1:"value1" AND -label2:"value2" AND label3:/value3/ AND -label4:/value4/',
|
2021-12-14 21:36:47 +08:00
|
|
|
refId: abstractQuery.refId,
|
|
|
|
});
|
2020-09-08 18:34:11 +08:00
|
|
|
});
|
2021-02-24 05:58:07 +08:00
|
|
|
|
2021-12-14 21:36:47 +08:00
|
|
|
it('Empty query', () => {
|
2022-09-06 20:35:54 +08:00
|
|
|
const instance = new LanguageProvider(datasource);
|
2021-12-14 21:36:47 +08:00
|
|
|
const abstractQuery = { labelMatchers: [], refId: 'foo' };
|
|
|
|
const result = instance.importFromAbstractQuery(abstractQuery);
|
2021-02-24 05:58:07 +08:00
|
|
|
|
2021-12-14 21:36:47 +08:00
|
|
|
expect(result).toEqual({
|
|
|
|
...baseLogsQuery,
|
|
|
|
query: '',
|
|
|
|
refId: abstractQuery.refId,
|
|
|
|
});
|
2020-09-08 18:34:11 +08:00
|
|
|
});
|
|
|
|
});
|