mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 18:13:32 -06:00
* Basic implementation of getLogsVolumeQuery method * Add todos * Add a switcher to automatically load logs volume * De-scope dismissing logs volume panel * De-scope logs volume query cancellation * Remove todo * Aggregate logs volume components in single panel * Show logs volume only when it's available * Aggregate logs volume by level * Simplify aggregation * Handle no logs volume data * Add error handling * Do not show auto-load logs volume switcher when loading logs volume is not available * Remove old logs volume graph * Clean up * Make getting data provider more generic * Provide complete logs volume data (error, isLoading) * Display more specific error message * Add missing props to mocks * Remove setRequest method * Mark getQueryRelatedDataProviders as internal * Add missing dataQueryRequest and add a todo * Remove redundant loading state * Do not mutate existing queries * Apply fix for zooming-in from main * Post-merge fixes * Create collection for data provider results * Use more generic names * Move aggregation logic to Loki logs volume provider * Move LogsVolume to common types * Update tests * Post-merge fixes * Fix mapping related data values * Simplify prop mappings * Add docs * Fix property name * Clean-up * Mark new types as internal * Reduce number of providers to logs volume only * Simplify data structure to DataQueryResponse * Move Logs Volume panel to a separate component * Test logsVolumeProvider.ts * Add observable version of datasource mock * Test getLogsVolumeDataProvider method * Test LogsVolumePanel * Test logs volume reducer * Clean up * Clean up * Fix test * Use sum by to use level field directly * Fix strict type errors * Fix strict type errors * Use "logs" instead of "unknown" if only one level was detected * Add docs about logs volume * Rename histogramRequest to logsVolumeRequest * Use LogsVolumeContentWrapper all content types * Move `autoLoadLogsVolume` local storage handling * Fix strict error * Move getting autoLoadLogsVolume to initial state * Cancel current logs volume subscription * Test cancelling subscriptions * Update docs/sources/datasources/loki.md Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> * Update packages/grafana-data/src/types/explore.ts Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> * Inline container styles * Ensure logs volume is aggregated per each subscription separately * Simplify logs volume provider * Type-guard support for logs volume provider * Simplify event handlers to avoid casting * Clean up and docs * Move auto-load switcher to logs volume panel * Fix test * Move DataSourceWithLogsVolumeSupport to avoid cross referencing * Simplify interface * Bring back old histogram and hide the new one behind a feature flag * Add missing props to logs histogram panel * Clean up the provider when it's not supported * Simplify storing autoLoadLogsVolume * Remove docs * Update packages/grafana-data/src/types/logsVolume.ts Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com> * Skip dataframes without fields (instant queries) * Revert styles changes * Revert styles changes * Add release tag Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com> Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
105 lines
2.4 KiB
TypeScript
105 lines
2.4 KiB
TypeScript
import React from 'react';
|
|
import {
|
|
DataSourceApi,
|
|
LoadingState,
|
|
toUtc,
|
|
DataQueryError,
|
|
DataQueryRequest,
|
|
CoreApp,
|
|
createTheme,
|
|
} from '@grafana/data';
|
|
import { ExploreId } from 'app/types/explore';
|
|
import { shallow } from 'enzyme';
|
|
import { Explore, Props } from './Explore';
|
|
import { scanStopAction } from './state/query';
|
|
import { SecondaryActions } from './SecondaryActions';
|
|
|
|
const dummyProps: Props = {
|
|
logsResult: undefined,
|
|
changeSize: jest.fn(),
|
|
datasourceInstance: {
|
|
meta: {
|
|
metrics: true,
|
|
logs: true,
|
|
},
|
|
components: {
|
|
QueryEditorHelp: {},
|
|
},
|
|
} as DataSourceApi,
|
|
datasourceMissing: false,
|
|
exploreId: ExploreId.left,
|
|
loading: false,
|
|
modifyQueries: jest.fn(),
|
|
scanStart: jest.fn(),
|
|
scanStopAction: scanStopAction,
|
|
setQueries: jest.fn(),
|
|
queryKeys: [],
|
|
isLive: false,
|
|
syncedTimes: false,
|
|
updateTimeRange: jest.fn(),
|
|
graphResult: [],
|
|
absoluteRange: {
|
|
from: 0,
|
|
to: 0,
|
|
},
|
|
timeZone: 'UTC',
|
|
queryResponse: {
|
|
state: LoadingState.NotStarted,
|
|
series: [],
|
|
request: ({
|
|
requestId: '1',
|
|
dashboardId: 0,
|
|
interval: '1s',
|
|
panelId: 1,
|
|
scopedVars: {
|
|
apps: {
|
|
value: 'value',
|
|
},
|
|
},
|
|
targets: [
|
|
{
|
|
refId: 'A',
|
|
},
|
|
],
|
|
timezone: 'UTC',
|
|
app: CoreApp.Explore,
|
|
startTime: 0,
|
|
} as unknown) as DataQueryRequest,
|
|
error: {} as DataQueryError,
|
|
timeRange: {
|
|
from: toUtc('2019-01-01 10:00:00'),
|
|
to: toUtc('2019-01-01 16:00:00'),
|
|
raw: {
|
|
from: 'now-6h',
|
|
to: 'now',
|
|
},
|
|
},
|
|
},
|
|
addQueryRow: jest.fn(),
|
|
theme: createTheme(),
|
|
showMetrics: true,
|
|
showLogs: true,
|
|
showTable: true,
|
|
showTrace: true,
|
|
showNodeGraph: true,
|
|
splitOpen: (() => {}) as any,
|
|
autoLoadLogsVolume: false,
|
|
logsVolumeData: undefined,
|
|
logsVolumeDataProvider: undefined,
|
|
loadLogsVolumeData: () => {},
|
|
changeAutoLogsVolume: () => {},
|
|
};
|
|
|
|
describe('Explore', () => {
|
|
it('should render component', () => {
|
|
const wrapper = shallow(<Explore {...dummyProps} />);
|
|
expect(wrapper).toMatchSnapshot();
|
|
});
|
|
|
|
it('renders SecondaryActions and add row button', () => {
|
|
const wrapper = shallow(<Explore {...dummyProps} />);
|
|
expect(wrapper.find(SecondaryActions)).toHaveLength(1);
|
|
expect(wrapper.find(SecondaryActions).props().addQueryRowButtonHidden).toBe(false);
|
|
});
|
|
});
|