Exemple #1
0
    def test_dispatcher_coroutines(self):
        from aioxmlrpc.server import SimpleXMLRPCServer
        class Api:
            @asyncio.coroutine
            def _dispatch(self, name, *args):
                yield from asyncio.sleep(1)
                return 'ok_return_from_dispatcher_%s' % name

        server = SimpleXMLRPCServer()
        server.register_instance(Api())

        handler = server.request_handler()

        class Mock:
            def __init__(self):
                self.data = b''

            def write(self, data):
                self.data += data

            @asyncio.coroutine
            def drain(self, *args, **kwargs):
                pass

        handler.writer = Mock()
        asyncio.get_event_loop().run_until_complete(asyncio.gather(
            handler.handle_request(**request_info())
        ))

        self.assertTrue(
            b"<?xml version='1.0'?>\n<methodResponse>\n<params>\n<param>\n<value><string>ok_return_from_dispatcher_info</string></value>\n</param>\n</params>\n</methodResponse>\n" in handler.writer.data)
Exemple #2
0
    def test_instance(self):
        """
        Use an object to keep context
        """
        from aioxmlrpc.server import SimpleXMLRPCServer
        class Api:
            def info(self):
                return 'ok_return_from_api_instance'

        server = SimpleXMLRPCServer()
        server.register_instance(Api())

        handler = server.request_handler()

        class Mock:
            def __init__(self):
                self.data = b''

            def write(self, data):
                self.data += data

            @asyncio.coroutine
            def drain(self, *args, **kwargs):
                pass

        handler.writer = Mock()
        asyncio.get_event_loop().run_until_complete(asyncio.gather(
            handler.handle_request(**request_info())
        ))

        self.assertTrue(
            b"<?xml version='1.0'?>\n<methodResponse>\n<params>\n<param>\n<value><string>ok_return_from_api_instance</string></value>\n</param>\n</params>\n</methodResponse>\n" in handler.writer.data)