Пример #1
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])
Пример #2
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])
Пример #3
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)
Пример #4
0
 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])
Пример #5
0
 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])
Пример #6
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)
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
 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')
Пример #10
0
 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')
Пример #11
0
 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)
Пример #12
0
 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')
Пример #13
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)
Пример #14
0
 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")
Пример #15
0
 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)
Пример #16
0
 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)
Пример #17
0
 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)
Пример #18
0
 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)
Пример #19
0
 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)