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)
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_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, )
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()
def test_hc(self): from redisapi.hc import FakeHealthCheck from redisapi.managers import DockerManager manager = DockerManager() self.assertIsInstance(manager.health_checker(), FakeHealthCheck)
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)
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")
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"))
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"))