123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { config } from '@grafana/runtime';
- import { CloudWatchMetricsQuery } from '../types';
- import { migrateAliasPatterns } from './metricQueryMigrations';
- describe('metricQueryMigrations', () => {
- interface TestScenario {
- description?: string;
- alias: string;
- label?: string;
- }
- describe('migrateAliasPatterns', () => {
- const baseQuery: CloudWatchMetricsQuery = {
- statistic: 'Average',
- refId: 'A',
- id: '',
- region: 'us-east-2',
- namespace: 'AWS/EC2',
- period: '300',
- alias: '',
- metricName: 'CPUUtilization',
- dimensions: {},
- matchExact: false,
- expression: '',
- };
- describe('when feature is enabled', () => {
- describe('and label was not previously migrated', () => {
- const cases: TestScenario[] = [
- { description: 'Metric name', alias: '{{metric}}', label: "${PROP('MetricName')}" },
- { description: 'Trim pattern', alias: '{{ metric }}', label: "${PROP('MetricName')}" },
- { description: 'Namespace', alias: '{{namespace}}', label: "${PROP('Namespace')}" },
- { description: 'Period', alias: '{{period}}', label: "${PROP('Period')}" },
- { description: 'Region', alias: '{{region}}', label: "${PROP('Region')}" },
- { description: 'Statistic', alias: '{{stat}}', label: "${PROP('Stat')}" },
- { description: 'Label', alias: '{{label}}', label: '${LABEL}' },
- {
- description: 'Non-existing alias pattern',
- alias: '{{anything_else}}',
- label: "${PROP('Dim.anything_else')}",
- },
- {
- description: 'Combined patterns',
- alias: 'some {{combination}} of {{label}} and {{metric}}',
- label: "some ${PROP('Dim.combination')} of ${LABEL} and ${PROP('MetricName')}",
- },
- {
- description: 'Combined patterns not trimmed',
- alias: 'some {{combination }}{{ label}} and {{metric}}',
- label: "some ${PROP('Dim.combination')}${LABEL} and ${PROP('MetricName')}",
- },
- ];
- test.each(cases)('given old alias %p, it should be migrated to label: %p', ({ alias, label }) => {
- config.featureToggles.cloudWatchDynamicLabels = true;
- const testQuery = { ...baseQuery, alias };
- const result = migrateAliasPatterns(testQuery);
- expect(result.label).toBe(label);
- expect(result.alias).toBe(alias);
- });
- });
- describe('and label was previously migrated', () => {
- const cases: TestScenario[] = [
- {
- alias: '',
- label: "${PROP('MetricName')}",
- },
- { alias: '{{metric}}', label: "${PROP('Period')}" },
- { alias: '{{namespace}}', label: '' },
- ];
- test.each(cases)('it should not be migrated once again', ({ alias, label }) => {
- config.featureToggles.cloudWatchDynamicLabels = true;
- const testQuery = { ...baseQuery, alias, label };
- const result = migrateAliasPatterns(testQuery);
- expect(result.label).toBe(label);
- expect(result.alias).toBe(alias);
- });
- });
- });
- describe('when feature is disabled', () => {
- const cases: TestScenario[] = [
- { alias: '{{period}}', label: "${PROP('MetricName')}" },
- { alias: '{{metric}}', label: '' },
- { alias: '', label: "${PROP('MetricName')}" },
- { alias: '', label: undefined },
- ];
- test.each(cases)('should not migrate alias', ({ alias, label }) => {
- config.featureToggles.cloudWatchDynamicLabels = false;
- const testQuery = { ...baseQuery, alias: `${alias}` };
- if (label !== undefined) {
- testQuery.label = label;
- }
- const result = migrateAliasPatterns(testQuery);
- expect(result.label).toBe(label);
- expect(result.alias).toBe(alias);
- });
- });
- });
- });
|