コード例 #1
0
    def setUp(self):
        super(KombuIntegrationTest, self).setUp()
        self.exchange_name = 'test-%s' % uuid.uuid4()
        self.discovery_hub = StaticServiceRegistryHub()

        self.the_container, self.the_interface = self.create_container(TestInterface, 'test')
        self.lymph_client = self.create_client()
コード例 #2
0
ファイル: __init__.py プロジェクト: kashopi/lymph
class MockServiceNetwork(object):
    def __init__(self):
        self.service_containers = {}
        self.next_port = 1
        self.discovery_hub = StaticServiceRegistryHub()
        self.events = LocalEventSystem()

    def add_service(self, cls, interface_name=None, **kwargs):
        kwargs.setdefault('ip', '300.0.0.1')
        kwargs.setdefault('port', self.next_port)
        self.next_port += 1
        registry = self.discovery_hub.create_registry()
        container = MockServiceContainer(registry=registry, events=self.events, **kwargs)
        container.install_interface(cls, name=interface_name)
        self.service_containers[container.endpoint] = container
        container._mock_network = self
        return container

    def start(self):
        for container in six.itervalues(self.service_containers):
            container.start()

    def stop(self, **kwargs):
        for container in six.itervalues(self.service_containers):
            container.stop()

    def join(self):
        for container in six.itervalues(self.service_containers):
            container.join()
コード例 #3
0
ファイル: __init__.py プロジェクト: dbravender/lymph
class MockServiceNetwork(object):
    def __init__(self):
        self.service_containers = {}
        self.next_port = 1
        self.discovery_hub = StaticServiceRegistryHub()
        self.events = LocalEventSystem()

    def add_service(self, cls, interface_name=None, **kwargs):
        port = self.next_port
        self.next_port += 1
        registry = self.discovery_hub.create_registry()
        container = MockServiceContainer(
            registry=registry,
            events=self.events,
            rpc=MockRPCServer(ip='300.0.0.1', port=port, mock_network=self),
            **kwargs)
        container.install_interface(cls, name=interface_name)
        self.service_containers[container.endpoint] = container
        container._mock_network = self
        return container

    def start(self):
        for container in six.itervalues(self.service_containers):
            container.start()

    def stop(self, **kwargs):
        for container in six.itervalues(self.service_containers):
            container.stop()

    def join(self):
        for container in six.itervalues(self.service_containers):
            container.join()
コード例 #4
0
ファイル: __init__.py プロジェクト: 1-Hash/lymph
class MockServiceNetwork(object):
    def __init__(self):
        self.service_containers = {}
        self.next_port = 1
        self.discovery_hub = StaticServiceRegistryHub()
        self.events = LocalEventSystem()

    def add_service(self, **kwargs):
        port = self.next_port
        self.next_port += 1
        registry = self.discovery_hub.create_registry()
        container = MockServiceContainer(
            registry=registry,
            events=self.events,
            rpc=MockRPCServer(ip="127.0.0.1", port=port, mock_network=self),
            metrics=Aggregator(),
            **kwargs
        )
        self.service_containers[container.endpoint] = container
        container._mock_network = self
        return container

    def start(self):
        for container in six.itervalues(self.service_containers):
            container.start()

    def stop(self, **kwargs):
        for container in six.itervalues(self.service_containers):
            container.stop()

    def join(self):
        for container in six.itervalues(self.service_containers):
            container.join()
