2014-05-08 16:59:35 +00:00
|
|
|
from orchestra.utils.tests import BaseTestCase
|
|
|
|
|
2015-04-07 15:14:49 +00:00
|
|
|
from .. import backends, Operation
|
|
|
|
from ..models import Route, Server
|
2014-05-08 16:59:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
class RouterTests(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.host = Server.objects.create(name='web.example.com')
|
|
|
|
self.host1 = Server.objects.create(name='web1.example.com')
|
|
|
|
self.host2 = Server.objects.create(name='web2.example.com')
|
|
|
|
|
|
|
|
def test_list_backends(self):
|
|
|
|
# TODO count actual, register and compare
|
|
|
|
choices = list(Route._meta.get_field_by_name('backend')[0]._choices)
|
|
|
|
self.assertLess(1, len(choices))
|
|
|
|
|
|
|
|
def test_get_instances(self):
|
|
|
|
|
2014-10-04 09:29:18 +00:00
|
|
|
class TestBackend(backends.ServiceController):
|
2014-05-08 16:59:35 +00:00
|
|
|
verbose_name = 'Route'
|
2014-10-04 09:29:18 +00:00
|
|
|
models = ['routes.Route']
|
|
|
|
|
|
|
|
def save(self, instance):
|
|
|
|
pass
|
2014-05-08 16:59:35 +00:00
|
|
|
|
2015-03-31 12:39:08 +00:00
|
|
|
choices = backends.ServiceBackend.get_choices()
|
2014-05-08 16:59:35 +00:00
|
|
|
Route._meta.get_field_by_name('backend')[0]._choices = choices
|
|
|
|
backend = TestBackend.get_name()
|
|
|
|
|
2014-10-04 09:29:18 +00:00
|
|
|
route = Route.objects.create(backend=backend, host=self.host, match='True')
|
|
|
|
operation = Operation(backend=TestBackend, instance=route, action='save')
|
2015-09-04 10:22:14 +00:00
|
|
|
self.assertEqual(1, len(Route.objects.get_for_operation(operation)))
|
2014-10-04 09:29:18 +00:00
|
|
|
|
2014-05-08 16:59:35 +00:00
|
|
|
route = Route.objects.create(backend=backend, host=self.host1,
|
2014-10-04 09:29:18 +00:00
|
|
|
match='route.backend == "%s"' % TestBackend.get_name())
|
2015-09-04 10:22:14 +00:00
|
|
|
self.assertEqual(2, len(Route.objects.get_for_operation(operation)))
|
2014-05-08 16:59:35 +00:00
|
|
|
|
|
|
|
route = Route.objects.create(backend=backend, host=self.host2,
|
2014-10-04 09:29:18 +00:00
|
|
|
match='route.backend == "something else"')
|
2015-09-04 10:22:14 +00:00
|
|
|
self.assertEqual(2, len(Route.objects.get_for_operation(operation)))
|