Skip to content

Commit 91d9b90

Browse files
committed
tests: Update test suite
* Added tests for autocompleters * Upgraded Checkmk test image to 2.4.0-latest as one missing autocomplete has been added (greater than p12)
1 parent 8cda4ea commit 91d9b90

File tree

6 files changed

+129
-4
lines changed

6 files changed

+129
-4
lines changed

tests/checkmk-docker-hooks/post-start/post-configure-checkmk.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ python3 -m pip install watchdog
88
export GRRD_FORK=1
99
python3 -u /docker-entrypoint.d/post-start/generate_random_rrd_data.py
1010
11+
# Wait until Checkmk API responds our requests
12+
until curl -f -s -u cmkadmin:abskjfdalkdhjbld http://127.0.0.1:5000/cmk/check_mk/api/1.0/version
13+
do
14+
echo Wait until Checkmk API is ready...
15+
sleep 5
16+
done
17+
1118
# Create hosts, discover services, and create automation user
1219
python3 -u /docker-entrypoint.d/post-start/post-configure-checkmk.py
1320
__EOF__

tests/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
checkmk:
3-
image: checkmk/check-mk-cloud:${GRAFANA_VERSION:-2.3.0-latest}
3+
image: checkmk/${CHECKMK_IMAGE:-check-mk-cloud}:${CHECKMK_VERSION:-2.4.0-latest}
44
container_name: checkmk
55
ports:
66
- '12345:5000'

tests/e2e/constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ export enum FilterTypes {
9696
HOST_LABELS = 'Host labels',
9797
SERVICE = 'Service',
9898
SERVICE_REGEX = 'Service regex',
99+
HOST_IN_GROUP = 'Host in group',
100+
HOST_TAGS = 'Host tags',
101+
SERVICE_IN_GROUP = 'Service in group',
99102
}
100103

