Loki: Update mocks and move into __mocks__ (#79993)

Loki: Update mocks and move into __mocks__
This commit is contained in:
Ivana Huckova 2024-01-05 17:11:58 +01:00 committed by GitHub
parent a8fb01a502
commit c48e2c7d0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 114 additions and 134 deletions

View File

@ -2,8 +2,9 @@ import { AbstractLabelOperator, DataFrame, TimeRange, dateTime, getDefaultTimeRa
import { config } from '@grafana/runtime';
import LanguageProvider from './LanguageProvider';
import { createLokiDatasource } from './__mocks__/datasource';
import { createMetadataRequest } from './__mocks__/metadataRequest';
import { DEFAULT_MAX_LINES_SAMPLE, LokiDatasource } from './datasource';
import { createLokiDatasource, createMetadataRequest } from './mocks';
import {
extractLogParserFromDataFrame,
extractLabelKeysFromDataFrame,

View File

@ -15,7 +15,7 @@ import {
LOKI_LOG_CONTEXT_PRESERVED_LABELS,
SHOULD_INCLUDE_PIPELINE_OPERATIONS,
} from './LogContextProvider';
import { createLokiDatasource } from './mocks';
import { createLokiDatasource } from './__mocks__/datasource';
import { LokiQuery } from './types';
const defaultLanguageProviderMock = {

View File

@ -3,8 +3,9 @@ import { firstValueFrom } from 'rxjs';
import { dateTime, getDefaultTimeRange } from '@grafana/data';
import { LokiVariableSupport } from './LokiVariableSupport';
import { createLokiDatasource } from './__mocks__/datasource';
import { createMetadataRequest } from './__mocks__/metadataRequest';
import { LokiDatasource } from './datasource';
import { createLokiDatasource, createMetadataRequest } from './mocks';
import { LokiVariableQueryType } from './types';
describe('LokiVariableSupport', () => {

View File

@ -0,0 +1,59 @@
import { DataSourceInstanceSettings, DataSourceSettings, PluginType } from '@grafana/data';
import { TemplateSrv } from '@grafana/runtime';
import { LokiDatasource } from '../datasource';
import { LokiOptions } from '../types';
export function createDefaultConfigOptions() {
return {
jsonData: { maxLines: '531' },
secureJsonFields: {},
} as DataSourceSettings<LokiOptions>;
}
const defaultTemplateSrvMock = {
replace: (input: string) => input,
getVariables: () => [],
};
export function createLokiDatasource(
templateSrvMock: Partial<TemplateSrv> = defaultTemplateSrvMock,
settings: Partial<DataSourceInstanceSettings<LokiOptions>> = {}
): LokiDatasource {
const customSettings: DataSourceInstanceSettings<LokiOptions> = {
url: 'myloggingurl',
id: 0,
uid: '',
type: '',
name: '',
meta: {
id: 'id',
name: 'name',
type: PluginType.datasource,
module: '',
baseUrl: '',
info: {
author: {
name: 'Test',
},
description: '',
links: [],
logos: {
large: '',
small: '',
},
screenshots: [],
updated: '',
version: '',
},
},
readOnly: false,
jsonData: {
maxLines: '20',
},
access: 'direct',
...settings,
};
return new LokiDatasource(customSettings, templateSrvMock as TemplateSrv);
}

View File

@ -1,113 +1,4 @@
import {
DataFrame,
DataFrameType,
DataSourceInstanceSettings,
DataSourceSettings,
FieldType,
PluginType,
toUtc,
} from '@grafana/data';
import { TemplateSrv } from '@grafana/runtime';
import { getMockDataSource } from '../../../features/datasources/__mocks__';
import { LokiDatasource } from './datasource';
import { LokiOptions } from './types';
export function createDefaultConfigOptions(): DataSourceSettings<LokiOptions> {
return getMockDataSource<LokiOptions>({
jsonData: { maxLines: '531' },
});
}
const rawRange = {
from: toUtc('2018-04-25 10:00'),
to: toUtc('2018-04-25 11:00'),
};
const defaultTimeSrvMock = {
timeRange: jest.fn().mockReturnValue({
from: rawRange.from,
to: rawRange.to,
raw: rawRange,
}),
};
const defaultTemplateSrvMock = {
replace: (input: string) => input,
getVariables: () => [],
};
export function createLokiDatasource(
templateSrvMock: Partial<TemplateSrv> = defaultTemplateSrvMock,
settings: Partial<DataSourceInstanceSettings<LokiOptions>> = {},
timeSrvStub = defaultTimeSrvMock
): LokiDatasource {
const customSettings: DataSourceInstanceSettings<LokiOptions> = {
url: 'myloggingurl',
id: 0,
uid: '',
type: '',
name: '',
meta: {
id: 'id',
name: 'name',
type: PluginType.datasource,
module: '',
baseUrl: '',
info: {
author: {
name: 'Test',
},
description: '',
links: [],
logos: {
large: '',
small: '',
},
screenshots: [],
updated: '',
version: '',
},
},
readOnly: false,
jsonData: {
maxLines: '20',
},
access: 'direct',
...settings,
};
// @ts-expect-error
return new LokiDatasource(customSettings, templateSrvMock, timeSrvStub);
}
export function createMetadataRequest(
labelsAndValues: Record<string, string[]>,
series?: Record<string, Array<Record<string, string>>>
) {
// added % to allow urlencoded labelKeys. Note, that this is not confirm with Loki, as loki does not allow specialcharacters in labelKeys, but needed for tests.
const lokiLabelsAndValuesEndpointRegex = /^label\/([%\w]*)\/values/;
const lokiSeriesEndpointRegex = /^series/;
const lokiLabelsEndpoint = 'labels';
const labels = Object.keys(labelsAndValues);
return async function metadataRequestMock(url: string, params?: Record<string, string | number>) {
if (url === lokiLabelsEndpoint) {
return labels;
} else {
const labelsMatch = url.match(lokiLabelsAndValuesEndpointRegex);
const seriesMatch = url.match(lokiSeriesEndpointRegex);
if (labelsMatch) {
return labelsAndValues[labelsMatch[1]] || [];
} else if (seriesMatch && series && params) {
return series[params['match[]']] || [];
} else {
throw new Error(`Unexpected url error, ${url}`);
}
}
};
}
import { DataFrame, DataFrameType, FieldType } from '@grafana/data';
export function getMockFrames() {
const logFrameA: DataFrame = {

View File

@ -0,0 +1,26 @@
export function createMetadataRequest(
labelsAndValues: Record<string, string[]>,
series?: Record<string, Array<Record<string, string>>>
) {
// added % to allow urlencoded labelKeys. Note, that this is not confirm with Loki, as loki does not allow specialcharacters in labelKeys, but needed for tests.
const lokiLabelsAndValuesEndpointRegex = /^label\/([%\w]*)\/values/;
const lokiSeriesEndpointRegex = /^series/;
const lokiLabelsEndpoint = 'labels';
const labels = Object.keys(labelsAndValues);
return async function metadataRequestMock(url: string, params?: Record<string, string | number>) {
if (url === lokiLabelsEndpoint) {
return labels;
} else {
const labelsMatch = url.match(lokiLabelsAndValuesEndpointRegex);
const seriesMatch = url.match(lokiSeriesEndpointRegex);
if (labelsMatch) {
return labelsAndValues[labelsMatch[1]] || [];
} else if (seriesMatch && series && params) {
return series[params['match[]']] || [];
} else {
throw new Error(`Unexpected url error, ${url}`);
}
}
};
}

View File

@ -6,7 +6,7 @@ import React from 'react';
import { CoreApp } from '@grafana/data';
import { QueryEditorMode } from 'app/plugins/datasource/prometheus/querybuilder/shared/types';
import { createLokiDatasource } from '../mocks';
import { createLokiDatasource } from '../__mocks__/datasource';
import { EXPLAIN_LABEL_FILTER_CONTENT } from '../querybuilder/components/LokiQueryBuilderExplained';
import { LokiQuery, LokiQueryType } from '../types';

View File

@ -4,7 +4,7 @@ import React from 'react';
import { CoreApp } from '@grafana/data';
import { createLokiDatasource } from '../mocks';
import { createLokiDatasource } from '../__mocks__/datasource';
import { testIds as regularTestIds } from './LokiQueryEditor';
import { LokiQueryEditorByApp } from './LokiQueryEditorByApp';

View File

@ -3,7 +3,7 @@ import React, { ComponentProps } from 'react';
import { dateTime } from '@grafana/data';
import { createLokiDatasource } from '../mocks';
import { createLokiDatasource } from '../__mocks__/datasource';
import { LokiQueryField } from './LokiQueryField';

View File

@ -5,7 +5,7 @@ import { selectOptionInTest } from 'test/helpers/selectOptionInTest';
import { TemplateSrv } from '@grafana/runtime';
import { createLokiDatasource } from '../mocks';
import { createLokiDatasource } from '../__mocks__/datasource';
import { LokiVariableQueryType } from '../types';
import { LokiVariableQueryEditor, Props } from './VariableQueryEditor';

View File

@ -1,7 +1,7 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { MonacoQueryFieldWrapper, Props } from './MonacoQueryFieldWrapper';

View File

@ -1,7 +1,7 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import MonacoQueryField from './MonacoQueryField';
import { Props } from './MonacoQueryFieldProps';

View File

@ -1,8 +1,8 @@
import { HistoryItem, dateTime } from '@grafana/data';
import LokiLanguageProvider from '../../../LanguageProvider';
import { createLokiDatasource } from '../../../__mocks__/datasource';
import { LokiDatasource } from '../../../datasource';
import { createLokiDatasource } from '../../../mocks';
import { LokiQuery } from '../../../types';
import { CompletionDataProvider } from './CompletionDataProvider';

View File

@ -2,8 +2,8 @@ import { dateTime } from '@grafana/data';
import { Monaco, monacoTypes } from '@grafana/ui/src';
import LokiLanguageProvider from '../../../LanguageProvider';
import { createLokiDatasource } from '../../../__mocks__/datasource';
import { LokiDatasource } from '../../../datasource';
import { createLokiDatasource } from '../../../mocks';
import { CompletionDataProvider } from './CompletionDataProvider';
import { calculateRange } from './completionUtils';

View File

@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { createDefaultConfigOptions } from '../mocks';
import { createDefaultConfigOptions } from '../__mocks__/datasource';
import { AlertingSettings } from './AlertingSettings';

View File

@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { createDefaultConfigOptions } from '../mocks';
import { createDefaultConfigOptions } from '../__mocks__/datasource';
import { ConfigEditor } from './ConfigEditor';

View File

@ -31,8 +31,9 @@ import {
} from '@grafana/runtime';
import { LokiVariableSupport } from './LokiVariableSupport';
import { createLokiDatasource } from './__mocks__/datasource';
import { createMetadataRequest } from './__mocks__/metadataRequest';
import { LokiDatasource, REF_ID_DATA_SAMPLES } from './datasource';
import { createLokiDatasource, createMetadataRequest } from './mocks';
import { runSplitQuery } from './querySplitting';
import { parseToNodeNamesArray } from './queryUtils';
import { LokiOptions, LokiQuery, LokiQueryType, LokiVariableQueryType, SupportingQueryType } from './types';

View File

@ -3,10 +3,11 @@ import { getQueryOptions } from 'test/helpers/getQueryOptions';
import { dateTime, LoadingState } from '@grafana/data';
import { createLokiDatasource } from './__mocks__/datasource';
import { getMockFrames } from './__mocks__/frames';
import { LokiDatasource } from './datasource';
import * as logsTimeSplit from './logsTimeSplitting';
import * as metricTimeSplit from './metricTimeSplitting';
import { createLokiDatasource, getMockFrames } from './mocks';
import { runSplitQuery } from './querySplitting';
import { trackGroupedQueries } from './tracking';
import { LokiQuery, LokiQueryType } from './types';

View File

@ -1,6 +1,6 @@
import { String } from '@grafana/lezer-logql';
import { createLokiDatasource } from './mocks';
import { createLokiDatasource } from './__mocks__/datasource';
import {
getHighlighterExpressionsFromQuery,
getLokiQueryType,

View File

@ -1,8 +1,8 @@
import { render, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiDatasource } from '../../datasource';
import { createLokiDatasource } from '../../mocks';
import { LokiQuery } from '../../types';
import { LabelBrowserModal, Props } from './LabelBrowserModal';

View File

@ -6,7 +6,7 @@ import { getSelectParent } from 'test/helpers/selectOptionInTest';
import { dateTime } from '@grafana/data';
import { MISSING_LABEL_FILTER_ERROR_MESSAGE } from '../../../prometheus/querybuilder/shared/LabelFilters';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiOperationId, LokiVisualQuery } from '../types';
import { LokiQueryBuilder } from './LokiQueryBuilder';

View File

@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event';
import React from 'react';
import { getSelectParent } from 'test/helpers/selectOptionInTest';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiQueryBuilderContainer } from './LokiQueryBuilderContainer';

View File

@ -1,7 +1,7 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiQuery } from '../../types';
import { EXPLAIN_LABEL_FILTER_CONTENT } from './LokiQueryBuilderExplained';

View File

@ -2,7 +2,7 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { createLokiDatasource } from '../../mocks';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiVisualQueryBinary } from '../types';
import { NestedQuery, Props as NestedQueryProps } from './NestedQuery';

View File

@ -2,8 +2,8 @@ import { render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiDatasource } from '../../datasource';
import { createLokiDatasource } from '../../mocks';
import { LokiVisualQuery, LokiVisualQueryBinary } from '../types';
import { EXPLAIN_LABEL_FILTER_CONTENT } from './LokiQueryBuilderExplained';

View File

@ -9,8 +9,8 @@ import {
QueryBuilderOperationParamDef,
} from 'app/plugins/datasource/prometheus/querybuilder/shared/types';
import { createLokiDatasource } from '../../__mocks__/datasource';
import { LokiDatasource } from '../../datasource';
import { createLokiDatasource } from '../../mocks';
import { LokiOperationId } from '../types';
import { UnwrapParamEditor } from './UnwrapParamEditor';

View File

@ -2,7 +2,7 @@ import { cloneDeep } from 'lodash';
import { DataQueryResponse, QueryResultMetaStat, DataFrame, FieldType } from '@grafana/data';
import { getMockFrames } from './mocks';
import { getMockFrames } from './__mocks__/frames';
import {
dataFrameHasLevelLabel,
dataFrameHasLokiError,