Exemple #1
0
    def test_mongodb_uri_environ(self, zapi, mongo_mock):
        from redisapi.hc import ZabbixHealthCheck
        ZabbixHealthCheck()
        mongo_mock.assert_called_with("mongodb://localhost:27017/")

        os.environ["MONGODB_URI"] = "0.0.0.0"
        self.addCleanup(self.remove_env, "MONGODB_URI")
        ZabbixHealthCheck()
        mongo_mock.assert_called_with("0.0.0.0")
Exemple #2
0
 def setUp(self, zabbix_mock):
     url = "http://zbx.com"
     user = "******"
     password = "******"
     os.environ["ZABBIX_URL"] = url
     os.environ["ZABBIX_USER"] = user
     os.environ["ZABBIX_PASSWORD"] = password
     os.environ["ZABBIX_HOST"] = "1"
     os.environ["ZABBIX_INTERFACE"] = "1"
     self.addCleanup(self.remove_env, "REDIS_SERVER_HOST")
     zapi_mock = mock.Mock()
     zabbix_mock.return_value = zapi_mock
     from redisapi.hc import ZabbixHealthCheck
     self.hc = ZabbixHealthCheck()
     zabbix_mock.assert_called_with(url)
     zapi_mock.login.assert_called_with(user, password)
Exemple #3
0
 def test_running_without_the_ZABBIX_INTERFACE_variable(self):
     del os.environ["ZABBIX_INTERFACE"]
     with self.assertRaises(Exception) as cm:
         from redisapi.hc import ZabbixHealthCheck
         ZabbixHealthCheck()
     exc = cm.exception
     self.assertEqual(
         (u"You must define the ZABBIX_INTERFACE environment variable.",),
         exc.args,
     )
Exemple #4
0
class ZabbixHCTest(unittest.TestCase):

    def remove_env(self, env):
        if env in os.environ:
            del os.environ[env]

    @mock.patch("pyzabbix.ZabbixAPI")
    def setUp(self, zabbix_mock):
        url = "http://zbx.com"
        user = "******"
        password = "******"
        os.environ["ZABBIX_URL"] = url
        os.environ["ZABBIX_USER"] = user
        os.environ["ZABBIX_PASSWORD"] = password
        os.environ["ZABBIX_HOST"] = "1"
        os.environ["ZABBIX_INTERFACE"] = "1"
        self.addCleanup(self.remove_env, "REDIS_SERVER_HOST")
        zapi_mock = mock.Mock()
        zabbix_mock.return_value = zapi_mock
        from redisapi.hc import ZabbixHealthCheck
        self.hc = ZabbixHealthCheck()
        zabbix_mock.assert_called_with(url)
        zapi_mock.login.assert_called_with(user, password)

    def tearDown(self):
        self.hc.items.remove()

    def test_add(self):
        self.hc.zapi.item.create.return_value = {"itemids": ["xpto"]}
        self.hc.zapi.trigger.create.return_value = {"triggerids": ["apto"]}

        self.hc.add(host="localhost", port=8080)

        item_key = "net.tcp.service[tcp,localhost,8080]"
        self.hc.zapi.item.create.assert_called_with(
            name="redis healthcheck for localhost:8080",
            key_=item_key,
            delay=60,
            hostid="1",
            interfaceid="1",
            type=3,
            value_type=3,
        )
        self.hc.zapi.trigger.create.assert_called_with(
            description="trigger hc for redis localhost:8080",
            expression="{{Zabbix Server:{}.last()}}=0".format(item_key),
            priority=5,
        )

        item = self.hc.items.find_one({"host": "localhost", "port": 8080})
        self.assertEqual(item["host"], "localhost")
        self.assertEqual(item["port"], 8080)
        self.assertEqual(item["item"], "xpto")
        self.assertEqual(item["trigger"], "apto")

    def test_remove(self):
        item = {
            "host": "localhost",
            "port": 8080,
            "trigger": 43,
            "item": 42,
        }
        self.hc.items.insert(item)

        self.hc.remove(host="localhost", port=8080)

        self.hc.zapi.trigger.delete.assert_called_with(43)
        self.hc.zapi.item.delete.assert_called_with(42)
        lenght = self.hc.items.find({
            "host": "localhost",
            "port": 8080}).count()
        self.assertEqual(lenght, 0)

    @mock.patch("pymongo.MongoClient")
    @mock.patch("pyzabbix.ZabbixAPI")
    def test_mongodb_uri_environ(self, zapi, mongo_mock):
        from redisapi.hc import ZabbixHealthCheck
        ZabbixHealthCheck()
        mongo_mock.assert_called_with("mongodb://localhost:27017/")

        os.environ["MONGODB_URI"] = "0.0.0.0"
        self.addCleanup(self.remove_env, "MONGODB_URI")
        ZabbixHealthCheck()
        mongo_mock.assert_called_with("0.0.0.0")

    def test_running_without_the_ZABBIX_URL_variable(self):
        del os.environ["ZABBIX_URL"]
        with self.assertRaises(Exception) as cm:
            from redisapi.hc import ZabbixHealthCheck
            ZabbixHealthCheck()
        exc = cm.exception
        self.assertEqual(
            (u"You must define the ZABBIX_URL environment variable.",),
            exc.args,
        )

    def test_running_without_the_ZABBIX_USER_variable(self):
        del os.environ["ZABBIX_USER"]
        with self.assertRaises(Exception) as cm:
            from redisapi.hc import ZabbixHealthCheck
            ZabbixHealthCheck()
        exc = cm.exception
        self.assertEqual(
            (u"You must define the ZABBIX_USER environment variable.",),
            exc.args,
        )

    def test_running_without_the_ZABBIX_PASSWORD_variable(self):
        del os.environ["ZABBIX_PASSWORD"]
        with self.assertRaises(Exception) as cm:
            from redisapi.hc import ZabbixHealthCheck
            ZabbixHealthCheck()
        exc = cm.exception
        self.assertEqual(
            (u"You must define the ZABBIX_PASSWORD environment variable.",),
            exc.args,
        )

    def test_running_without_the_ZABBIX_HOST_variable(self):
        del os.environ["ZABBIX_HOST"]
        with self.assertRaises(Exception) as cm:
            from redisapi.hc import ZabbixHealthCheck
            ZabbixHealthCheck()
        exc = cm.exception
        self.assertEqual(
            (u"You must define the ZABBIX_HOST environment variable.",),
            exc.args,
        )

    def test_running_without_the_ZABBIX_INTERFACE_variable(self):
        del os.environ["ZABBIX_INTERFACE"]
        with self.assertRaises(Exception) as cm:
            from redisapi.hc import ZabbixHealthCheck
            ZabbixHealthCheck()
        exc = cm.exception
        self.assertEqual(
            (u"You must define the ZABBIX_INTERFACE environment variable.",),
            exc.args,
        )