コード例 #5
0
class KombuIntegrationTest(LymphIntegrationTestCase, AsyncTestsMixin):
    use_zookeeper = False

    def setUp(self):
        super(KombuIntegrationTest, self).setUp()
        self.exchange_name = 'test-%s' % uuid.uuid4()
        self.discovery_hub = StaticServiceRegistryHub()

        self.the_container, self.the_interface = self.create_container(TestInterface, 'test')
        self.lymph_client = self.create_client()

    def tearDown(self):
        super(LymphIntegrationTestCase, self).tearDown()
        connection = self.get_kombu_connection()
        exchange = kombu.Exchange(self.exchange_name)
        exchange(connection).delete()

        # FIXME: there should be a better way to get this exchange name
        waiting_exchange = kombu.Exchange('%s_waiting' % self.exchange_name)
        waiting_exchange(connection).delete()

        # FIXME: there should be a better way to get the queue names
        for name in ('foo-wait_500', 'test-on_foo'):
            queue = kombu.Queue(name)
            queue(connection).delete()

    def get_kombu_connection(self):
        return kombu.Connection(transport='amqp', host='127.0.0.1')

    def create_event_system(self, **kwargs):
        return KombuEventSystem(self.get_kombu_connection(), self.exchange_name)

    def create_registry(self, **kwargs):
        return self.discovery_hub.create_registry(**kwargs)

    def received_check(self, n):
        def check():
            return len(self.the_interface.collected_events) == n
        return check

    def test_emit(self):
        self.lymph_client.emit('foo', {})
        self.assert_eventually_true(self.received_check(1), timeout=2)
        self.assertEqual(self.the_interface.collected_events[0].evt_type, 'foo')

    def test_delayed_emit(self):
        self.lymph_client.emit('foo', {}, delay=.5)
        self.assert_temporarily_true(self.received_check(0), timeout=.2)
        self.assert_eventually_true(self.received_check(1), timeout=.5)
        self.assertEqual(self.the_interface.collected_events[0].evt_type, 'foo')
コード例 #6
0
ファイル: __init__.py プロジェクト: kashopi/lymph
 def __init__(self):
     self.service_containers = {}
     self.next_port = 1
     self.discovery_hub = StaticServiceRegistryHub()
     self.events = LocalEventSystem()
コード例 #7
0
ファイル: __init__.py プロジェクト: dbravender/lymph
 def __init__(self):
     self.service_containers = {}
     self.next_port = 1
     self.discovery_hub = StaticServiceRegistryHub()
     self.events = LocalEventSystem()
コード例 #8
0
ファイル: test_kombu_events.py プロジェクト: netme/lymph
class KombuIntegrationTest(LymphIntegrationTestCase, AsyncTestsMixin):
    use_zookeeper = False

    def setUp(self):
        super(KombuIntegrationTest, self).setUp()
        self.exchange_name = "test-%s" % uuid.uuid4()
        self.discovery_hub = StaticServiceRegistryHub()

        self.the_container, self.the_interface = self.create_container(TestInterface, "test")
        self.the_container_broadcast, self.the_interface_broadcast = self.create_container(
            TestEventBroadcastInterface, "test"
        )
        self.lymph_client = self.create_client()

    def tearDown(self):
        super(KombuIntegrationTest, self).tearDown()
        connection = self.get_kombu_connection()
        exchange = kombu.Exchange(self.exchange_name)
        exchange(connection).delete()

        waiting_exchange = kombu.Exchange(self.the_container.events.waiting_exchange.name)
        waiting_exchange(connection).delete()

        retry_exchange = kombu.Exchange(self.the_container.events.retry_exchange.name)
        retry_exchange(connection).delete()

        for q in ("test-on_foo", "test-on_retryable_foo"):
            self.delete_queue(q)

    def delete_queue(self, name):
        connection = self.get_kombu_connection()
        queue = kombu.Queue(name)
        queue(connection).delete()

    def get_kombu_connection(self):
        return kombu.Connection(transport="amqp", host="127.0.0.1")

    def create_event_system(self, **kwargs):
        return KombuEventSystem(self.get_kombu_connection(), self.exchange_name)

    def create_registry(self, **kwargs):
        return self.discovery_hub.create_registry(**kwargs)

    def received_check(self, n):
        def check():
            return len(self.the_interface.collected_events) == n

        return check

    def received_broadcast_check(self, n):
        def check():
            return (len(self.the_interface.collected_events) + len(self.the_interface_broadcast.collected_events)) == n

        return check

    def test_emit(self):
        self.lymph_client.emit("foo", {})
        self.assert_eventually_true(self.received_check(1), timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type, "foo")

    def test_delayed_emit(self):
        self.lymph_client.emit("foo", {}, delay=0.5)
        self.addCleanup(self.delete_queue, "foo-wait_500")
        self.assert_temporarily_true(self.received_check(0), timeout=0.2)
        self.assert_eventually_true(self.received_check(1), timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type, "foo")

    def test_broadcast_event(self):
        self.lymph_client.emit("foo_broadcast", {})
        self.assert_eventually_true(self.received_broadcast_check(2), timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type, "foo_broadcast")
        self.assertEqual(self.the_interface_broadcast.collected_events[0].evt_type, "foo_broadcast")

    def test_retryable_event(self):
        self.lymph_client.emit("retryable_foo", {})
        self.assert_eventually_true(self.received_check(3), timeout=10)
