コード例 #1
0
    def test_singular_rpc(self):
        handler_results = []
        sender_results = []

        @self.peer.accept_rpc("service", 0, 0, "method")
        def handler(x):
            handler_results.append(x)
            return x**2

        for i in xrange(4):
            backend.pause()

        sender_results.append(
            self.sender.rpc("service", 0, "method", (1, ), {},
                            timeout=TIMEOUT))
        sender_results.append(
            self.sender.rpc("service", 0, "method", (2, ), {},
                            timeout=TIMEOUT))
        sender_results.append(
            self.sender.rpc("service", 0, "method", (3, ), {},
                            timeout=TIMEOUT))
        sender_results.append(
            self.sender.rpc("service", 0, "method", (4, ), {},
                            timeout=TIMEOUT))

        self.assertEqual(handler_results, [1, 2, 3, 4])
        self.assertEqual(sender_results, [1, 4, 9, 16])
コード例 #2
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_async_rpc_success(self):
        handler_results = []
        sender_results = []

        def handler(x):
            handler_results.append(x)
            return x ** 2

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        rpcs = []

        rpcs.append(self.sender.send_rpc("service", 0, "method", (1,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (2,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (3,), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (4,), {}))

        while rpcs:
            rpc = junction.wait_any(rpcs, TIMEOUT)
            rpcs.remove(rpc)
            sender_results.append(rpc.value)

        self.assertEqual(handler_results, [1, 2, 3, 4])
        self.assertEqual(sender_results, [1, 4, 9, 16])
コード例 #3
0
    def test_async_rpc_success(self):
        handler_results = []
        sender_results = []

        def handler(x):
            handler_results.append(x)
            return x**2

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        rpcs = []

        rpcs.append(self.sender.send_rpc("service", 0, "method", (1, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (2, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (3, ), {}))
        rpcs.append(self.sender.send_rpc("service", 0, "method", (4, ), {}))

        while rpcs:
            rpc = junction.wait_any(rpcs, TIMEOUT)
            rpcs.remove(rpc)
            sender_results.append(rpc.value)

        self.assertEqual(handler_results, [1, 2, 3, 4])
        self.assertEqual(sender_results, [1, 4, 9, 16])
コード例 #4
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_rpc_ruled_out_by_method(self):
        results = []

        self.peer.accept_rpc("service", 0, 0, "method1", results.append)

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.UnsupportedRemoteMethod,
                self.sender.rpc, "service", 0, "method2", (1,), {}, TIMEOUT)
コード例 #5
0
    def test_rpc_ruled_out_by_method(self):
        results = []

        self.peer.accept_rpc("service", 0, 0, "method1", results.append)

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.UnsupportedRemoteMethod,
                          self.sender.rpc, "service", 0, "method2", (1, ), {},
                          TIMEOUT)
コード例 #6
0
    def test_rpc_ruled_out_by_routing_id(self):
        results = []

        self.peer.accept_rpc("service", 1, 0, "method", results.append)

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.Unroutable, self.sender.rpc,
                          "service", 1, "method", (1, ), {}, TIMEOUT)

        self.assertEqual(results, [])
コード例 #7
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_rpc_ruled_out_by_routing_id(self):
        results = []

        self.peer.accept_rpc("service", 1, 0, "method", results.append)

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.Unroutable,
                self.sender.rpc, "service", 1, "method", (1,), {}, TIMEOUT)

        self.assertEqual(results, [])
コード例 #8
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_rpc_handler_recognized_exception(self):
        class CustomError(junction.errors.HandledError):
            code = 3

        def handler():
            raise CustomError("gaah")

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.rpc("service", 0, "method", (), {}, TIMEOUT)
        except CustomError, exc:
            result = exc
コード例 #9
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_rpc_handler_unknown_exception(self):
        class CustomError(Exception):
            pass

        def handler():
            raise CustomError("WOOPS")

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.rpc("service", 0, "method", (), {}, TIMEOUT)
        except junction.errors.RemoteException, exc:
            result = exc
コード例 #10
0
    def test_rpc_handler_unknown_exception(self):
        class CustomError(Exception):
            pass

        def handler():
            raise CustomError("WOOPS")

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.rpc("service", 0, "method", (), {}, TIMEOUT)
        except junction.errors.RemoteException, exc:
            result = exc
コード例 #11
0
    def test_rpc_handler_recognized_exception(self):
        class CustomError(junction.errors.HandledError):
            code = 3

        def handler():
            raise CustomError("gaah")

        self.peer.accept_rpc("service", 0, 0, "method", handler)

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.rpc("service", 0, "method", (), {}, TIMEOUT)
        except CustomError, exc:
            result = exc
コード例 #12
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_rpc_ruled_out_by_service(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_rpc("service1", 0, 0, "method")
        def handler(item):
            results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.Unroutable,
                self.sender.rpc, "service2", 0, "method", (1,), {}, TIMEOUT)

        assert ev.wait(TIMEOUT)

        self.assertEqual(results, [])
