def test_scale_instance_down(self): lb = self.LoadBalancer.find.return_value lb.hosts = [mock.Mock(), mock.Mock()] manager = Manager(self.config) manager.scale_instance("x", 1) lb.hosts[0].destroy.assert_called_once lb.remove_host.assert_called_once_with(lb.hosts[0])
def test_scale_instance_down(self): lb = self.LoadBalancer.find.return_value lb.hosts = [mock.Mock(), mock.Mock()] manager = Manager(self.config) manager.scale_instance('x', 1) lb.hosts[0].destroy.assert_called_once lb.remove_host.assert_called_once_with(lb.hosts[0])
def test_scale_instance_up_with_plan(self, nginx): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] self.storage.store_instance_metadata("x", plan_name=self.plan["name"], consul_token="abc-123") self.addCleanup(self.storage.remove_instance_metadata, "x") config = copy.deepcopy(self.config) config.update(self.plan["config"]) config[ "HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x,consul_token:abc-123" manager = Manager(self.config) manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx_manager = nginx.Nginx.return_value created_host = self.Host.create.return_value expected_calls = [ mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600) ] self.assertEqual(expected_calls, nginx_manager.wait_healthcheck.call_args_list)
def test_scale_instance_down(self): lb = self.LoadBalancer.find.return_value lb.hosts = [mock.Mock(), mock.Mock()] self.storage.store_instance_metadata("x", consul_token="abc-123") self.addCleanup(self.storage.remove_instance_metadata, "x") manager = Manager(self.config) manager.scale_instance("x", 1) lb.hosts[0].destroy.assert_called_once lb.remove_host.assert_called_once_with(lb.hosts[0])
def test_scale_instance_up(self): lb = self.LoadBalancer.find.return_value lb.name = 'x' lb.hosts = [mock.Mock(), mock.Mock()] manager = Manager(self.config) manager.scale_instance('x', 5) self.Host.create.assert_called_with('my-host-manager', 'x', self.config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3)
def test_scale_instance_up(self): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] config = copy.deepcopy(self.config) config["HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x" manager = Manager(self.config) manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3)
def test_scale_instance_up_with_plan(self): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] self.storage.store_instance_metadata("x", plan_name=self.plan["name"]) self.addCleanup(self.storage.remove_instance_metadata, "x") config = copy.deepcopy(self.config) config.update(self.plan["config"]) config["HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x" manager = Manager(self.config) manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3)
def test_scale_instance_down_with_healing_enabled(self, consul_manager): consul = consul_manager.ConsulManager.return_value config = copy.deepcopy(self.config) lb = self.LoadBalancer.find.return_value lb.hosts = [mock.Mock(), mock.Mock()] lb.hosts[0].dns_name = '10.2.2.2' self.storage.store_instance_metadata("x", consul_token="abc-123") self.addCleanup(self.storage.remove_instance_metadata, "x") consul.node_hostname.return_value = 'rpaas-2' manager = Manager(config) manager.consul_manager = mock.Mock() manager.consul_manager.generate_token.return_value = "abc-123" manager.scale_instance("x", 1) lb.hosts[0].destroy.assert_called_once lb.remove_host.assert_called_once_with(lb.hosts[0]) consul.remove_node.assert_called_once_with('x', 'rpaas-2')
def test_scale_instance_up_no_token(self, nginx): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] config = copy.deepcopy(self.config) config["HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x,consul_token:abc-123" manager = Manager(self.config) manager.consul_manager = mock.Mock() manager.consul_manager.generate_token.return_value = "abc-123" manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx_manager = nginx.Nginx.return_value created_host = self.Host.create.return_value expected_calls = [mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600)] self.assertEqual(expected_calls, nginx_manager.wait_healthcheck.call_args_list)
def test_scale_instance_up_apply_binding_new_instances(self, nginx): self.storage.store_binding('x', 'myhost.com') self.storage.update_binding_certificate('x', 'my cert', 'my key') self.storage.replace_binding_path('x', '/trantor', 'olivaw.com') lb = self.LoadBalancer.find.return_value lb.name = 'x' lb.hosts = [mock.Mock(), mock.Mock()] manager = Manager(self.config) manager.scale_instance('x', 5) self.Host.create.assert_called_with('my-host-manager', 'x', self.config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx.NginxDAV.assert_called_once_with(self.config) created_host = self.Host.create.return_value nginx_manager = nginx.NginxDAV.return_value nginx_manager.wait_healthcheck.assert_any_call(created_host.dns_name, timeout=300) nginx_manager.update_binding.assert_any_call(created_host.dns_name, '/', 'myhost.com', None) nginx_manager.update_binding.assert_any_call(created_host.dns_name, '/trantor', 'olivaw.com', None) nginx_manager.update_certificate.assert_any_call(created_host.dns_name, 'my cert', 'my key')
def test_scale_instance_up_with_plan(self, nginx): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] self.storage.store_instance_metadata("x", plan_name=self.plan["name"], consul_token="abc-123") self.addCleanup(self.storage.remove_instance_metadata, "x") config = copy.deepcopy(self.config) config.update(self.plan["config"]) config["HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x,consul_token:abc-123" manager = Manager(self.config) manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx_manager = nginx.Nginx.return_value created_host = self.Host.create.return_value expected_calls = [mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600)] self.assertEqual(expected_calls, nginx_manager.wait_healthcheck.call_args_list)
def test_scale_instance_up_apply_binding_new_instances(self, nginx): self.storage.store_binding("x", "myhost.com") self.storage.update_binding_certificate("x", "my cert", "my key") self.storage.replace_binding_path("x", "/trantor", "olivaw.com") lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] config = copy.deepcopy(self.config) config["HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x" manager = Manager(self.config) manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx.NginxDAV.assert_called_once_with(config) created_host = self.Host.create.return_value nginx_manager = nginx.NginxDAV.return_value nginx_manager.wait_healthcheck.assert_any_call(created_host.dns_name, timeout=300) nginx_manager.update_binding.assert_any_call(created_host.dns_name, "/", "myhost.com", None) nginx_manager.update_binding.assert_any_call(created_host.dns_name, "/trantor", "olivaw.com", None) nginx_manager.update_certificate.assert_any_call(created_host.dns_name, "my cert", "my key")
def test_scale_instance_up_no_token(self, nginx): lb = self.LoadBalancer.find.return_value lb.name = "x" lb.hosts = [mock.Mock(), mock.Mock()] config = copy.deepcopy(self.config) config[ "HOST_TAGS"] = "rpaas_service:test-suite-rpaas,rpaas_instance:x,consul_token:abc-123" manager = Manager(self.config) manager.consul_manager = mock.Mock() manager.consul_manager.generate_token.return_value = "abc-123" manager.scale_instance("x", 5) self.Host.create.assert_called_with("my-host-manager", "x", config) self.assertEqual(self.Host.create.call_count, 3) lb.add_host.assert_called_with(self.Host.create.return_value) self.assertEqual(lb.add_host.call_count, 3) nginx_manager = nginx.Nginx.return_value created_host = self.Host.create.return_value expected_calls = [ mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600), mock.call(created_host.dns_name, timeout=600) ] self.assertEqual(expected_calls, nginx_manager.wait_healthcheck.call_args_list)
def test_scale_instance_error_task_running(self): self.storage.store_task("x") manager = Manager(self.config) with self.assertRaises(rpaas.tasks.NotReadyError): manager.scale_instance("x", 5)
def test_scale_instance_error(self): lb = self.LoadBalancer.find.return_value lb.hosts = [mock.Mock(), mock.Mock()] manager = Manager(self.config) with self.assertRaises(ScaleError): manager.scale_instance("x", 0)