Skip to content

Commit

Permalink
move dashboard tests to common_tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kvch committed Oct 20, 2021
1 parent 2fc1d7d commit 3710e4e
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 78 deletions.
2 changes: 1 addition & 1 deletion auditbeat/tests/system/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from beat import common_tests


class Test(BaseTest, common_tests.TestExportsMixin):
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
def test_start_stop(self):
"""
Auditbeat starts and stops without error.
Expand Down
39 changes: 1 addition & 38 deletions filebeat/tests/system/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from beat import common_tests


class Test(BaseTest, common_tests.TestExportsMixin):
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):

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

@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
@pytest.mark.timeout(5*60, func_only=True)
def test_dashboards(self):
"""
Test that the dashboards can be loaded with `setup --dashboards`
"""
if not self.is_saved_object_api_available():
raise unittest.SkipTest(
"Kibana Saved Objects API is used since 7.15")

shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))

es = Elasticsearch([self.get_elasticsearch_url()])
self.render_config_template(
elasticsearch={"host": self.get_elasticsearch_url()},
kibana={"host": self.get_kibana_url()},
)
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])

assert exit_code == 0, 'Error output: ' + self.get_log()
assert self.log_contains("Kibana dashboards successfully loaded.")

def is_saved_object_api_available(self):
kibana_semver = semver.VersionInfo.parse(self.get_version())
return semver.VersionInfo.parse("7.14.0") <= kibana_semver

def get_version(self):
url = self.get_kibana_url() + "/api/status"

r = requests.get(url)
body = r.json()
version = body["version"]["number"]

return version

def kibana_dir(self):
return os.path.join(self.beat_path, "build", "kibana")
46 changes: 46 additions & 0 deletions libbeat/tests/system/beat/common_tests.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import json
import os
import pytest
import requests
import semver
import shutil
import unittest
import yaml

from elasticsearch import Elasticsearch
from beat.beat import INTEGRATION_TESTS

# Fail if the exported index pattern is larger than 10MiB
Expand Down Expand Up @@ -87,3 +93,43 @@ def test_export_config(self):
output = self.run_export_cmd("config")
yml = yaml.load(output, Loader=yaml.FullLoader)
assert isinstance(yml, dict)

class TestDashboardMixin:

@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
@pytest.mark.timeout(5*60, func_only=True)
def test_dashboards(self):
"""
Test that the dashboards can be loaded with `setup --dashboards`
"""
if not self.is_saved_object_api_available():
raise unittest.SkipTest(
"Kibana Saved Objects API is used since 7.15")

shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))

es = Elasticsearch([self.get_elasticsearch_url()])
self.render_config_template(
elasticsearch={"host": self.get_elasticsearch_url()},
kibana={"host": self.get_kibana_url()},
)
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])

assert exit_code == 0, 'Error output: ' + self.get_log()
assert self.log_contains("Kibana dashboards successfully loaded.")

def is_saved_object_api_available(self):
kibana_semver = semver.VersionInfo.parse(self.get_version())
return semver.VersionInfo.parse("7.14.0") <= kibana_semver

def get_version(self):
url = self.get_kibana_url() + "/api/status"

r = requests.get(url)
body = r.json()
version = body["version"]["number"]

return version

def kibana_dir(self):
return os.path.join(self.beat_path, "build", "kibana")
2 changes: 1 addition & 1 deletion metricbeat/tests/system/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from elasticsearch import Elasticsearch


class Test(BaseTest, common_tests.TestExportsMixin):
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):

COMPOSE_SERVICES = ['elasticsearch', 'kibana']

Expand Down
40 changes: 2 additions & 38 deletions packetbeat/tests/system/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,6 @@
from packetbeat import BaseTest


class Test(BaseTest, common_tests.TestExportsMixin):
class Test(BaseTest, common_tests.TestExportsMixin, common_tests.TestDashboardMixin):
pass

@unittest.skipUnless(INTEGRATION_TESTS, "integration test")
@pytest.mark.timeout(5*60, func_only=True)
def test_dashboards(self):
"""
Test that the dashboards can be loaded with `setup --dashboards`
"""
if not self.is_saved_object_api_available():
raise unittest.SkipTest(
"Kibana Saved Objects API is used since 7.15")

shutil.copytree(self.kibana_dir(), os.path.join(self.working_dir, "kibana"))

es = Elasticsearch([self.get_elasticsearch_url()])
self.render_config_template(
elasticsearch={"host": self.get_elasticsearch_url()},
kibana={"host": self.get_kibana_url()},
)
exit_code = self.run_beat(extra_args=["setup", "--dashboards"])

assert exit_code == 0, 'Error output: ' + self.get_log()
assert self.log_contains("Kibana dashboards successfully loaded.")

def is_saved_object_api_available(self):
kibana_semver = semver.VersionInfo.parse(self.get_version())
return semver.VersionInfo.parse("7.14.0") <= kibana_semver

def get_version(self):
url = self.get_kibana_url() + "/api/status"

r = requests.get(url)
body = r.json()
version = body["version"]["number"]

return version

def kibana_dir(self):
return os.path.join(self.beat_path, "build", "kibana")

0 comments on commit 3710e4e

Please sign in to comment.