CloudWatch: Append query type to the request id (#109068)
This commit is contained in:
@@ -4,7 +4,7 @@ import { CustomVariableModel, DataFrame, DataSourceInstanceSettings } from '@gra
|
||||
import { BackendDataSourceResponse, toDataQueryResponse } from '@grafana/runtime';
|
||||
|
||||
import { CloudWatchLogsQueryRunner } from '../query-runner/CloudWatchLogsQueryRunner';
|
||||
import { CloudWatchJsonData, CloudWatchLogsQueryStatus, CloudWatchLogsRequest } from '../types';
|
||||
import { CloudWatchJsonData, CloudWatchLogsQueryStatus } from '../types';
|
||||
|
||||
import { CloudWatchSettings, setupMockedTemplateService } from './CloudWatchDataSource';
|
||||
|
||||
@@ -52,19 +52,3 @@ export function genMockFrames(numResponses: number): DataFrame[] {
|
||||
|
||||
return mockFrames;
|
||||
}
|
||||
|
||||
export function genMockCloudWatchLogsRequest(overrides: Partial<CloudWatchLogsRequest> = {}) {
|
||||
const request: CloudWatchLogsRequest = {
|
||||
queryString: 'fields @timestamp, @message | sort @timestamp desc',
|
||||
logGroupNames: ['log-group-name-1', 'log-group-name-2'],
|
||||
logGroups: [
|
||||
{ arn: 'log-group-arn-1', name: 'log-group-name-1' },
|
||||
{ arn: 'log-group-arn-2', name: 'log-group-name-2' },
|
||||
],
|
||||
refId: 'A',
|
||||
region: 'us-east-1',
|
||||
...overrides,
|
||||
};
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ export function setupMockedMetricsQueryRunner({
|
||||
range: TimeRangeMock,
|
||||
rangeRaw: { from: '1483228800', to: '1483232400' },
|
||||
targets: [],
|
||||
requestId: '',
|
||||
requestId: 'mockId',
|
||||
interval: '',
|
||||
intervalMs: 0,
|
||||
scopedVars: {},
|
||||
|
||||
+12
@@ -64,6 +64,18 @@ describe('CloudWatchLogsQueryRunner', () => {
|
||||
});
|
||||
|
||||
describe('handleLogQueries', () => {
|
||||
it('appends -logs to the requestId', async () => {
|
||||
const { runner, queryMock } = setupMockedLogsQueryRunner();
|
||||
|
||||
const request = {
|
||||
...LogsRequestMock,
|
||||
requestId: 'mockId',
|
||||
};
|
||||
await expect(runner.handleLogQueries(LogsRequestMock.targets, request, queryMock)).toEmitValuesWith(() => {
|
||||
expect(queryMock.mock.calls[0][0].requestId).toEqual('mockId-logs');
|
||||
});
|
||||
});
|
||||
|
||||
it('should request to start each query and then request to get the query results', async () => {
|
||||
const { runner } = setupMockedLogsQueryRunner();
|
||||
|
||||
|
||||
@@ -420,7 +420,7 @@ export class CloudWatchLogsQueryRunner extends CloudWatchRequest {
|
||||
...options,
|
||||
range,
|
||||
skipQueryCache: true,
|
||||
requestId: options?.requestId || '', // dummy
|
||||
requestId: options?.requestId + '-logs' || '', // adding -logs to prevent requestId from matching metric queries from the same panel
|
||||
interval: options?.interval || '', // dummy
|
||||
intervalMs: options?.intervalMs || 1, // dummy
|
||||
scopedVars: options?.scopedVars || {}, // dummy
|
||||
|
||||
+30
@@ -255,6 +255,36 @@ describe('CloudWatchMetricsQueryRunner', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should append -metrics to the request id', async () => {
|
||||
const queries: CloudWatchMetricsQuery[] = [
|
||||
{
|
||||
id: '',
|
||||
metricQueryType: MetricQueryType.Search,
|
||||
metricEditorMode: MetricEditorMode.Builder,
|
||||
queryMode: 'Metrics',
|
||||
refId: 'A',
|
||||
region: 'us-east-1',
|
||||
namespace: 'AWS/EC2',
|
||||
metricName: 'CPUUtilization',
|
||||
dimensions: {
|
||||
InstanceId: 'i-12345678',
|
||||
},
|
||||
statistic: 'Average',
|
||||
period: '[[period]]',
|
||||
},
|
||||
];
|
||||
|
||||
const { runner, queryMock, request } = setupMockedMetricsQueryRunner({
|
||||
// DataSourceWithBackend runs toDataQueryResponse({response from CW backend})
|
||||
response: toDataQueryResponse(resultsFromBEQuery),
|
||||
variables: [periodIntervalVariable],
|
||||
});
|
||||
|
||||
await expect(runner.handleMetricQueries(queries, request, queryMock)).toEmitValuesWith(() => {
|
||||
expect(queryMock.mock.calls[0][0].requestId).toEqual('mockId-metrics');
|
||||
});
|
||||
});
|
||||
|
||||
it('should return series list', async () => {
|
||||
const { runner, request, queryMock } = setupMockedMetricsQueryRunner({
|
||||
// DataSourceWithBackend runs toDataQueryResponse({response from CW backend})
|
||||
|
||||
@@ -77,6 +77,7 @@ export class CloudWatchMetricsQueryRunner extends CloudWatchRequest {
|
||||
|
||||
const request: DataQueryRequest<CloudWatchQuery> = {
|
||||
...options,
|
||||
requestId: options.requestId + '-metrics', // adding -metrics to prevent requestId from matching logs queries sent from the same panel
|
||||
targets: validMetricsQueries,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user