From a140a362ba816e63c1fd82fed727f4b9b6a0a1f3 Mon Sep 17 00:00:00 2001 From: Lidi Zheng Date: Tue, 14 Jan 2020 15:15:28 -0800 Subject: [PATCH] Make sanity tests happy --- .../grpcio/grpc/experimental/aio/_call.py | 3 +- .../grpc/experimental/aio/_interceptor.py | 9 ++-- .../tests_aio/unit/metadata_test.py | 48 +++++++++++-------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/python/grpcio/grpc/experimental/aio/_call.py b/src/python/grpcio/grpc/experimental/aio/_call.py index 2ae4864e422..ebf2e935f3e 100644 --- a/src/python/grpcio/grpc/experimental/aio/_call.py +++ b/src/python/grpcio/grpc/experimental/aio/_call.py @@ -280,12 +280,11 @@ class UnaryUnaryCall(Call, _base_call.UnaryUnaryCall): # pylint: disable=too-many-arguments def __init__(self, request: RequestType, deadline: Optional[float], - metadata: Optional[MetadataType], + metadata: Optional[MetadataType], credentials: Optional[grpc.CallCredentials], channel: cygrpc.AioChannel, method: bytes, request_serializer: SerializingFunction, response_deserializer: DeserializingFunction) -> None: - channel.call(method, deadline, credentials) super().__init__(channel.call(method, deadline, credentials)) self._request = request self._metadata = metadata diff --git a/src/python/grpcio/grpc/experimental/aio/_interceptor.py b/src/python/grpcio/grpc/experimental/aio/_interceptor.py index 8eddd8573a7..151523dd7e2 100644 --- a/src/python/grpcio/grpc/experimental/aio/_interceptor.py +++ b/src/python/grpcio/grpc/experimental/aio/_interceptor.py @@ -106,15 +106,16 @@ class InterceptedUnaryUnaryCall(_base_call.UnaryUnaryCall): def __init__( # pylint: disable=R0913 self, interceptors: Sequence[UnaryUnaryClientInterceptor], request: RequestType, timeout: Optional[float], - metadata: Optional[MetadataType], credentials: Optional[grpc.CallCredentials], + metadata: Optional[MetadataType], + credentials: Optional[grpc.CallCredentials], channel: cygrpc.AioChannel, method: bytes, request_serializer: SerializingFunction, response_deserializer: DeserializingFunction) -> None: self._channel = channel self._loop = asyncio.get_event_loop() self._interceptors_task = asyncio.ensure_future( - self._invoke(interceptors, method, timeout, metadata, credentials, request, - request_serializer, response_deserializer)) + self._invoke(interceptors, method, timeout, metadata, credentials, + request, request_serializer, response_deserializer)) def __del__(self): self.cancel() @@ -153,7 +154,7 @@ class InterceptedUnaryUnaryCall(_base_call.UnaryUnaryCall): client_call_details.method, request_serializer, response_deserializer) - client_call_details = ClientCallDetails(method, timeout, None, + client_call_details = ClientCallDetails(method, timeout, metadata, credentials) return await _run_interceptor(iter(interceptors), client_call_details, request) diff --git a/src/python/grpcio_tests/tests_aio/unit/metadata_test.py b/src/python/grpcio_tests/tests_aio/unit/metadata_test.py index dd4d8e790aa..10760827d0a 100644 --- a/src/python/grpcio_tests/tests_aio/unit/metadata_test.py +++ b/src/python/grpcio_tests/tests_aio/unit/metadata_test.py @@ -24,7 +24,6 @@ from grpc.experimental import aio from tests_aio.unit._test_base import AioTestBase - _TEST_CLIENT_TO_SERVER = '/test/TestClientToServer' _TEST_SERVER_TO_CLIENT = '/test/TestServerToClient' _TEST_TRAILING_METADATA = '/test/TestTrailingMetadata' @@ -34,10 +33,10 @@ _TEST_GENERIC_HANDLER = '/test/TestGenericHandler' _REQUEST = b'\x00\x00\x00' _RESPONSE = b'\x01\x01\x01' -_INITIAL_METADATA_FROM_CLIENT_TO_SERVER = ('client-to-server', 'question') -_INITIAL_METADATA_FROM_SERVER_TO_CLIENT = ('server-to-client', 'answer') -_TRAILING_METADATA = ('a-trailing-metadata', 'stack-trace') -_INITIAL_METADATA_FOR_GENERIC_HANDLER = ('a-must-have-key', 'secret') +_INITIAL_METADATA_FROM_CLIENT_TO_SERVER = (('client-to-server', 'question'),) +_INITIAL_METADATA_FROM_SERVER_TO_CLIENT = (('server-to-client', 'answer'),) +_TRAILING_METADATA = (('a-trailing-metadata', 'stack-trace'),) +_INITIAL_METADATA_FOR_GENERIC_HANDLER = (('a-must-have-key', 'secret'),) def _seen_metadata(expected, actual): @@ -59,7 +58,8 @@ class _TestGenericHandlerForMethods(grpc.GenericRpcHandler): @staticmethod async def _test_server_to_client(request, context): assert _REQUEST == request - await context.send_initial_metadata(_INITIAL_METADATA_FROM_SERVER_TO_CLIENT) + await context.send_initial_metadata( + _INITIAL_METADATA_FROM_SERVER_TO_CLIENT) return _RESPONSE @staticmethod @@ -70,21 +70,26 @@ class _TestGenericHandlerForMethods(grpc.GenericRpcHandler): def service(self, handler_details): if handler_details.method == _TEST_CLIENT_TO_SERVER: - return grpc.unary_unary_rpc_method_handler(self._test_client_to_server) + return grpc.unary_unary_rpc_method_handler( + self._test_client_to_server) if handler_details.method == _TEST_SERVER_TO_CLIENT: - return grpc.unary_unary_rpc_method_handler(self._test_server_to_client) + return grpc.unary_unary_rpc_method_handler( + self._test_server_to_client) if handler_details.method == _TEST_TRAILING_METADATA: - return grpc.unary_unary_rpc_method_handler(self._test_trailing_metadata) + return grpc.unary_unary_rpc_method_handler( + self._test_trailing_metadata) return None class _TestGenericHandlerItself(grpc.GenericRpcHandler): + async def _method(self, request, unused_context): assert _REQUEST == request return _RESPONSE def service(self, handler_details): - assert _seen_metadata(_INITIAL_METADATA_FOR_GENERIC_HANDLER, handler_details.invocation_metadata()) + assert _seen_metadata(_INITIAL_METADATA_FOR_GENERIC_HANDLER, + handler_details.invocation_metadata()) return @@ -103,7 +108,8 @@ class TestMetadata(AioTestBase): async def setUp(self): address, self._server = await _start_test_server() - self._client = aio.secure_channel(address, grpc.local_channel_credentials()) + self._client = aio.secure_channel(address, + grpc.local_channel_credentials()) async def tearDown(self): await self._client.close() @@ -111,32 +117,36 @@ class TestMetadata(AioTestBase): async def test_from_client_to_server(self): multicallable = self._client.unary_unary(_TEST_CLIENT_TO_SERVER) - call = multicallable(_REQUEST, metadata=_INITIAL_METADATA_FROM_CLIENT_TO_SERVER) + call = multicallable(_REQUEST, + metadata=_INITIAL_METADATA_FROM_CLIENT_TO_SERVER) self.assertEqual(_RESPONSE, await call) self.assertEqual(grpc.StatusCode.OK, await call.code()) async def test_from_server_to_client(self): multicallable = self._client.unary_unary(_TEST_SERVER_TO_CLIENT) call = multicallable(_REQUEST) - self.assertEqual(_INITIAL_METADATA_FROM_SERVER_TO_CLIENT, - await call.initial_metadata) + self.assertEqual(_INITIAL_METADATA_FROM_SERVER_TO_CLIENT, await + call.initial_metadata) self.assertEqual(_RESPONSE, await call) self.assertEqual(grpc.StatusCode.OK, await call.code()) async def test_trailing_metadata(self): multicallable = self._client.unary_unary(_TEST_SERVER_TO_CLIENT) call = multicallable(_REQUEST) - self.assertEqual(_TEST_TRAILING_METADATA, - await call.trailing_metadata) + self.assertEqual(_TEST_TRAILING_METADATA, await call.trailing_metadata) self.assertEqual(_RESPONSE, await call) self.assertEqual(grpc.StatusCode.OK, await call.code()) + async def test_binary_metadata(self): + pass + + async def test_invalid_metadata(self): + pass - async def test_binary_metadata(self): pass - async def test_invalid_metadata(self): pass async def test_generic_handler(self): multicallable = self._client.unary_unary(_TEST_GENERIC_HANDLER) - call = multicallable(_REQUEST, metadata=_INITIAL_METADATA_FOR_GENERIC_HANDLER) + call = multicallable(_REQUEST, + metadata=_INITIAL_METADATA_FOR_GENERIC_HANDLER) self.assertEqual(_RESPONSE, await call) self.assertEqual(grpc.StatusCode.OK, await call.code())