示例#1
0
 def test_vcl_template(self):
     manager = managers.BaseManager(None)
     with open(managers.VCL_TEMPLATE_FILE) as f:
         content = f.read().replace("\n", " ").replace('"', r'\"')
         content = content.replace("\t", "")
         self.assertEqual('"%s"' % content.strip(),
                          manager.vcl_template())
示例#2
0
 def test_write_vcl_ignores_106(self, VarnishHandler):
     varnish_handler = mock.Mock()
     exc = AssertionError("106 Already a VCL program named feaas")
     varnish_handler.vcl_inline.side_effect = exc
     VarnishHandler.return_value = varnish_handler
     app_host, instance_ip = "yeah.cloud.tsuru.io", "10.2.1.2"
     manager = managers.BaseManager(None)
     manager.write_vcl(instance_ip, "abc-def", app_host)
示例#3
0
 def test_scale_instance_already_scaling(self):
     instance = api_storage.Instance(name="secret", state="scaling")
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     with self.assertRaises(ValueError) as cm:
         manager.scale_instance("secret", 2)
     exc = cm.exception
     self.assertEqual(("instance is already scaling",), exc.args)
示例#4
0
 def test_status(self):
     instance = api_storage.Instance(name="secret", state="started",
                                     units=[api_storage.Unit(dns_name="secret.cloud.tsuru.io",
                                                             id="i-0800")])
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     status = manager.status("secret")
     self.assertEqual("started", status)
示例#5
0
 def test_scale_instance(self):
     instance = api_storage.Instance(name="secret", state="started")
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     manager.scale_instance("secret", 2)
     storage.store_scale_job.assert_called_with({"instance": "secret",
                                                 "quantity": 2,
                                                 "state": "pending"})
示例#6
0
 def test_info(self):
     instance = api_storage.Instance(name="secret",
                                     units=[api_storage.Unit(dns_name="secret.cloud.tsuru.io",
                                                             id="i-0800")])
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     expected = [{"label": "Address", "value": "secret.cloud.tsuru.io"}]
     self.assertEqual(expected, manager.info("secret"))
     storage.retrieve_instance.assert_called_with(name="secret")
示例#7
0
 def test_remove_vcl(self, VarnishHandler):
     varnish_handler = mock.Mock()
     VarnishHandler.return_value = varnish_handler
     instance_ip = "10.2.2.1"
     manager = managers.BaseManager(None)
     manager.remove_vcl(instance_ip, "abc123")
     VarnishHandler.assert_called_with("10.2.2.1:6082", secret="abc123")
     varnish_handler.vcl_use.assert_called_with("boot")
     varnish_handler.vcl_discard.assert_called_with("feaas")
     varnish_handler.quit.assert_called()
示例#8
0
 def test_write_vcl_doesnt_swallow_exceptions_that_arent_106(self, VarnishHandler):
     varnish_handler = mock.Mock()
     exc = AssertionError("Something went wrong")
     varnish_handler.vcl_inline.side_effect = exc
     VarnishHandler.return_value = varnish_handler
     app_host, instance_ip = "yeah.cloud.tsuru.io", "10.2.1.2"
     manager = managers.BaseManager(None)
     with self.assertRaises(AssertionError) as cm:
         manager.write_vcl(instance_ip, "abc-def", app_host)
     exc = cm.exception
     self.assertEqual(("Something went wrong",), exc.args)
示例#9
0
 def test_write_vcl(self, VarnishHandler):
     varnish_handler = mock.Mock()
     VarnishHandler.return_value = varnish_handler
     app_host, instance_ip = "yeah.cloud.tsuru.io", "10.2.1.2"
     manager = managers.BaseManager(None)
     manager.write_vcl(instance_ip, "abc-def", app_host)
     vcl = manager.vcl_template() % {"app_host": app_host}
     VarnishHandler.assert_called_with("{0}:6082".format(instance_ip),
                                       secret="abc-def")
     varnish_handler.vcl_inline.assert_called_with("feaas", vcl)
     varnish_handler.vcl_use.assert_called_with("feaas")
     varnish_handler.quit.assert_called()
示例#10
0
 def test_bind_instance(self, Bind):
     Bind.return_value = "abacaxi"
     instance = api_storage.Instance(name="myinstance",
                                     units=[api_storage.Unit(secret="abc-123",
                                                             dns_name="10.1.1.2",
                                                             id="i-0800")])
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     manager.bind("someapp", "myapp.cloud.tsuru.io")
     storage.retrieve_instance.assert_called_with(name="someapp")
     storage.store_bind.assert_called_with("abacaxi")
     Bind.assert_called_with("myapp.cloud.tsuru.io", instance)
示例#11
0
 def test_scale_instance_no_change(self):
     instance = api_storage.Instance(name="secret",
                                     units=[api_storage.Unit(dns_name="secret.cloud.tsuru.io",
                                                             id="i-0800"),
                                            api_storage.Unit(dns_name="secreti.cloud.tsuru.io",
                                                             id="i-0801")])
     storage = mock.Mock()
     storage.retrieve_instance.return_value = instance
     manager = managers.BaseManager(storage)
     with self.assertRaises(ValueError) as cm:
         manager.scale_instance("secret", 2)
     exc = cm.exception
     self.assertEqual(("instance already have 2 units",), exc.args)
     storage.retrieve_instance.assert_called_with(name="secret")
示例#12
0
 def test_new_duplicate_instance(self):
     storage = mock.Mock()
     storage.retrieve_instance.return_value = "instance"
     manager = managers.BaseManager(storage)
     with self.assertRaises(api_storage.InstanceAlreadyExistsError):
         manager.new_instance("pull")
示例#13
0
 def test_scale_instance_zero_quantity(self):
     manager = managers.BaseManager(None)
     with self.assertRaises(ValueError) as cm:
         manager.scale_instance("myapp", 0)
     exc = cm.exception
     self.assertEqual(("quantity must be a positive integer",), exc.args)
示例#14
0
 def test_status_instance_not_found_in_storage(self):
     storage = mock.Mock()
     storage.retrieve_instance.side_effect = api_storage.InstanceNotFoundError()
     manager = managers.BaseManager(storage)
     with self.assertRaises(api_storage.InstanceNotFoundError):
         manager.status("secret")
示例#15
0
 def test_new_instance(self):
     storage = mock.Mock()
     storage.retrieve_instance.side_effect = api_storage.InstanceNotFoundError()
     manager = managers.BaseManager(storage)
     instance = manager.new_instance("someapp")
     storage.store_instance.assert_called_with(instance)
示例#16
0
 def setUp(self):
     self.manager = managers.BaseManager(None)