Пример #1
0
 def test_client(self):
     os.environ["DOCKER_HOSTS"] = '["http://host1.com:4243", \
         "http://localhost:4243"]'
     self.addCleanup(self.remove_env, "DOCKER_HOSTS")
     from redisapi.managers import DockerManager
     manager = DockerManager()
     client = manager.client()
     hosts = ["http://host1.com:4243", "http://localhost:4243"]
     self.assertIn(client.base_url, hosts)
Пример #2
0
    def test_client(self):
        os.environ["DOCKER_HOSTS"] = '["http://host1.com:4243", \
            "http://localhost:4243"]'

        self.addCleanup(self.remove_env, "DOCKER_HOSTS")
        from redisapi.managers import DockerManager
        manager = DockerManager()
        client = manager.client()
        hosts = ["http://host1.com:4243", "http://localhost:4243"]
        self.assertIn(client.base_url, hosts)
Пример #3
0
 def test_hc_zabbix(self, zabix_mock):
     os.environ["ZABBIX_URL"] = "url"
     os.environ["ZABBIX_USER"] = "******"
     os.environ["ZABBIX_PASSWORD"] = "******"
     os.environ["HEALTH_CHECKER"] = "zabbix"
     self.addCleanup(self.remove_env, "HEALTH_CHECKER")
     os.environ["ZABBIX_HOST"] = "2"
     os.environ["ZABBIX_INTERFACE"] = "1"
     from redisapi.hc import ZabbixHealthCheck
     from redisapi.managers import DockerManager
     manager = DockerManager()
     self.assertIsInstance(manager.health_checker(), ZabbixHealthCheck)
Пример #4
0
 def test_hc_zabbix(self, zabix_mock):
     os.environ["ZABBIX_URL"] = "url"
     os.environ["ZABBIX_USER"] = "******"
     os.environ["ZABBIX_PASSWORD"] = "******"
     os.environ["HEALTH_CHECKER"] = "zabbix"
     self.addCleanup(self.remove_env, "HEALTH_CHECKER")
     os.environ["ZABBIX_HOST"] = "2"
     os.environ["ZABBIX_INTERFACE"] = "1"
     from redisapi.hc import ZabbixHealthCheck
     from redisapi.managers import DockerManager
     manager = DockerManager()
     self.assertIsInstance(manager.health_checker(), ZabbixHealthCheck)
Пример #5
0
 def test_running_without_the_REDIS_IMAGE_variable(self):
     del os.environ["REDIS_IMAGE"]
     with self.assertRaises(Exception) as cm:
         from redisapi.managers import DockerManager
         DockerManager()
     exc = cm.exception
     self.assertEqual(
         (u"You must define the REDIS_IMAGE environment variable.", ),
         exc.args,
     )
Пример #6
0
    def setUp(self):
        os.environ["SENTINEL_HOSTS"] = '["http://host1.com:4243", \
            "http://localhost:4243", "http://host2.com:4243"]'

        self.addCleanup(self.remove_env, "SENTINEL_HOSTS")
        os.environ["REDIS_SERVER_HOST"] = "localhost"
        self.addCleanup(self.remove_env, "REDIS_SERVER_HOST")
        os.environ["REDIS_IMAGE"] = "redisapi"
        self.addCleanup(self.remove_env, "REDIS_IMAGE")
        os.environ["DOCKER_HOSTS"] = '["http://host1.com:4243", \
            "http://localhost:4243"]'

        self.addCleanup(self.remove_env, "DOCKER_HOSTS")
        from redisapi.managers import DockerManager
        self.manager = DockerManager()
        client_mock = mock.Mock()
        client_mock.return_value = mock.Mock()
        self.manager.client = client_mock
        self.manager.health_checker = mock.Mock()
        self.storage = MongoStorage()
Пример #7
0
 def setUp(self):
     os.environ["SENTINEL_HOSTS"] = '["http://host1.com:4243", \
         "http://localhost:4243", "http://host2.com:4243"]'
     self.addCleanup(self.remove_env, "SENTINEL_HOSTS")
     os.environ["REDIS_SERVER_HOST"] = "localhost"
     self.addCleanup(self.remove_env, "REDIS_SERVER_HOST")
     os.environ["REDIS_IMAGE"] = "redisapi"
     self.addCleanup(self.remove_env, "REDIS_IMAGE")
     os.environ["DOCKER_HOSTS"] = '["http://host1.com:4243", \
         "http://localhost:4243"]'
     self.addCleanup(self.remove_env, "DOCKER_HOSTS")
     from redisapi.managers import DockerManager
     self.manager = DockerManager()
     client_mock = mock.Mock()
     client_mock.return_value = mock.Mock()
     self.manager.client = client_mock
     self.manager.health_checker = mock.Mock()
     self.storage = MongoStorage()
