diff --git a/checks.d/gearmand.py b/checks.d/gearmand.py index 2d9586991e..fd94b69b10 100644 --- a/checks.d/gearmand.py +++ b/checks.d/gearmand.py @@ -56,14 +56,20 @@ def check(self, instance): self.log.debug("Gearman check start") host, port, tags = self._get_conf(instance) + service_check_tags = ["server:{0}".format(host), + "port:{0}".format(port)] + client = self._get_client(host, port) self.log.debug("Connected to gearman") + tags += service_check_tags + try: self._get_metrics(client, tags) self.service_check(self.SERVICE_CHECK_NAME, AgentCheck.OK, - message="Connection to %s:%s succeeded." % (host, port)) + message="Connection to %s:%s succeeded." % (host, port), + tags=service_check_tags) except Exception as e: self.service_check(self.SERVICE_CHECK_NAME, AgentCheck.CRITICAL, - message=str(e)) + message=str(e), tags=service_check_tags) raise diff --git a/tests/test_gearman.py b/tests/test_gearman.py index 9c89e9d903..762fdac86a 100644 --- a/tests/test_gearman.py +++ b/tests/test_gearman.py @@ -1,29 +1,34 @@ -import unittest -from nose.plugins.attrib import attr -from tests.common import load_check +# Agent from checks import AgentCheck +from tests.common import AgentCheckTest + +# 3rd party +from nose.plugins.attrib import attr + @attr(requires='gearman') -class GearmanTestCase(unittest.TestCase): +class GearmanTestCase(AgentCheckTest): + CHECK_NAME = "gearmand" def test_metrics(self): + tags = ['first_tag', 'second_tag'] + service_checks_tags = ['server:127.0.0.1', 'port:4730'] config = { 'instances': [{ - 'tags': ['first_tag', 'second_tag'] + 'tags': tags }] } - agentConfig = { - 'version': '0.1', - 'api_key': 'toto' - } - - self.check = load_check('gearmand', config, agentConfig) - self.check.check(config['instances'][0]) - - metrics = self.check.get_metrics() - self.assertTrue(type(metrics) == type([]), metrics) - self.assertTrue(len(metrics) == 4) - self.assertTrue(len([k for k in metrics if "second_tag" in k[3]['tags']]) == 4) + tags += service_checks_tags + self.run_check(config) + self.assertMetric('gearman.unique_tasks', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.running', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.queued', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.workers', value=0.0, tags=tags, count=1) + + self.assertServiceCheck("gearman.can_connect", status=AgentCheck.OK, + tags=service_checks_tags, count=1) + self.coverage_report() + def test_service_checks(self): config = { @@ -31,22 +36,20 @@ def test_service_checks(self): {'host': '127.0.0.1', 'port': 4730}, {'host': '127.0.0.1', 'port': 4731}] } - agentConfig = { - 'version': '0.1', - 'api_key': 'toto' - } - - self.check = load_check('gearmand', config, agentConfig) - self.check.check(config['instances'][0]) - self.assertRaises(Exception, self.check.check, config['instances'][1]) - - service_checks = self.check.get_service_checks() - self.assertEqual(len(service_checks), 2) - - ok_svc_check = service_checks[0] - self.assertEqual(ok_svc_check['check'], self.check.SERVICE_CHECK_NAME) - self.assertEqual(ok_svc_check['status'], AgentCheck.OK) - - cr_svc_check = service_checks[1] - self.assertEqual(cr_svc_check['check'], self.check.SERVICE_CHECK_NAME) - self.assertEqual(cr_svc_check['status'], AgentCheck.CRITICAL) + + self.assertRaises(Exception, self.run_check, config) + service_checks_tags_ok = ['server:127.0.0.1', 'port:4730'] + service_checks_tags_not_ok = ['server:127.0.0.1', 'port:4731'] + + tags = service_checks_tags_ok + + self.assertMetric('gearman.unique_tasks', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.running', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.queued', value=0.0, tags=tags, count=1) + self.assertMetric('gearman.workers', value=0.0, tags=tags, count=1) + self.assertServiceCheck("gearman.can_connect", status=AgentCheck.OK, + tags=service_checks_tags_ok, count=1) + self.assertServiceCheck("gearman.can_connect", status=AgentCheck.CRITICAL, + tags=service_checks_tags_not_ok, count=1) + + self.coverage_report()