youtubebeat/vendor/github.com/elastic/beats/metricbeat/tests/system/test_cmd.py

199 lines
6.6 KiB
Python

import os
import shutil
import metricbeat
class TestCommands(metricbeat.BaseTest):
"""
Test metricbeat subcommands
"""
def setUp(self):
super(TestCommands, self).setUp()
# Enable modules reload with default paths
self.render_config_template(reload=True)
os.mkdir(self.working_dir + "/modules.d")
def test_modules_list(self):
"""
Test modules list command
"""
self.touch(self.working_dir + "/modules.d/enabled.yml")
self.touch(self.working_dir + "/modules.d/disabled.yml.disabled")
exit_code = self.run_beat(logging_args=None,
extra_args=["modules", "list"])
assert exit_code == 0
assert "Enabled:\nenabled" in self.get_log()
assert "Disabled:\ndisabled" in self.get_log()
# Add one more disabled module
self.touch(self.working_dir + "/modules.d/disabled2.yml.disabled")
exit_code = self.run_beat(logging_args=None,
extra_args=["modules", "list"])
assert exit_code == 0
assert "Enabled:\nenabled" in self.get_log()
assert "Disabled:\ndisabled\ndisabled2" in self.get_log()
def test_modules_enable(self):
"""
Test modules enable command
"""
self.touch(self.working_dir + "/modules.d/enabled.yml")
self.touch(self.working_dir + "/modules.d/disabled1.yml.disabled")
self.touch(self.working_dir + "/modules.d/disabled2.yml.disabled")
self.touch(self.working_dir + "/modules.d/disabled3.yml.disabled")
# Enable one module
exit_code = self.run_beat(
extra_args=["modules", "enable", "disabled1"])
assert exit_code == 0
assert self.log_contains("Enabled disabled1")
assert os.path.exists(self.working_dir + "/modules.d/disabled1.yml")
assert not os.path.exists(
self.working_dir + "/modules.d/disabled1.yml.disabled")
assert os.path.exists(
self.working_dir + "/modules.d/disabled2.yml.disabled")
assert os.path.exists(
self.working_dir + "/modules.d/disabled3.yml.disabled")
# Enable several modules at once:
exit_code = self.run_beat(
extra_args=["modules", "enable", "disabled2", "disabled3"])
assert exit_code == 0
assert self.log_contains("Enabled disabled2")
assert self.log_contains("Enabled disabled3")
assert os.path.exists(self.working_dir + "/modules.d/disabled2.yml")
assert os.path.exists(self.working_dir + "/modules.d/disabled3.yml")
assert not os.path.exists(
self.working_dir + "/modules.d/disabled2.yml.disabled")
assert not os.path.exists(
self.working_dir + "/modules.d/disabled3.yml.disabled")
def test_modules_disable(self):
"""
Test modules disable command
"""
self.touch(self.working_dir + "/modules.d/enabled1.yml")
self.touch(self.working_dir + "/modules.d/enabled2.yml")
self.touch(self.working_dir + "/modules.d/enabled3.yml")
self.touch(self.working_dir + "/modules.d/disabled2.yml.disabled")
# Disable one module
exit_code = self.run_beat(
extra_args=["modules", "disable", "enabled1"])
assert exit_code == 0
assert self.log_contains("Disabled enabled1")
assert os.path.exists(
self.working_dir + "/modules.d/enabled1.yml.disabled")
assert not os.path.exists(self.working_dir + "/modules.d/enabled1.yml")
assert os.path.exists(self.working_dir + "/modules.d/enabled2.yml")
assert os.path.exists(self.working_dir + "/modules.d/enabled3.yml")
# Disable several modules at once:
exit_code = self.run_beat(
extra_args=["modules", "disable", "enabled2", "enabled3"])
assert exit_code == 0
assert self.log_contains("Disabled enabled2")
assert self.log_contains("Disabled enabled3")
assert os.path.exists(
self.working_dir + "/modules.d/enabled2.yml.disabled")
assert os.path.exists(
self.working_dir + "/modules.d/enabled3.yml.disabled")
assert not os.path.exists(self.working_dir + "/modules.d/enabled2.yml")
assert not os.path.exists(self.working_dir + "/modules.d/enabled3.yml")
def test_modules_test(self):
"""
Test test modules command
"""
self.write_system_yml()
exit_code = self.run_beat(
logging_args=None,
extra_args=["test", "modules"])
assert exit_code == 0
assert self.log_contains("cpu...OK")
assert self.log_contains("memory...OK")
def test_modules_test_error(self):
"""
Test test modules command with an error result
"""
self.write_system_yml()
self.write_nginx_yml()
exit_code = self.run_beat(
logging_args=None,
extra_args=["test", "modules"])
assert exit_code == 0
try:
assert any((
self.log_contains("ERROR error making http request"),
self.log_contains("ERROR timeout waiting for an event"),
))
except:
# Print log to help debugging this if error message changes
print self.get_log()
raise
assert self.log_contains("cpu...OK")
assert self.log_contains("memory...OK")
def test_modules_test_filter_no_result(self):
"""
Test test modules command filter by module (no result)
"""
self.write_system_yml()
exit_code = self.run_beat(
logging_args=None,
extra_args=["test", "modules", "apache"])
assert exit_code == 0
assert not self.log_contains("OK")
def test_modules_test_filter(self):
"""
Test test modules command filter by metricset
"""
self.write_system_yml()
self.write_nginx_yml()
exit_code = self.run_beat(
logging_args=None,
extra_args=["test", "modules", "system", "cpu"])
assert exit_code == 0
assert self.log_contains("cpu...OK")
assert not self.log_contains("memory...OK")
def touch(self, path):
open(path, 'a').close()
def write_system_yml(self):
with open(self.working_dir + "/modules.d/system.yml", "wb") as f:
f.write("""
- module: system
period: 10s
metricsets:
- cpu
- memory""")
def write_nginx_yml(self):
with open(self.working_dir + "/modules.d/nginx.yml", "wb") as f:
f.write("""
- module: nginx
period: 10s
hosts: ["errorhost:80"]
metricsets:
- stubstatus""")