Loki: Fix `getParserAndLabelKeys` not returning parsed labels (#80029)

pull/79990/head^2
Sven Grossmann 1 year ago committed by GitHub
parent f6a46744a6
commit 91e49ec0d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      public/app/plugins/datasource/loki/LanguageProvider.test.ts
  2. 5
      public/app/plugins/datasource/loki/LanguageProvider.ts

@ -371,6 +371,7 @@ describe('Query imports', () => {
const extractLogParserFromDataFrameMock = jest.mocked(extractLogParserFromDataFrame);
const extractedLabelKeys = ['extracted', 'label'];
const structuredMetadataKeys = ['structured', 'metadata'];
const parsedKeys = ['parsed', 'label'];
const unwrapLabelKeys = ['unwrap', 'labels'];
beforeEach(() => {
@ -379,8 +380,12 @@ describe('Query imports', () => {
jest.mocked(extractLabelKeysFromDataFrame).mockImplementation((_, type) => {
if (type === LabelType.Indexed || !type) {
return extractedLabelKeys;
} else {
} else if (type === LabelType.StructuredMetadata) {
return structuredMetadataKeys;
} else if (type === LabelType.Parsed) {
return parsedKeys;
} else {
return [];
}
});
jest.mocked(extractUnwrapLabelKeysFromDataFrame).mockReturnValue(unwrapLabelKeys);
@ -391,7 +396,7 @@ describe('Query imports', () => {
extractLogParserFromDataFrameMock.mockReturnValueOnce({ hasLogfmt: false, hasJSON: true, hasPack: false });
expect(await languageProvider.getParserAndLabelKeys('{place="luna"}')).toEqual({
extractedLabelKeys,
extractedLabelKeys: [...extractedLabelKeys, ...parsedKeys],
unwrapLabelKeys,
structuredMetadataKeys,
hasJSON: true,
@ -405,7 +410,7 @@ describe('Query imports', () => {
extractLogParserFromDataFrameMock.mockReturnValueOnce({ hasLogfmt: true, hasJSON: false, hasPack: false });
expect(await languageProvider.getParserAndLabelKeys('{place="luna"}')).toEqual({
extractedLabelKeys,
extractedLabelKeys: [...extractedLabelKeys, ...parsedKeys],
unwrapLabelKeys,
structuredMetadataKeys,
hasJSON: false,

@ -297,7 +297,10 @@ export default class LokiLanguageProvider extends LanguageProvider {
const { hasLogfmt, hasJSON, hasPack } = extractLogParserFromDataFrame(series[0]);
return {
extractedLabelKeys: extractLabelKeysFromDataFrame(series[0]),
extractedLabelKeys: [
...extractLabelKeysFromDataFrame(series[0], LabelType.Indexed),
...extractLabelKeysFromDataFrame(series[0], LabelType.Parsed),
],
structuredMetadataKeys: extractLabelKeysFromDataFrame(series[0], LabelType.StructuredMetadata),
unwrapLabelKeys: extractUnwrapLabelKeysFromDataFrame(series[0]),
hasJSON,

Loading…
Cancel
Save