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

56 lines
1.8 KiB
Python

import os
import metricbeat
import unittest
from nose.plugins.attrib import attr
ZK_FIELDS = metricbeat.COMMON_FIELDS + ["zookeeper"]
MNTR_FIELDS = ["version", "latency.avg", "latency.max",
"latency.min", "packets.received", "packets.sent",
"outstanding_requests", "server_state", "znode_count",
"watch_count", "ephemerals_count",
"approximate_data_size", "num_alive_connections"]
class ZooKeeperMntrTest(metricbeat.BaseTest):
COMPOSE_SERVICES = ['zookeeper']
@unittest.skipUnless(metricbeat.INTEGRATION_TESTS, "integration test")
@attr('integration')
def test_output(self):
"""
ZooKeeper mntr module outputs an event.
"""
self.render_config_template(modules=[{
"name": "zookeeper",
"metricsets": ["mntr"],
"hosts": self.get_hosts(),
"period": "5s"
}])
proc = self.start_beat()
self.wait_until(lambda: self.output_lines() > 0)
proc.check_kill_and_wait()
self.assert_no_logged_warnings()
output = self.read_output_json()
self.assertEqual(len(output), 1)
evt = output[0]
self.assertItemsEqual(self.de_dot(ZK_FIELDS), evt.keys())
zk_mntr = evt["zookeeper"]["mntr"]
zk_mntr.pop("pending_syncs", None)
zk_mntr.pop("open_file_descriptor_count", None)
zk_mntr.pop("synced_followers", None)
zk_mntr.pop("max_file_descriptor_count", None)
zk_mntr.pop("followers", None)
self.assertItemsEqual(self.de_dot(MNTR_FIELDS), zk_mntr.keys())
self.assert_fields_are_documented(evt)
def get_hosts(self):
return [os.getenv('ZOOKEEPER_HOST', 'localhost') + ':' +
os.getenv('ZOOKEEPER_PORT', '2181')]