121 lines
3.2 KiB
Python
121 lines
3.2 KiB
Python
import re
|
|
import sys
|
|
import unittest
|
|
import metricbeat
|
|
import os
|
|
import time
|
|
|
|
|
|
# Further tests:
|
|
# * Mix full config modules with reloading modules
|
|
# * Load empty file
|
|
# * Add remove module
|
|
# * enabled / disable module
|
|
# * multiple files
|
|
# * Test empty file
|
|
|
|
class Test(metricbeat.BaseTest):
|
|
|
|
@unittest.skipUnless(re.match("(?i)win|linux|darwin|freebsd|openbsd", sys.platform), "os")
|
|
def test_reload(self):
|
|
"""
|
|
Test basic reload
|
|
"""
|
|
self.render_config_template(
|
|
reload=True,
|
|
reload_path=self.working_dir + "/configs/*.yml",
|
|
flush_min_events=1,
|
|
)
|
|
proc = self.start_beat()
|
|
|
|
os.mkdir(self.working_dir + "/configs/")
|
|
|
|
systemConfig = """
|
|
- module: system
|
|
metricsets: ["cpu"]
|
|
period: 1s
|
|
"""
|
|
|
|
with open(self.working_dir + "/configs/system.yml", 'w') as f:
|
|
f.write(systemConfig)
|
|
|
|
self.wait_until(lambda: self.output_lines() > 0)
|
|
proc.check_kill_and_wait()
|
|
|
|
@unittest.skipUnless(re.match("(?i)win|linux|darwin|freebsd|openbsd", sys.platform), "os")
|
|
def test_start_stop(self):
|
|
"""
|
|
Test if module is properly started and stopped
|
|
"""
|
|
self.render_config_template(
|
|
reload=True,
|
|
reload_path=self.working_dir + "/configs/*.yml",
|
|
flush_min_events=1,
|
|
)
|
|
os.mkdir(self.working_dir + "/configs/")
|
|
|
|
config_path = self.working_dir + "/configs/system.yml"
|
|
proc = self.start_beat()
|
|
|
|
systemConfig = """
|
|
- module: system
|
|
metricsets: ["cpu"]
|
|
period: 1s
|
|
"""
|
|
|
|
with open(config_path, 'w') as f:
|
|
f.write(systemConfig)
|
|
|
|
# Wait until offset for new line is updated
|
|
self.wait_until(
|
|
lambda: self.log_contains("Starting runner: system [metricsets=1]"),
|
|
max_timeout=10)
|
|
|
|
self.wait_until(lambda: self.output_lines() > 0)
|
|
|
|
# Remove config again
|
|
os.remove(config_path)
|
|
|
|
# Wait until offset for new line is updated
|
|
self.wait_until(
|
|
lambda: self.log_contains("Stopping runner: system [metricsets=1]"),
|
|
max_timeout=10)
|
|
|
|
lines = self.output_lines()
|
|
|
|
time.sleep(1)
|
|
|
|
# Make sure no new lines were added since stopping
|
|
assert lines == self.output_lines()
|
|
|
|
proc.check_kill_and_wait()
|
|
|
|
@unittest.skipUnless(re.match("(?i)win|linux|darwin|freebsd|openbsd", sys.platform), "os")
|
|
def test_wrong_module_no_reload(self):
|
|
"""
|
|
Test beat errors when reload is disabled and some module config is wrong
|
|
"""
|
|
self.render_config_template(
|
|
reload=False,
|
|
reload_path=self.working_dir + "/configs/*.yml",
|
|
)
|
|
os.mkdir(self.working_dir + "/configs/")
|
|
|
|
config_path = self.working_dir + "/configs/system.yml"
|
|
systemConfig = """
|
|
- module: system
|
|
metricsets: ["wrong_metricset"]
|
|
period: 1s
|
|
"""
|
|
with open(config_path, 'w') as f:
|
|
f.write(systemConfig)
|
|
|
|
exit_code = self.run_beat()
|
|
|
|
# Wait until offset for new line is updated
|
|
self.wait_until(
|
|
lambda: self.log_contains("metricset not found"),
|
|
max_timeout=10)
|
|
|
|
assert exit_code == 1
|