118 lines
3.3 KiB
TypeScript
118 lines
3.3 KiB
TypeScript
import { MatcherOperator, ROUTES_META_SYMBOL, Route } from 'app/plugins/datasource/alertmanager/types';
|
|
|
|
import { ComGithubGrafanaGrafanaPkgApisAlertingNotificationsV0Alpha1Route } from '../../openapi/routesApi.gen';
|
|
import { ROOT_ROUTE_NAME } from '../../utils/k8s/constants';
|
|
|
|
import { createKubernetesRoutingTreeSpec, k8sSubRouteToRoute, routeToK8sSubRoute } from './useNotificationPolicyRoute';
|
|
|
|
test('k8sSubRouteToRoute', () => {
|
|
const input: ComGithubGrafanaGrafanaPkgApisAlertingNotificationsV0Alpha1Route = {
|
|
continue: false,
|
|
group_by: ['label1'],
|
|
group_interval: '5m',
|
|
group_wait: '30s',
|
|
matchers: [{ label: 'label1', type: '=', value: 'value1' }],
|
|
mute_time_intervals: ['mt-1'],
|
|
receiver: 'my-receiver',
|
|
repeat_interval: '4h',
|
|
routes: [
|
|
{
|
|
receiver: 'receiver2',
|
|
matchers: [{ label: 'label2', type: '!=', value: 'value2' }],
|
|
},
|
|
],
|
|
};
|
|
|
|
const expected: Route = {
|
|
continue: false,
|
|
group_by: ['label1'],
|
|
group_interval: '5m',
|
|
group_wait: '30s',
|
|
matchers: undefined, // matchers -> object_matchers
|
|
object_matchers: [['label1', MatcherOperator.equal, 'value1']],
|
|
mute_time_intervals: ['mt-1'],
|
|
receiver: 'my-receiver',
|
|
repeat_interval: '4h',
|
|
routes: [
|
|
{
|
|
receiver: 'receiver2',
|
|
matchers: undefined,
|
|
object_matchers: [['label2', MatcherOperator.notEqual, 'value2']],
|
|
routes: undefined,
|
|
},
|
|
],
|
|
};
|
|
|
|
expect(k8sSubRouteToRoute(input)).toStrictEqual(expected);
|
|
});
|
|
|
|
test('routeToK8sSubRoute', () => {
|
|
const input: Route = {
|
|
continue: false,
|
|
group_by: ['label1'],
|
|
group_interval: '5m',
|
|
group_wait: '30s',
|
|
matchers: undefined, // matchers -> object_matchers
|
|
object_matchers: [['label1', MatcherOperator.equal, 'value1']],
|
|
mute_time_intervals: ['mt-1'],
|
|
receiver: 'my-receiver',
|
|
repeat_interval: '4h',
|
|
routes: [
|
|
{
|
|
receiver: 'receiver2',
|
|
matchers: undefined,
|
|
object_matchers: [['label2', MatcherOperator.notEqual, 'value2']],
|
|
},
|
|
],
|
|
};
|
|
|
|
const expected: ComGithubGrafanaGrafanaPkgApisAlertingNotificationsV0Alpha1Route = {
|
|
continue: false,
|
|
group_by: ['label1'],
|
|
group_interval: '5m',
|
|
group_wait: '30s',
|
|
matchers: [{ label: 'label1', type: '=', value: 'value1' }],
|
|
mute_time_intervals: ['mt-1'],
|
|
receiver: 'my-receiver',
|
|
repeat_interval: '4h',
|
|
routes: [
|
|
{
|
|
receiver: 'receiver2',
|
|
matchers: [{ label: 'label2', type: '!=', value: 'value2' }],
|
|
routes: undefined,
|
|
},
|
|
],
|
|
};
|
|
|
|
expect(routeToK8sSubRoute(input)).toStrictEqual(expected);
|
|
});
|
|
|
|
test('createKubernetesRoutingTreeSpec', () => {
|
|
const route: Route = {
|
|
continue: true,
|
|
group_by: ['alertname'],
|
|
matchers: undefined,
|
|
object_matchers: [['severity', MatcherOperator.equal, 'critical']],
|
|
mute_time_intervals: ['interval-1'],
|
|
receiver: 'default-receiver',
|
|
repeat_interval: '4h',
|
|
routes: [
|
|
{
|
|
continue: false,
|
|
receiver: 'nested-receiver',
|
|
object_matchers: [['team', MatcherOperator.equal, 'frontend']],
|
|
group_wait: '30s',
|
|
group_interval: '5m',
|
|
},
|
|
],
|
|
[ROUTES_META_SYMBOL]: {
|
|
resourceVersion: 'abc123',
|
|
},
|
|
};
|
|
|
|
const tree = createKubernetesRoutingTreeSpec(route);
|
|
|
|
expect(tree.metadata.name).toBe(ROOT_ROUTE_NAME);
|
|
expect(tree).toMatchSnapshot();
|
|
});
|