コード例 #13
0
    def test_rpc_ruled_out_by_service(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_rpc("service1", 0, 0, "method")
        def handler(item):
            results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        self.assertRaises(junction.errors.Unroutable, self.sender.rpc,
                          "service2", 0, "method", (1, ), {}, TIMEOUT)

        assert ev.wait(TIMEOUT)

        self.assertEqual(results, [])
コード例 #14
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_chunked_publish_success(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service", 0, 0, "method")
        def handler(items):
            for item in items:
                results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        self.sender.publish("service", 0, "method", ((x for x in xrange(5)),))

        assert not ev.wait(TIMEOUT)

        self.assertEqual(results, [0, 1, 2, 3, 4])
コード例 #15
0
    def test_chunked_publish_success(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service", 0, 0, "method")
        def handler(items):
            for item in items:
                results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        self.sender.publish("service", 0, "method", ((x for x in xrange(5)), ))

        assert not ev.wait(TIMEOUT)

        self.assertEqual(results, [0, 1, 2, 3, 4])
コード例 #16
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_publish_success(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service", 0, 0, "method")
        def handler(item):
            results.append(item)
            if len(results) == 4:
                ev.set()

        for i in xrange(4):
            backend.pause()

        self.sender.publish("service", 0, "method", (1,), {})
        self.sender.publish("service", 0, "method", (2,), {})
        self.sender.publish("service", 0, "method", (3,), {})
        self.sender.publish("service", 0, "method", (4,), {})

        ev.wait(TIMEOUT)

        self.assertEqual(results, [1, 2, 3, 4])
コード例 #17
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_publish_ruled_out_by_service(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service1", 0, 0, "method")
        def handler(item):
            results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.publish("service2", 0, "method", (1,), {})
        except junction.errors.Unroutable:
            # eat this as Clients don't get this raised, only Hubs
            pass

        assert ev.wait(TIMEOUT)

        self.assertEqual(results, [])
コード例 #18
0
    def test_chunked_publish(self):
        results = []

        @self.peer.accept_rpc('service', 0, 0, 'method')
        def handler(chunks):
            for chunk in chunks:
                results.append(chunk)
            return 5

        for i in xrange(4):
            backend.pause()

        def gen():
            yield 1
            yield 2

        self.assertEqual(
            self.sender.rpc('service', 0, 'method', (gen(), ),
                            timeout=TIMEOUT), 5)

        self.assertEqual(results, [1, 2])
コード例 #19
0
    def test_publish_success(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service", 0, 0, "method")
        def handler(item):
            results.append(item)
            if len(results) == 4:
                ev.set()

        for i in xrange(4):
            backend.pause()

        self.sender.publish("service", 0, "method", (1, ), {})
        self.sender.publish("service", 0, "method", (2, ), {})
        self.sender.publish("service", 0, "method", (3, ), {})
        self.sender.publish("service", 0, "method", (4, ), {})

        ev.wait(TIMEOUT)

        self.assertEqual(results, [1, 2, 3, 4])
コード例 #20
0
    def test_publish_ruled_out_by_service(self):
        results = []
        ev = backend.Event()

        @self.peer.accept_publish("service1", 0, 0, "method")
        def handler(item):
            results.append(item)
            ev.set()

        for i in xrange(4):
            backend.pause()

        try:
            self.sender.publish("service2", 0, "method", (1, ), {})
        except junction.errors.Unroutable:
            # eat this as Clients don't get this raised, only Hubs
            pass

        assert ev.wait(TIMEOUT)

        self.assertEqual(results, [])
コード例 #21
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_chunked_publish(self):
        results = []

        @self.peer.accept_rpc('service', 0, 0, 'method')
        def handler(chunks):
            for chunk in chunks:
                results.append(chunk)
            return 5

        for i in xrange(4):
            backend.pause()

        def gen():
            yield 1
            yield 2

        self.assertEqual(
                self.sender.rpc('service', 0, 'method', (gen(),),
                    timeout=TIMEOUT),
                5)

        self.assertEqual(results, [1,2])
コード例 #22
0
ファイル: tests_on_eventlet.py プロジェクト: teepark/junction
    def test_singular_rpc(self):
        handler_results = []
        sender_results = []

        @self.peer.accept_rpc("service", 0, 0, "method")
        def handler(x):
            handler_results.append(x)
            return x ** 2

        for i in xrange(4):
            backend.pause()

        sender_results.append(self.sender.rpc("service", 0, "method", (1,), {},
            timeout=TIMEOUT))
        sender_results.append(self.sender.rpc("service", 0, "method", (2,), {},
            timeout=TIMEOUT))
        sender_results.append(self.sender.rpc("service", 0, "method", (3,), {},
            timeout=TIMEOUT))
        sender_results.append(self.sender.rpc("service", 0, "method", (4,), {},
            timeout=TIMEOUT))

        self.assertEqual(handler_results, [1,2,3,4])
        self.assertEqual(sender_results, [1,4,9,16])