101104
export enum Services {
@@ -110,6 +113,7 @@ export enum Graphs {
110113
UPTIME = 'Uptime',
111114
HOSTS_UP = 'Up hosts',
112115
CPU_UTILIZATION = 'CPU utilization',
116+
CPU_TIME_IN_USER_SPACE = 'CPU time in user space',
113117
}
114118

115119
export enum GraphTypes {

tests/e2e/lib/grafana_rest_api.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import { assert } from 'console';
44
import config from '../config';
55
import { CmkEdition } from '../constants';
66

7-
// import { wait } from './util';
8-
97
let requestContext: APIRequestContext;
108

119
(async () => {
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
// @ts-check
2+
import { expect, test } from '@grafana/plugin-e2e';
3+
4+
import config from '../config';
5+
import { FilterTypes, Graphs, HOSTNAME0, Services } from '../constants';
6+
import { CmkRawQueryEditorPage } from '../pom/CMKRawQueryEditorPage.ts';
7+
import { CmkCEEQueryEditorPage } from '../pom/CmkCEEQueryEditorPage';
8+
9+
const SITE = 'All sites';
10+
11+
test.describe('Comercial editions tests', () => {
12+
test.slow();
13+
test('Filtering autocompleters', async ({ panelEditPage, page, selectors }) => {
14+
const panelPage = new CmkCEEQueryEditorPage(page, selectors, panelEditPage);
15+
await panelPage.addPanel();
16+
17+
const filters = [
18+
FilterTypes.HOSTNAME,
19+
FilterTypes.HOST_IN_GROUP,
20+
FilterTypes.HOST_LABELS,
21+
FilterTypes.SERVICE,
22+
FilterTypes.SERVICE_IN_GROUP,
23+
];
24+
25+
for (const flt of filters) {
26+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
27+
await panelPage.addFilter(flt);
28+
const response = await responsePromise;
29+
expect(response.ok(), `${flt} autocompleter`).toBeTruthy();
30+
}
31+
32+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
33+
await panelPage.addFilter(FilterTypes.HOST_TAGS, 'cmk-oac-minus-button-Host tags');
34+
const response = await responsePromise;
35+
expect(response.ok(), `${FilterTypes.HOST_TAGS} autocompleter`).toBeTruthy();
36+
});
37+
38+
test('Predefined graph autocompleters', async ({ panelEditPage, page, selectors }) => {
39+
const panelPage = new CmkCEEQueryEditorPage(page, selectors, panelEditPage);
40+
await panelPage.addPanel();
41+
42+
await panelPage.filterByHostname(HOSTNAME0);
43+
await panelPage.filterByService(Services.CHECK_MK);
44+
45+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
46+
await panelPage.selectPredefinedGraph(Graphs.TIME_BY_PHASE);
47+
const response = await responsePromise;
48+
expect(response.ok(), 'Predefined graph autocompleter').toBeTruthy();
49+
});
50+
51+
test('Single metric autocompleters', async ({ panelEditPage, page, selectors }) => {
52+
const panelPage = new CmkCEEQueryEditorPage(page, selectors, panelEditPage);
53+
await panelPage.addPanel();
54+
55+
await panelPage.filterByHostname(HOSTNAME0);
56+
await panelPage.filterByService(Services.CHECK_MK);
57+
58+
await panelPage.selectSingleMetricGraphType();
59+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
60+
await panelPage.selectSingleMetricGraph(Graphs.CPU_TIME_IN_USER_SPACE);
61+
const response = await responsePromise;
62+
expect(response.ok(), 'Single metric autocompleter').toBeTruthy();
63+
});
64+
});
65+
66+
test.describe('Raw edition tests', () => {
67+
test.slow();
68+
test('Filtering autocompleters', async ({ panelEditPage, page, selectors }) => {
69+
const panelPage = new CmkRawQueryEditorPage(page, selectors, panelEditPage);
70+
await panelPage.addPanel();
71+
72+
let responsePromise = page.waitForResponse('**/objects/autocomplete/**');
73+
await panelPage.filterBySite(SITE);
74+
let response = await responsePromise;
75+
expect(response.ok(), 'Service autocompleter').toBeTruthy();
76+
77+
responsePromise = page.waitForResponse('**/objects/autocomplete/**');
78+
await panelPage.filterByHostname(HOSTNAME0);
79+
response = await responsePromise;
80+
expect(response.ok(), 'Host name autocompleter').toBeTruthy();
81+
82+
responsePromise = page.waitForResponse('**/objects/autocomplete/**');
83+
await panelPage.filterByService(Services.CHECK_MK);
84+
response = await responsePromise;
85+
expect(response.ok(), 'Service autocompleter').toBeTruthy();
86+
});
87+
88+
test('Predefined graph autocompleters', async ({ panelEditPage, page, selectors }) => {
89+
const panelPage = new CmkRawQueryEditorPage(page, selectors, panelEditPage);
90+
await panelPage.addPanel();
91+
92+
await panelPage.filterBySite(SITE);
93+
await panelPage.filterByHostname(HOSTNAME0);
94+
await panelPage.filterByService(Services.CHECK_MK);
95+
96+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
97+
await panelPage.selectPredefinedGraph(Graphs.TIME_BY_PHASE);
98+
const response = await responsePromise;
99+
expect(response.ok(), 'Predefined graph autocompleter').toBeTruthy();
100+
});
101+
102+
test('Single metric autocompleters', async ({ panelEditPage, page, selectors }) => {
103+
const panelPage = new CmkRawQueryEditorPage(page, selectors, panelEditPage);
104+
await panelPage.addPanel();
105+
106+
await panelPage.filterBySite(SITE);
107+
await panelPage.filterByHostname(HOSTNAME0);
108+
await panelPage.filterByService(Services.CHECK_MK);
109+
110+
await panelPage.selectSingleMetricGraphType();
111+
const responsePromise = page.waitForResponse('**/objects/autocomplete/**');
112+
await panelPage.selectSingleMetricGraph(Graphs.CPU_TIME_IN_USER_SPACE);
113+
const response = await responsePromise;
114+
expect(response.ok(), 'Single metric autocompleter').toBeTruthy();
115+
});
116+
});

tests/e2e/tests/global.setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { expect, test } from '@grafana/plugin-e2e';
1+
import { test } from '@grafana/plugin-e2e';
22

33
import config from '../config';
44
import { CmkEdition, HOSTNAME0, HOSTNAME1 } from '../constants';

0 commit comments

Comments
 (0)