From 50eef470da5c2a1e9447a04ebb1fbb6b817f1fde Mon Sep 17 00:00:00 2001 From: Gabriel Shaar Date: Sat, 29 Oct 2022 13:15:09 +0300 Subject: [PATCH 1/4] remove RequestHandler dependency on Rsocket base class as argument. --- examples/server_with_fragmenting.py | 4 +- examples/server_with_lease.py | 4 +- examples/server_with_routing.py | 4 +- examples/test_examples.py | 6 +- performance/performance_server.py | 4 +- rsocket/reactivex/reactivex_handler.py | 4 -- .../reactivex/reactivex_handler_adapter.py | 10 ++-- rsocket/request_handler.py | 4 -- rsocket/routing/routing_request_handler.py | 3 +- rsocket/rsocket_base.py | 6 +- rsocket/rx_support/rx_handler.py | 4 -- rsocket/rx_support/rx_handler_adapter.py | 10 ++-- tests/rsocket/helpers.py | 7 +-- tests/rsocket/test_authentication.py | 6 +- tests/rsocket/test_connection_lost.py | 8 +-- tests/rsocket/test_fire_and_forget.py | 15 +++-- tests/rsocket/test_load_balancer.py | 4 +- tests/rsocket/test_metadata_push.py | 15 +++-- tests/rsocket/test_request_channel.py | 11 ++-- tests/rsocket/test_request_response.py | 17 +++--- tests/rsocket/test_routing.py | 60 +++++++++---------- tests/rsocket/test_setup.py | 3 +- tests/rx_support/test_rx_server_side.py | 14 ++--- .../test_reactivex_server_side.py | 8 +-- 24 files changed, 103 insertions(+), 128 deletions(-) diff --git a/examples/server_with_fragmenting.py b/examples/server_with_fragmenting.py index 54097688..10fd9c1e 100644 --- a/examples/server_with_fragmenting.py +++ b/examples/server_with_fragmenting.py @@ -98,8 +98,8 @@ async def authenticator(route: str, authentication: Authentication): raise Exception('Unsupported authentication') -def handler_factory(socket): - return RoutingRequestHandler(socket, router, authenticator) +def handler_factory(): + return RoutingRequestHandler(router, authenticator) def handle_client(reader, writer): diff --git a/examples/server_with_lease.py b/examples/server_with_lease.py index e56c7b5c..6a03300d 100644 --- a/examples/server_with_lease.py +++ b/examples/server_with_lease.py @@ -20,8 +20,8 @@ async def single_request_response(payload, composite_metadata): return create_future(Payload(b'single_response')) -def handler_factory(socket): - return RoutingRequestHandler(socket, router) +def handler_factory(): + return RoutingRequestHandler(router) def handle_client(reader, writer): diff --git a/examples/server_with_routing.py b/examples/server_with_routing.py index 399a4ad2..b5526205 100644 --- a/examples/server_with_routing.py +++ b/examples/server_with_routing.py @@ -103,8 +103,8 @@ async def authenticator(route: str, authentication: Authentication): raise Exception('Unsupported authentication') -def handler_factory(socket): - return RoutingRequestHandler(socket, router, authenticator) +def handler_factory(): + return RoutingRequestHandler(router, authenticator) def handle_client(reader, writer): diff --git a/examples/test_examples.py b/examples/test_examples.py index fdaa8124..08a44326 100644 --- a/examples/test_examples.py +++ b/examples/test_examples.py @@ -36,7 +36,7 @@ def test_quic_client_server(unused_tcp_port): @pytest.mark.timeout(30) def test_client_server_with_routing(unused_tcp_port): - pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', str(unused_tcp_port)) + pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', '--port', str(unused_tcp_port)) try: sleep(2) @@ -64,7 +64,7 @@ def test_client_java_server_with_routing_and_fragmentation(unused_tcp_port): @pytest.mark.timeout(30) def test_rx_client_server_with_routing(unused_tcp_port): - pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', str(unused_tcp_port)) + pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', '--port', str(unused_tcp_port)) try: sleep(2) @@ -136,7 +136,7 @@ def run_java_class(java_class: str, unused_tcp_port: int): def test_java_client_server(unused_tcp_port): - pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', str(unused_tcp_port)) + pid = os.spawnlp(os.P_NOWAIT, 'python3', 'python3', './server_with_routing.py', '--port', str(unused_tcp_port)) try: sleep(2) diff --git a/performance/performance_server.py b/performance/performance_server.py index 07ca2d02..e234c4f2 100644 --- a/performance/performance_server.py +++ b/performance/performance_server.py @@ -96,8 +96,8 @@ async def authenticator(route: str, authentication: Authentication): raise Exception('Unsupported authentication') -def handler_factory(socket): - return RoutingRequestHandler(socket, router, authenticator) +def handler_factory(): + return RoutingRequestHandler(router, authenticator) def client_handler_factory(on_ready=None): diff --git a/rsocket/reactivex/reactivex_handler.py b/rsocket/reactivex/reactivex_handler.py index aa4b2164..cc9f482f 100644 --- a/rsocket/reactivex/reactivex_handler.py +++ b/rsocket/reactivex/reactivex_handler.py @@ -10,13 +10,9 @@ from rsocket.logger import logger from rsocket.payload import Payload from rsocket.reactivex.reactivex_channel import ReactivexChannel -from rsocket.rsocket import RSocket class ReactivexHandler: - def __init__(self, socket: RSocket): - super().__init__() - self.socket = socket @abstractmethod async def on_setup(self, diff --git a/rsocket/reactivex/reactivex_handler_adapter.py b/rsocket/reactivex/reactivex_handler_adapter.py index 82232ac2..6a63cdae 100644 --- a/rsocket/reactivex/reactivex_handler_adapter.py +++ b/rsocket/reactivex/reactivex_handler_adapter.py @@ -12,20 +12,18 @@ from rsocket.reactivex.from_rsocket_publisher import RxSubscriberFromObserver from rsocket.reactivex.reactivex_handler import ReactivexHandler from rsocket.request_handler import RequestHandler -from rsocket.rsocket import RSocket -def reactivex_handler_factory(handler_factory: Callable[[RSocket], ReactivexHandler]): - def create_handler(socket: RSocket): - return ReactivexHandlerAdapter(handler_factory(socket), socket) +def reactivex_handler_factory(handler_factory: Callable[[], ReactivexHandler]): + def create_handler(): + return ReactivexHandlerAdapter(handler_factory()) return create_handler class ReactivexHandlerAdapter(RequestHandler): - def __init__(self, delegate: ReactivexHandler, socket: RSocket): - super().__init__(socket) + def __init__(self, delegate: ReactivexHandler): self.delegate = delegate async def on_setup(self, data_encoding: bytes, metadata_encoding: bytes, payload: Payload): diff --git a/rsocket/request_handler.py b/rsocket/request_handler.py index 065e62df..d66e085b 100644 --- a/rsocket/request_handler.py +++ b/rsocket/request_handler.py @@ -15,10 +15,6 @@ class RequestHandler(metaclass=ABCMeta): - def __init__(self, socket): - super().__init__() - self.socket = socket - @abstractmethod async def on_setup(self, data_encoding: bytes, diff --git a/rsocket/routing/routing_request_handler.py b/rsocket/routing/routing_request_handler.py index 5f4b94f8..64e764f3 100644 --- a/rsocket/routing/routing_request_handler.py +++ b/rsocket/routing/routing_request_handler.py @@ -28,11 +28,10 @@ class RoutingRequestHandler(BaseRequestHandler): ) def __init__(self, - socket, router: RequestRouter, authentication_verifier: Optional[ Callable[[str, Authentication], Coroutine[None, None, None]]] = None): - super().__init__(socket) + super().__init__() self.router = router self.authentication_verifier = authentication_verifier self.data_encoding = None diff --git a/rsocket/rsocket_base.py b/rsocket/rsocket_base.py index 59fb369b..6e369c86 100644 --- a/rsocket/rsocket_base.py +++ b/rsocket/rsocket_base.py @@ -57,7 +57,7 @@ def on_next(self, value, is_complete=False): self._socket.send_lease(value) def __init__(self, - handler_factory: Callable[['RSocketBase'], RequestHandler] = BaseRequestHandler, + handler_factory: Callable[[], RequestHandler] = BaseRequestHandler, honor_lease=False, lease_publisher: Optional[Publisher] = None, request_queue_size: int = 0, @@ -82,7 +82,7 @@ def __init__(self, self._lease_publisher = lease_publisher self._sender_task = None self._receiver_task = None - self._handler = self._handler_factory(self) + self._handler = self._handler_factory() self._responder_lease = None self._requester_lease = None self._is_closing = False @@ -150,7 +150,7 @@ def _start_task_if_not_closing(self, task_factory: Callable[[], Coroutine]) -> O return asyncio.create_task(task_factory()) def set_handler_using_factory(self, handler_factory) -> RequestHandler: - self._handler = handler_factory(self) + self._handler = handler_factory() return self._handler def _allocate_stream(self) -> int: diff --git a/rsocket/rx_support/rx_handler.py b/rsocket/rx_support/rx_handler.py index 14c1bdd4..dfd11990 100644 --- a/rsocket/rx_support/rx_handler.py +++ b/rsocket/rx_support/rx_handler.py @@ -10,13 +10,9 @@ from rsocket.logger import logger from rsocket.payload import Payload from rsocket.rx_support.rx_channel import RxChannel -from rsocket.rsocket import RSocket class RxHandler: - def __init__(self, socket: RSocket): - super().__init__() - self.socket = socket @abstractmethod async def on_setup(self, diff --git a/rsocket/rx_support/rx_handler_adapter.py b/rsocket/rx_support/rx_handler_adapter.py index 79daf3d7..dcb2c19f 100644 --- a/rsocket/rx_support/rx_handler_adapter.py +++ b/rsocket/rx_support/rx_handler_adapter.py @@ -9,23 +9,21 @@ from rsocket.error_codes import ErrorCode from rsocket.payload import Payload from rsocket.request_handler import RequestHandler -from rsocket.rsocket import RSocket from rsocket.rx_support.back_pressure_publisher import BackPressurePublisher from rsocket.rx_support.from_rsocket_publisher import RxSubscriberFromObserver from rsocket.rx_support.rx_handler import RxHandler -def rx_handler_factory(handler_factory: Callable[[RSocket], RxHandler]): - def create_handler(socket: RSocket): - return RxHandlerAdapter(handler_factory(socket), socket) +def rx_handler_factory(handler_factory: Callable[[], RxHandler]): + def create_handler(): + return RxHandlerAdapter(handler_factory()) return create_handler class RxHandlerAdapter(RequestHandler): - def __init__(self, delegate: RxHandler, socket: RSocket): - super().__init__(socket) + def __init__(self, delegate: RxHandler): self.delegate = delegate async def on_setup(self, data_encoding: bytes, metadata_encoding: bytes, payload: Payload): diff --git a/tests/rsocket/helpers.py b/tests/rsocket/helpers.py index 096f5875..bde6e830 100644 --- a/tests/rsocket/helpers.py +++ b/tests/rsocket/helpers.py @@ -57,8 +57,7 @@ def assert_no_open_streams(client: RSocketBase, server: RSocketBase): class IdentifiedHandler(BaseRequestHandler): - def __init__(self, socket, server_id: int, delay=timedelta(0)): - super().__init__(socket) + def __init__(self, server_id: int, delay=timedelta(0)): self._delay = delay self._server_id = server_id @@ -74,8 +73,8 @@ def __init__(self, self._server_id = server_id self._handler_factory = handler_factory - def factory(self, socket) -> BaseRequestHandler: - handler = self._handler_factory(socket, self._server_id, self._delay) + def factory(self) -> BaseRequestHandler: + handler = self._handler_factory(self._server_id, self._delay) self._on_handler_create(handler) return handler diff --git a/tests/rsocket/test_authentication.py b/tests/rsocket/test_authentication.py index 4f296978..e21559c3 100644 --- a/tests/rsocket/test_authentication.py +++ b/tests/rsocket/test_authentication.py @@ -65,8 +65,7 @@ async def test_authentication_frame_simple(): async def test_authentication_success_on_setup(lazy_pipe): class Handler(BaseRequestHandler): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): self._authenticated = False async def on_setup(self, @@ -100,8 +99,7 @@ async def test_authentication_failure_on_setup(lazy_pipe): received_error: Optional[tuple] = None class ServerHandler(BaseRequestHandler): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): self._authenticated = False async def on_setup(self, diff --git a/tests/rsocket/test_connection_lost.py b/tests/rsocket/test_connection_lost.py index 2953294f..42439beb 100644 --- a/tests/rsocket/test_connection_lost.py +++ b/tests/rsocket/test_connection_lost.py @@ -32,8 +32,8 @@ class ServerHandler(IdentifiedHandler): - def __init__(self, socket, server_id: int, delay=timedelta(0)): - super().__init__(socket, server_id, delay) + def __init__(self, server_id: int, delay=timedelta(0)): + super().__init__(server_id, delay) self._delay = delay async def request_response(self, payload: Payload) -> Awaitable[Payload]: @@ -285,11 +285,11 @@ async def start_quic_service(waiter: asyncio.Event, container, port: int, genera is_client=False ) - def handler_factory(*args, **kwargs): + def handler_factory(): return IdentifiedHandlerFactory( next(index_iterator), ServerHandler, - delay=timedelta(seconds=1)).factory(*args, **kwargs) + delay=timedelta(seconds=1)).factory() def on_server_create(server): container.server = server diff --git a/tests/rsocket/test_fire_and_forget.py b/tests/rsocket/test_fire_and_forget.py index 2a56fa95..e5692dd3 100644 --- a/tests/rsocket/test_fire_and_forget.py +++ b/tests/rsocket/test_fire_and_forget.py @@ -7,8 +7,7 @@ class FireAndForgetHandler(BaseRequestHandler): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): self.received = asyncio.Event() self.received_payload: Optional[Payload] = None @@ -20,9 +19,9 @@ async def request_fire_and_forget(self, payload: Payload): async def test_request_fire_and_forget(lazy_pipe): handler: Optional[FireAndForgetHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = FireAndForgetHandler(socket) + handler = FireAndForgetHandler() return handler async with lazy_pipe( @@ -38,9 +37,9 @@ def handler_factory(socket): async def test_request_fire_and_forget_wait(lazy_pipe): handler: Optional[FireAndForgetHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = FireAndForgetHandler(socket) + handler = FireAndForgetHandler() return handler async with lazy_pipe( @@ -53,9 +52,9 @@ def handler_factory(socket): async def test_request_fire_and_forget_awaitable_client(lazy_pipe): handler: Optional[FireAndForgetHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = FireAndForgetHandler(socket) + handler = FireAndForgetHandler() return handler async with lazy_pipe( diff --git a/tests/rsocket/test_load_balancer.py b/tests/rsocket/test_load_balancer.py index 271c0afe..be0283f6 100644 --- a/tests/rsocket/test_load_balancer.py +++ b/tests/rsocket/test_load_balancer.py @@ -24,8 +24,8 @@ def to_response_payload(payload, server_id): class Handler(IdentifiedHandler): - def __init__(self, socket, server_id: int, delay=timedelta(0)): - super().__init__(socket, server_id, delay) + def __init__(self, server_id: int, delay=timedelta(0)): + super().__init__(server_id, delay) self.fnf = [] self.metadata = [] diff --git a/tests/rsocket/test_metadata_push.py b/tests/rsocket/test_metadata_push.py index db25d5e8..2bdb2191 100644 --- a/tests/rsocket/test_metadata_push.py +++ b/tests/rsocket/test_metadata_push.py @@ -9,8 +9,7 @@ class MetadataPushHandler(BaseRequestHandler): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): self.received = asyncio.Event() self.received_payload: Optional[Payload] = None @@ -22,9 +21,9 @@ async def on_metadata_push(self, payload: Payload): async def test_metadata_push(pipe): handler: Optional[MetadataPushHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = MetadataPushHandler(socket) + handler = MetadataPushHandler() return handler server, client = get_components(pipe) @@ -41,9 +40,9 @@ def handler_factory(socket): async def test_metadata_push_await(pipe): handler: Optional[MetadataPushHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = MetadataPushHandler(socket) + handler = MetadataPushHandler() return handler server, client = get_components(pipe) @@ -55,9 +54,9 @@ def handler_factory(socket): async def test_metadata_push_awaitable_client(pipe): handler: Optional[MetadataPushHandler] = None - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = MetadataPushHandler(socket) + handler = MetadataPushHandler() return handler server: RSocketServer = pipe[0] diff --git a/tests/rsocket/test_request_channel.py b/tests/rsocket/test_request_channel.py index e43d4980..0b156712 100644 --- a/tests/rsocket/test_request_channel.py +++ b/tests/rsocket/test_request_channel.py @@ -37,13 +37,12 @@ async def request_channel(self, payload: Payload) -> Tuple[Optional[Publisher], async def test_request_channel_immediately_finished_without_payloads(pipe: Tuple[RSocketServer, RSocketClient]): server, client = get_components(pipe) - handler: Optional[RequestHandler] = None response_stream_finished = asyncio.Event() class Handler(BaseRequestHandler, DefaultPublisherSubscription, DefaultSubscriber): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): + super().__init__() self.received_messages = [] def on_next(self, value, is_complete=False): @@ -62,14 +61,16 @@ def request(self, n: int): async def request_channel(self, payload: Payload) -> Tuple[Optional[Publisher], Optional[Subscriber]]: return self, self + handler: Optional[Handler] = None + class RequesterPublisher(DefaultPublisherSubscription): def request(self, n: int): self._subscriber.on_complete() - def handler_factory(socket): + def handler_factory(): nonlocal handler - handler = Handler(socket) + handler = Handler() return handler server.set_handler_using_factory(handler_factory) diff --git a/tests/rsocket/test_request_response.py b/tests/rsocket/test_request_response.py index 5d2e33d2..72f7e340 100644 --- a/tests/rsocket/test_request_response.py +++ b/tests/rsocket/test_request_response.py @@ -1,5 +1,6 @@ import asyncio import functools +from typing import Awaitable import pytest @@ -17,7 +18,7 @@ async def request_response(self, request: Payload): return future_from_payload(request) server, client = get_components(pipe) - server._handler = Handler(server) + server.set_handler_using_factory(Handler) response = await AwaitableRSocket(client).request_response(Payload(b'dog', b'cat')) assert response == Payload(b'data: dog', b'meta: cat') @@ -29,7 +30,7 @@ async def request_response(self, request: Payload): return future_from_payload(request) server, client = get_components(pipe) - server._handler = Handler(server) + server.set_handler_using_factory(Handler) for x in range(2): response = await client.request_response(Payload(b'dog', b'cat')) @@ -43,7 +44,7 @@ async def request_response(self, payload: Payload): return self server, client = get_components(pipe) - server._handler = Handler(server) + server.set_handler_using_factory(Handler) with pytest.raises(RuntimeError): await client.request_response(Payload()) @@ -58,7 +59,7 @@ async def request_response(self, payload: Payload): return server_future server, client = get_components(pipe) - server._handler = Handler(server) + server.set_handler_using_factory(Handler) future = client.request_response(Payload()) @@ -90,9 +91,9 @@ def future_done(other: asyncio.Future, current: asyncio.Future): payload.metadata = b'(server ' + payload.metadata + b')' other.set_result(payload) - async def request_response(self, payload: Payload): + async def request_response(self, payload: Payload) -> Awaitable[Payload]: future = create_future() - self.socket.request_response(payload).add_done_callback( + server.request_response(payload).add_done_callback( functools.partial(self.future_done, future)) return future @@ -102,8 +103,8 @@ async def request_response(self, payload: Payload): b'(client ' + payload.metadata + b')')) server, client = get_components(pipe) - server._handler = ServerHandler(server) - client._handler = ClientHandler(client) + server.set_handler_using_factory(ServerHandler) + client.set_handler_using_factory(ClientHandler) response = await client.request_response(Payload(b'data', b'metadata')) diff --git a/tests/rsocket/test_routing.py b/tests/rsocket/test_routing.py index b4498e20..19e1ae08 100644 --- a/tests/rsocket/test_routing.py +++ b/tests/rsocket/test_routing.py @@ -20,8 +20,8 @@ async def test_routed_request_stream_properly_finished(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) def feed(): for x in range(3): @@ -46,8 +46,8 @@ async def response_stream(payload, composite_metadata): async def test_routed_request_response_properly_finished(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def response(): @@ -64,8 +64,8 @@ async def response(): async def test_routed_request_response_with_payload_mapper(lazy_pipe): router = RequestRouter(lambda cls, _: json.loads(_.data.decode())) - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def response(payload: dict): @@ -83,8 +83,8 @@ async def response(payload: dict): async def test_routed_request_response_properly_finished_accept_payload_only(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def response(payload: Payload): @@ -101,8 +101,8 @@ async def response(payload: Payload): async def test_routed_request_response_properly_finished_accept_metadata_only(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def response(composite_metadata: CompositeMetadata): @@ -119,8 +119,8 @@ async def response(composite_metadata: CompositeMetadata): async def test_routed_request_response_properly_finished_accept_payload_and_metadata(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def response(payload: Payload, composite_metadata: CompositeMetadata): @@ -141,8 +141,8 @@ async def test_routed_fire_and_forget(lazy_pipe): received_data = None received = asyncio.Event() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.fire_and_forget('test.path') async def fire_and_forget(payload): @@ -162,8 +162,8 @@ async def fire_and_forget(payload): async def test_routed_request_channel_properly_finished(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) def feed(): for x in range(3): @@ -190,8 +190,8 @@ async def test_routed_push_metadata(lazy_pipe): received_metadata = None received = asyncio.Event() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.metadata_push('test.path') async def metadata_push(payload): @@ -212,8 +212,8 @@ async def metadata_push(payload): async def test_invalid_request_response(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.response('test.path') async def request_response(): @@ -231,8 +231,8 @@ async def request_response(): async def test_invalid_request_stream(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.stream('test.path') async def request_stream(): @@ -250,8 +250,8 @@ async def request_stream(): async def test_invalid_request_channel(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) @router.channel('test.path') async def request_channel(): @@ -269,8 +269,8 @@ async def request_channel(): async def test_no_route_in_request(lazy_pipe): router = RequestRouter() - def handler_factory(socket): - return RoutingRequestHandler(socket, router) + def handler_factory(): + return RoutingRequestHandler(router) async with lazy_pipe( client_arguments={'metadata_encoding': WellKnownMimeTypes.MESSAGE_RSOCKET_COMPOSITE_METADATA}, @@ -292,8 +292,8 @@ async def authenticate(path: str, authentication: Authentication): async def request_channel(): raise Exception('error from server') - def handler_factory(socket): - return RoutingRequestHandler(socket, router, authentication_verifier=authenticate) + def handler_factory(): + return RoutingRequestHandler(router, authentication_verifier=authenticate) async with lazy_pipe( client_arguments={'metadata_encoding': WellKnownMimeTypes.MESSAGE_RSOCKET_COMPOSITE_METADATA}, @@ -318,8 +318,8 @@ async def authenticate(path: str, authentication: Authentication): async def response(): return create_future(Payload(b'result')) - def handler_factory(socket): - return RoutingRequestHandler(socket, router, authentication_verifier=authenticate) + def handler_factory(): + return RoutingRequestHandler(router, authentication_verifier=authenticate) async with lazy_pipe( client_arguments={'metadata_encoding': WellKnownMimeTypes.MESSAGE_RSOCKET_COMPOSITE_METADATA}, diff --git a/tests/rsocket/test_setup.py b/tests/rsocket/test_setup.py index 33d73c48..6fda85ef 100644 --- a/tests/rsocket/test_setup.py +++ b/tests/rsocket/test_setup.py @@ -18,8 +18,7 @@ async def test_setup_with_explicit_data_encoding(lazy_pipe, data_mimetype): received_data_encoding: Optional[bytes] = None class ServerHandler(BaseRequestHandler): - def __init__(self, socket): - super().__init__(socket) + def __init__(self): self._authenticated = False async def on_setup(self, diff --git a/tests/rx_support/test_rx_server_side.py b/tests/rx_support/test_rx_server_side.py index c72bdbe5..04ca89b3 100644 --- a/tests/rx_support/test_rx_server_side.py +++ b/tests/rx_support/test_rx_server_side.py @@ -8,18 +8,16 @@ from rsocket.frame_helpers import ensure_bytes from rsocket.payload import Payload -from rsocket.rsocket import RSocket +from rsocket.rsocket_client import RSocketClient +from rsocket.rsocket_server import RSocketServer from rsocket.rx_support.rx_channel import RxChannel -from rsocket.rx_support.rx_rsocket import RxRSocket from rsocket.rx_support.rx_handler import BaseRxHandler from rsocket.rx_support.rx_handler_adapter import rx_handler_factory -from rsocket.rsocket_client import RSocketClient -from rsocket.rsocket_server import RSocketServer +from rsocket.rx_support.rx_rsocket import RxRSocket class Handler(BaseRxHandler): - def __init__(self, socket: RSocket, server_done: Optional[asyncio.Event] = None): - super().__init__(socket) + def __init__(self, server_done: Optional[asyncio.Event] = None): self._server_done = server_done async def request_stream(self, payload: Payload) -> Observable: @@ -65,8 +63,8 @@ async def test_serve_rx_channel(pipe: Tuple[RSocketServer, RSocketClient]): server_done_event = asyncio.Event() - def handler_factory(rsocket): - return Handler(rsocket, server_done_event) + def handler_factory(): + return Handler(server_done_event) server.set_handler_using_factory(rx_handler_factory(handler_factory)) diff --git a/tests/test_reactivex/test_reactivex_server_side.py b/tests/test_reactivex/test_reactivex_server_side.py index 5d87f602..e547aa4d 100644 --- a/tests/test_reactivex/test_reactivex_server_side.py +++ b/tests/test_reactivex/test_reactivex_server_side.py @@ -11,15 +11,13 @@ from rsocket.reactivex.reactivex_client import ReactiveXClient from rsocket.reactivex.reactivex_handler import BaseReactivexHandler from rsocket.reactivex.reactivex_handler_adapter import reactivex_handler_factory -from rsocket.rsocket import RSocket from rsocket.rsocket_client import RSocketClient from rsocket.rsocket_server import RSocketServer class Handler(BaseReactivexHandler): - def __init__(self, socket: RSocket, server_done: Optional[asyncio.Event] = None): - super().__init__(socket) + def __init__(self, server_done: Optional[asyncio.Event] = None): self._server_done = server_done async def request_stream(self, payload: Payload) -> Observable: @@ -65,8 +63,8 @@ async def test_serve_reactivex_channel(pipe: Tuple[RSocketServer, RSocketClient] server_done_event = asyncio.Event() - def handler_factory(rsocket): - return Handler(rsocket, server_done_event) + def handler_factory(): + return Handler(server_done_event) server.set_handler_using_factory(reactivex_handler_factory(handler_factory)) From 3dfdf89b2fdefbb0b35229b235647674817302e3 Mon Sep 17 00:00:00 2001 From: Gabriel Shaar Date: Sat, 29 Oct 2022 13:18:57 +0300 Subject: [PATCH 2/4] remove RequestHandler dependency on Rsocket base class as argument. --- tests/rsocket/test_request_channel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/rsocket/test_request_channel.py b/tests/rsocket/test_request_channel.py index 0b156712..699cb727 100644 --- a/tests/rsocket/test_request_channel.py +++ b/tests/rsocket/test_request_channel.py @@ -7,7 +7,7 @@ from rsocket.awaitable.awaitable_rsocket import AwaitableRSocket from rsocket.helpers import DefaultPublisherSubscription from rsocket.payload import Payload -from rsocket.request_handler import BaseRequestHandler, RequestHandler +from rsocket.request_handler import BaseRequestHandler from rsocket.rsocket_client import RSocketClient from rsocket.rsocket_server import RSocketServer from rsocket.streams.stream_from_generator import StreamFromGenerator From 90e2defc19f80e009ee5b520b8f28a967091dc61 Mon Sep 17 00:00:00 2001 From: Gabriel Shaar Date: Sat, 29 Oct 2022 15:04:56 +0300 Subject: [PATCH 3/4] update changelog --- CHANGELOG.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0c3d487b..3df5c708 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,7 @@ v0.4.3 - Added on_ready callback to RSocketServer. Called when sender/receiver tasks are ready - Implement ReactiveX (3.0, 4.0) server side handler. Allows to define RequestHandler directly using ReactiveX - Added sending_done_event argument to request_channel to allow client to wait until sending to server is complete/canceled +- Removed RSocketBase class dependency from RequestHandler. It is not longer required as an argument to __init__ v0.4.2 ====== From f90b49d31bdfdd7ffb4342a1eaca3152bd213065 Mon Sep 17 00:00:00 2001 From: Gabriel Shaar Date: Sat, 29 Oct 2022 15:05:10 +0300 Subject: [PATCH 4/4] update changelog --- CHANGELOG.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3df5c708..1e1bcf41 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,7 +8,7 @@ v0.4.3 - Added on_ready callback to RSocketServer. Called when sender/receiver tasks are ready - Implement ReactiveX (3.0, 4.0) server side handler. Allows to define RequestHandler directly using ReactiveX - Added sending_done_event argument to request_channel to allow client to wait until sending to server is complete/canceled -- Removed RSocketBase class dependency from RequestHandler. It is not longer required as an argument to __init__ +- Breaking Change: Removed RSocketBase class dependency from RequestHandler. It is not longer required as an argument to __init__ v0.4.2 ======