Make sanity tests happy

pull/21647/head
Lidi Zheng 5 years ago
parent bcf3a1f9e7
commit a140a362ba
  1. 3
      src/python/grpcio/grpc/experimental/aio/_call.py
  2. 9
      src/python/grpcio/grpc/experimental/aio/_interceptor.py
  3. 48
      src/python/grpcio_tests/tests_aio/unit/metadata_test.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

@ -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)

@ -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())

Loading…
Cancel
Save