Skip to content

Commit 3710e4e

Browse files
committed
move dashboard tests to common_tests
1 parent 2fc1d7d commit 3710e4e

5 files changed

Lines changed: 51 additions & 78 deletions

File tree

auditbeat/tests/system/test_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from beat import common_tests
1010

1111

12-
class Test(BaseTest, common_tests.TestExportsMixin):
12+
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
1313
def test_start_stop(self):
1414
"""
1515
Auditbeat starts and stops without error.

filebeat/tests/system/test_base.py

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from beat import common_tests
1111

1212

13-
class Test(BaseTest, common_tests.TestExportsMixin):
13+
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
1414

1515
def test_base(self):
1616
"""
@@ -62,40 +62,3 @@ def test_template_migration(self):
6262
assert self.log_contains('Loaded index template')
6363
assert len(es.cat.templates(name='filebeat-*', h='name')) > 0
6464

65-
@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
66-
@pytest.mark.timeout(5*60, func_only=True)
67-
def test_dashboards(self):
68-
"""
69-
Test that the dashboards can be loaded with `setup --dashboards`
70-
"""
71-
if not self.is_saved_object_api_available():
72-
raise unittest.SkipTest(
73-
"Kibana Saved Objects API is used since 7.15")
74-
75-
shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))
76-
77-
es = Elasticsearch([self.get_elasticsearch_url()])
78-
self.render_config_template(
79-
elasticsearch={"host": self.get_elasticsearch_url()},
80-
kibana={"host": self.get_kibana_url()},
81-
)
82-
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])
83-
84-
assert exit_code == 0, 'Error output: ' + self.get_log()
85-
assert self.log_contains("Kibana dashboards successfully loaded.")
86-
87-
def is_saved_object_api_available(self):
88-
kibana_semver = semver.VersionInfo.parse(self.get_version())
89-
return semver.VersionInfo.parse("7.14.0") <= kibana_semver
90-
91-
def get_version(self):
92-
url = self.get_kibana_url() + "/api/status"
93-
94-
r = requests.get(url)
95-
body = r.json()
96-
version = body["version"]["number"]
97-
98-
return version
99-
100-
def kibana_dir(self):
101-
return os.path.join(self.beat_path, "build", "kibana")

libbeat/tests/system/beat/common_tests.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import json
2+
import os
3+
import pytest
4+
import requests
5+
import semver
6+
import shutil
27
import unittest
38
import yaml
49

10+
from elasticsearch import Elasticsearch
511
from beat.beat import INTEGRATION_TESTS
612

713
# Fail if the exported index pattern is larger than 10MiB
@@ -87,3 +93,43 @@ def test_export_config(self):
8793
output = self.run_export_cmd("config")
8894
yml = yaml.load(output, Loader=yaml.FullLoader)
8995
assert isinstance(yml, dict)
96+
97+
class TestDashboardMixin:
98+
99+
@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
100+
@pytest.mark.timeout(5*60, func_only=True)
101+
def test_dashboards(self):
102+
"""
103+
Test that the dashboards can be loaded with `setup --dashboards`
104+
"""
105+
if not self.is_saved_object_api_available():
106+
raise unittest.SkipTest(
107+
"Kibana Saved Objects API is used since 7.15")
108+
109+
shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))
110+
111+
es = Elasticsearch([self.get_elasticsearch_url()])
112+
self.render_config_template(
113+
elasticsearch={"host": self.get_elasticsearch_url()},
114+
kibana={"host": self.get_kibana_url()},
115+
)
116+
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])
117+
118+
assert exit_code == 0, 'Error output: ' + self.get_log()
119+
assert self.log_contains("Kibana dashboards successfully loaded.")
120+
121+
def is_saved_object_api_available(self):
122+
kibana_semver = semver.VersionInfo.parse(self.get_version())
123+
return semver.VersionInfo.parse("7.14.0") <= kibana_semver
124+
125+
def get_version(self):
126+
url = self.get_kibana_url() + "/api/status"
127+
128+
r = requests.get(url)
129+
body = r.json()
130+
version = body["version"]["number"]
131+
132+
return version
133+
134+
def kibana_dir(self):
135+
return os.path.join(self.beat_path, "build", "kibana")

metricbeat/tests/system/test_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from elasticsearch import Elasticsearch
1515

1616

17-
class Test(BaseTest, common_tests.TestExportsMixin):
17+
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
1818

1919
COMPOSE_SERVICES = ['elasticsearch', 'kibana']
2020

packetbeat/tests/system/test_base.py

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,42 +11,6 @@
1111
from packetbeat import BaseTest
1212

1313

14-
class Test(BaseTest, common_tests.TestExportsMixin):
14+
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
15+
pass
1516

16-
@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
17-
@pytest.mark.timeout(5*60, func_only=True)
18-
def test_dashboards(self):
19-
"""
20-
Test that the dashboards can be loaded with `setup --dashboards`
21-
"""
22-
if not self.is_saved_object_api_available():
23-
raise unittest.SkipTest(
24-
"Kibana Saved Objects API is used since 7.15")
25-
26-
shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))
27-
28-
es = Elasticsearch([self.get_elasticsearch_url()])
29-
self.render_config_template(
30-
elasticsearch={"host": self.get_elasticsearch_url()},
31-
kibana={"host": self.get_kibana_url()},
32-
)
33-
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])
34-
35-
assert exit_code == 0, 'Error output: ' + self.get_log()
36-
assert self.log_contains("Kibana dashboards successfully loaded.")
37-
38-
def is_saved_object_api_available(self):
39-
kibana_semver = semver.VersionInfo.parse(self.get_version())
40-
return semver.VersionInfo.parse("7.14.0") <= kibana_semver
41-
42-
def get_version(self):
43-
url = self.get_kibana_url() + "/api/status"
44-
45-
r = requests.get(url)
46-
body = r.json()
47-
version = body["version"]["number"]
48-
49-
return version
50-
51-
def kibana_dir(self):
52-
return os.path.join(self.beat_path, "build", "kibana")

0 commit comments

Comments
 (0)