コード例 #9
0
ファイル: test_kombu_events.py プロジェクト: senthilkvs/lymph
class KombuIntegrationTest(LymphIntegrationTestCase, AsyncTestsMixin):
    use_zookeeper = False

    def setUp(self):
        super(KombuIntegrationTest, self).setUp()
        self.exchange_name = 'test-%s' % uuid.uuid4()
        self.discovery_hub = StaticServiceRegistryHub()

        self.the_container, self.the_interface = self.create_container(
            TestInterface, 'test')
        self.the_container_broadcast, self.the_interface_broadcast = self.create_container(
            TestEventBroadcastInterface, 'test')
        self.lymph_client = self.create_client()

    def tearDown(self):
        super(KombuIntegrationTest, self).tearDown()
        connection = self.get_kombu_connection()
        exchange = kombu.Exchange(self.exchange_name)
        exchange(connection).delete()

        waiting_exchange = kombu.Exchange(
            self.the_container.events.waiting_exchange.name)
        waiting_exchange(connection).delete()

        retry_exchange = kombu.Exchange(
            self.the_container.events.retry_exchange.name)
        retry_exchange(connection).delete()

        for q in ('test-on_foo', 'test-on_retryable_foo'):
            self.delete_queue(q)

    def delete_queue(self, name):
        connection = self.get_kombu_connection()
        queue = kombu.Queue(name)
        queue(connection).delete()

    def get_kombu_connection(self):
        return kombu.Connection(transport='amqp', host='127.0.0.1')

    def create_event_system(self, **kwargs):
        return KombuEventSystem(self.get_kombu_connection(),
                                self.exchange_name)

    def create_registry(self, **kwargs):
        return self.discovery_hub.create_registry(**kwargs)

    def received_check(self, n):
        def check():
            return len(self.the_interface.collected_events) == n

        return check

    def received_broadcast_check(self, n):
        def check():
            return (len(self.the_interface.collected_events) +
                    len(self.the_interface_broadcast.collected_events)) == n

        return check

    def test_emit(self):
        self.lymph_client.emit('foo', {})
        self.assert_eventually_true(self.received_check(1), timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type,
                         'foo')

    def test_delayed_emit(self):
        self.lymph_client.emit('foo', {}, delay=.5)
        self.addCleanup(self.delete_queue, 'foo-wait_500')
        self.assert_temporarily_true(self.received_check(0), timeout=.2)
        self.assert_eventually_true(self.received_check(1), timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type,
                         'foo')

    def test_broadcast_event(self):
        self.lymph_client.emit('foo_broadcast', {})
        self.assert_eventually_true(self.received_broadcast_check(2),
                                    timeout=10)
        self.assertEqual(self.the_interface.collected_events[0].evt_type,
                         'foo_broadcast')
        self.assertEqual(
            self.the_interface_broadcast.collected_events[0].evt_type,
            'foo_broadcast')

    def test_retryable_event(self):
        self.lymph_client.emit('retryable_foo', {})
        self.assert_eventually_true(self.received_check(3), timeout=10)