Files
Andreas Christou b779ce5687 AzureMonitor: Improve Log Analytics query efficiency (#74675)
* Promisify loading schema

- Move schema loading to LogsQueryEditor
- Improve typing
- Switch callbacks to promises

* Update types

* Refactor backend for new props

- Rename intersectTime
- Support setting timeColumn
- Add additional properties to logs request body

* Update applyTemplateVariables

* Update set functions

* Add new TimeManagement component

* Update LogsQueryEditor

* Hardcode timestamp column for traces queries

* Ensure timeColumn is always set for log queries

* Update tests

* Update frontend tests

* Readd type to make migration easier

* Add migration

* Add fake schema

* Use predefined type

* Update checks and defaults

* Add tests

* README updates

* README update

* Type update

* Lint

* More linting and type fixing

* Error silently

* More linting and typing

* Update betterer

* Update test

* Simplify default column setting

* Fix default column setting

* Add tracking

* Review

- Fix typo on comment
- Destructure and remove type assertion
- Break out await into two variables
- Remove lets and rename variable for clarity
2023-09-18 18:38:39 +01:00

123 lines
4.3 KiB
TypeScript

import { DashboardLoadedEvent } from '@grafana/data';
import { reportInteraction } from '@grafana/runtime';
import './module';
import { AzureMonitorQuery } from './types';
jest.mock('@grafana/runtime', () => {
return {
...jest.requireActual('@grafana/runtime'),
reportInteraction: jest.fn(),
getAppEvents: () => ({
subscribe: jest.fn((e, handler) => {
// Trigger test event
handler(
new DashboardLoadedEvent({
dashboardId: 'dashboard123',
orgId: 1,
userId: 2,
grafanaVersion: 'v9.0.0',
queries: {
'grafana-azure-monitor-datasource': [
{
queryType: 'Azure Monitor',
hide: false,
azureMonitor: { resources: ['test_resource_1', 'test_resource_2'] },
},
{ queryType: 'Azure Monitor', hide: true },
{
queryType: 'Azure Log Analytics',
hide: false,
azureLogAnalytics: { resources: ['test_workspace_1', 'test_workspace_2'] },
},
{
queryType: 'Azure Log Analytics',
hide: true,
},
{ queryType: 'Azure Resource Graph', hide: true, subscriptions: ['sub1', 'sub2'] },
{ queryType: 'Azure Resource Graph', hide: false },
{
queryType: 'Azure Traces',
hide: false,
azureTraces: {
resources: ['test-ai-1', 'test-ai-2'],
operationId: 'test-op-id',
resultFormat: 'table',
traceTypes: ['trace'],
filters: [{ filters: 'test-filter', operation: 'eq', property: 'test-property' }],
},
},
{ queryType: 'Azure Traces', hide: true, azureTraces: { resultFormat: 'trace' } },
{ queryType: 'Azure Subscriptions' },
{ queryType: 'Azure Resource Groups' },
{ queryType: 'Azure Namespaces' },
{ queryType: 'Azure Resource Names' },
{ queryType: 'Azure Metric Names' },
{ queryType: 'Azure Workspaces' },
{ queryType: 'Azure Regions' },
{ queryType: 'Grafana Template Variable Function' },
{ queryType: 'unknown' },
{
queryType: 'Azure Log Analytics',
azureLogAnalytics: { dashboardTime: true },
},
{
queryType: 'Azure Log Analytics',
azureLogAnalytics: { dashboardTime: false },
},
] as AzureMonitorQuery[],
},
})
);
}),
}),
};
});
describe('queriesOnInitDashboard', () => {
it('should report a `grafana_ds_azuremonitor_dashboard_loaded` interaction ', () => {
// subscribeDashboardLoadedEvent();
expect(reportInteraction).toHaveBeenCalledWith('grafana_ds_azuremonitor_dashboard_loaded', {
dashboard_id: 'dashboard123',
grafana_version: 'v9.0.0',
org_id: 1,
azure_monitor_queries: 1,
azure_monitor_queries_hidden: 1,
azure_monitor_multiple_resource: 1,
azure_monitor_query: 2,
azure_log_analytics_queries: 3,
azure_log_analytics_queries_hidden: 1,
azure_log_analytics_queries_grafana_time: 1,
azure_log_analytics_queries_query_time: 3,
azure_log_multiple_resource: 1,
azure_log_query: 4,
azure_resource_graph_queries: 1,
azure_resource_graph_queries_hidden: 1,
azure_resource_graph_multiple_subscription: 1,
azure_resource_graph_query: 2,
azure_traces_queries: 1,
azure_traces_queries_hidden: 1,
azure_traces_multiple_resource: 1,
azure_traces_table: 1,
azure_traces_trace: 1,
azure_traces_operation_id_specified: 1,
azure_traces_event_type_specified: 1,
azure_traces_filters: 1,
azure_traces_query: 2,
azure_subscriptions_query: 1,
azure_resource_groups_query: 1,
azure_namespaces_query: 1,
azure_resource_names_query: 1,
azure_metric_names_query: 1,
azure_workspaces_query: 1,
azure_grafana_template_variable_query: 1,
azure_locations_query: 1,
azure_unknown_query: 1,
});
});
});