Пример #8
0
 def test_hc(self):
     from redisapi.hc import FakeHealthCheck
     from redisapi.managers import DockerManager
     manager = DockerManager()
     self.assertIsInstance(manager.health_checker(), FakeHealthCheck)
Пример #9
0
 def test_client_with_value(self):
     from redisapi.managers import DockerManager
     manager = DockerManager()
     host = "http://myhost.com"
     client = manager.client(host=host)
     self.assertEqual(client.base_url, host)
Пример #10
0
 def test_docker_host_from_hostname(self):
     from redisapi.managers import DockerManager
     manager = DockerManager()
     url = manager.docker_url_from_hostname("host.com")
     self.assertEqual(url, "http://host.com:4243")
Пример #11
0
class DockerManagerTest(unittest.TestCase):

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

    def setUp(self):
        os.environ["SENTINEL_HOSTS"] = '["http://host1.com:4243", \
            "http://*****:*****@mock.patch("pyzabbix.ZabbixAPI")
    def test_hc_zabbix(self, zabix_mock):
        os.environ["ZABBIX_URL"] = "url"
        os.environ["ZABBIX_USER"] = "******"
        os.environ["ZABBIX_PASSWORD"] = "******"
        os.environ["HEALTH_CHECKER"] = "zabbix"
        self.addCleanup(self.remove_env, "HEALTH_CHECKER")
        os.environ["ZABBIX_HOST"] = "2"
        os.environ["ZABBIX_INTERFACE"] = "1"
        from redisapi.hc import ZabbixHealthCheck
        from redisapi.managers import DockerManager
        manager = DockerManager()
        self.assertIsInstance(manager.health_checker(), ZabbixHealthCheck)

    def test_add_instance(self):
        add_mock = mock.Mock()
        self.manager.config_sentinels = mock.Mock()
        self.manager.health_checker.return_value = add_mock
        client_mock = mock.Mock()
        client_mock.return_value = mock.Mock(base_url="http://*****:*****@mock.patch("redis.StrictRedis")
    def test_config_sentinels(self, redis_mock):
        master = {"host": "localhost", "port": "3333"}
        self.manager.config_sentinels("master_name", master)

        calls = []
        sentinels = [
            {"host": u"host1.com", "port": u"4243"},
            {"host": u"localhost", "port": u"4243"},
            {"host": u"host2.com", "port": u"4243"},
        ]
        for sentinel in sentinels:
            host, port = sentinel["host"], sentinel["port"]
            sentinel_calls = [
                mock.call(host=host, port=port),
                mock.call().sentinel(
                    'monitor', 'master_name', 'localhost', '3333', '1'),
                mock.call().sentinel(
                    'set', 'master_name', 'down-after-milliseconds', '5000'),
                mock.call().sentinel(
                    'set', 'master_name', 'failover-timeout', '60000'),
                mock.call().sentinel(
                    'set', 'master_name', 'parallel-syncs', '1'),
            ]
            calls.extend(sentinel_calls)

        redis_mock.assert_has_calls(calls)

    @mock.patch("redis.StrictRedis")
    def test_remove_from_sentinel(self, redis_mock):
        self.manager.remove_from_sentinel("master_name")

        calls = []
        sentinels = [
            {"host": u"host1.com", "port": u"4243"},
            {"host": u"localhost", "port": u"4243"},
            {"host": u"host2.com", "port": u"4243"},
        ]
        for sentinel in sentinels:
            host, port = sentinel["host"], sentinel["port"]
            sentinel_calls = [
                mock.call(host=host, port=port),
                mock.call().sentinel(
                    'remove', 'master_name'),
            ]
            calls.extend(sentinel_calls)

        redis_mock.assert_has_calls(calls)

    def test_port_range_start(self):
        self.assertEqual(49153, self.manager.port_range_start)

    def test_get_port_new_host(self):
        self.assertEqual(49153, self.manager.get_port_by_host("newhost"))

    def test_get_port_host_with_containers(self):
        instance = Instance(
            name="name",
            plan="basic",
            endpoints=[{"host": "newhost", "port": 49153,
                        "container_id": "12"}],
        )
        self.storage.add_instance(instance)
        self.assertEqual(49154, self.manager.get_port_by_host("newhost"))
Пример #12
0
 def test_hc(self):
     from redisapi.hc import FakeHealthCheck
     from redisapi.managers import DockerManager
     manager = DockerManager()
     self.assertIsInstance(manager.health_checker(), FakeHealthCheck)
Пример #13
0
 def test_client_with_value(self):
     from redisapi.managers import DockerManager
     manager = DockerManager()
     host = "http://myhost.com"
     client = manager.client(host=host)
     self.assertEqual(client.base_url, host)
Пример #14
0
 def test_docker_host_from_hostname(self):
     from redisapi.managers import DockerManager
     manager = DockerManager()
     url = manager.docker_url_from_hostname("host.com")
     self.assertEqual(url, "http://host.com:4243")
Пример #15
0
class DockerManagerTest(unittest.TestCase):
    def remove_env(self, env):
        if env in os.environ:
            del os.environ[env]

    def setUp(self):
        os.environ["SENTINEL_HOSTS"] = '["http://host1.com:4243", \
            "http://*****:*****@mock.patch("pyzabbix.ZabbixAPI")
    def test_hc_zabbix(self, zabix_mock):
        os.environ["ZABBIX_URL"] = "url"
        os.environ["ZABBIX_USER"] = "******"
        os.environ["ZABBIX_PASSWORD"] = "******"
        os.environ["HEALTH_CHECKER"] = "zabbix"
        self.addCleanup(self.remove_env, "HEALTH_CHECKER")
        os.environ["ZABBIX_HOST"] = "2"
        os.environ["ZABBIX_INTERFACE"] = "1"
        from redisapi.hc import ZabbixHealthCheck
        from redisapi.managers import DockerManager
        manager = DockerManager()
        self.assertIsInstance(manager.health_checker(), ZabbixHealthCheck)

    def test_add_instance(self):
        add_mock = mock.Mock()
        self.manager.config_sentinels = mock.Mock()
        self.manager.health_checker.return_value = add_mock
        client_mock = mock.Mock()
        client_mock.return_value = mock.Mock(base_url="http://*****:*****@mock.patch("redis.StrictRedis")
    def test_config_sentinels(self, redis_mock):
        master = {"host": "localhost", "port": "3333"}
        self.manager.config_sentinels("master_name", master)

        calls = []
        sentinels = [
            {
                "host": u"host1.com",
                "port": u"4243"
            },
            {
                "host": u"localhost",
                "port": u"4243"
            },
            {
                "host": u"host2.com",
                "port": u"4243"
            },
        ]
        for sentinel in sentinels:
            host, port = sentinel["host"], sentinel["port"]
            sentinel_calls = [
                mock.call(host=host, port=port),
                mock.call().sentinel('monitor', 'master_name', 'localhost',
                                     '3333', '1'),
                mock.call().sentinel('set', 'master_name',
                                     'down-after-milliseconds', '5000'),
                mock.call().sentinel('set', 'master_name', 'failover-timeout',
                                     '60000'),
                mock.call().sentinel('set', 'master_name', 'parallel-syncs',
                                     '1'),
            ]
            calls.extend(sentinel_calls)

        redis_mock.assert_has_calls(calls)

    @mock.patch("redis.StrictRedis")
    def test_remove_from_sentinel(self, redis_mock):
        self.manager.remove_from_sentinel("master_name")

        calls = []
        sentinels = [
            {
                "host": u"host1.com",
                "port": u"4243"
            },
            {
                "host": u"localhost",
                "port": u"4243"
            },
            {
                "host": u"host2.com",
                "port": u"4243"
            },
        ]
        for sentinel in sentinels:
            host, port = sentinel["host"], sentinel["port"]
            sentinel_calls = [
                mock.call(host=host, port=port),
                mock.call().sentinel('remove', 'master_name'),
            ]
            calls.extend(sentinel_calls)

        redis_mock.assert_has_calls(calls)

    def test_port_range_start(self):
        self.assertEqual(49153, self.manager.port_range_start)

    def test_get_port_new_host(self):
        self.assertEqual(49153, self.manager.get_port_by_host("newhost"))

    def test_get_port_host_with_containers(self):
        instance = Instance(
            name="name",
            plan="basic",
            endpoints=[{
                "host": "newhost",
                "port": 49153,
                "container_id": "12"
            }],
        )
        self.storage.add_instance(instance)
        self.assertEqual(49154, self.manager.get_port_by_host("newhost"))