14 """Test of RPCs made against gRPC Python's application-layer API."""
16 from concurrent
import futures
29 stream_stream_non_blocking_multi_callable
31 unary_stream_non_blocking_multi_callable
43 b
'\x07\x08' for _
in range(test_constants.STREAM_LENGTH))
44 request_iterator =
iter(requests)
51 timeout=TIMEOUT_SHORT,
53 'ExpiredStreamRequestBlockingUnaryResponse'),))
55 self.assertIsInstance(exception_context.exception,
grpc.RpcError)
56 self.assertIsInstance(exception_context.exception,
grpc.Call)
57 self.assertIsNotNone(exception_context.exception.initial_metadata())
58 self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED,
59 exception_context.exception.code())
60 self.assertIsNotNone(exception_context.exception.details())
61 self.assertIsNotNone(exception_context.exception.trailing_metadata())
65 b
'\x07\x18' for _
in range(test_constants.STREAM_LENGTH))
66 request_iterator =
iter(requests)
71 response_future = multi_callable.future(
73 timeout=TIMEOUT_SHORT,
74 metadata=((
'test',
'ExpiredStreamRequestFutureUnaryResponse'),))
76 response_future.result(timeout=TIMEOUT_SHORT / 2.0)
77 response_future.add_done_callback(callback)
78 value_passed_to_callback = callback.value()
81 response_future.result()
82 self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED, response_future.code())
83 self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED,
84 exception_context.exception.code())
85 self.assertIsInstance(response_future.exception(),
grpc.RpcError)
86 self.assertIsNotNone(response_future.traceback())
87 self.assertIs(response_future, value_passed_to_callback)
88 self.assertIsNotNone(response_future.initial_metadata())
89 self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED, response_future.code())
90 self.assertIsNotNone(response_future.details())
91 self.assertIsNotNone(response_future.trailing_metadata())
102 request = b
'\x37\x17'
107 multi_callable.with_call(
110 'FailedUnaryRequestBlockingUnaryResponse'),))
112 self.assertIs(grpc.StatusCode.UNKNOWN,
113 exception_context.exception.code())
116 debug_error_string = exception_context.exception.debug_error_string()
117 self.assertIn(
'grpc_status', debug_error_string)
118 self.assertIn(
'grpc_message', debug_error_string)
121 request = b
'\x37\x17'
126 response_future = multi_callable.future(
128 metadata=((
'test',
'FailedUnaryRequestFutureUnaryResponse'),))
129 response_future.add_done_callback(callback)
130 value_passed_to_callback = callback.value()
132 self.assertIsInstance(response_future,
grpc.Future)
133 self.assertIsInstance(response_future,
grpc.Call)
135 response_future.result()
136 self.assertIs(grpc.StatusCode.UNKNOWN,
137 exception_context.exception.code())
138 self.assertIsInstance(response_future.exception(),
grpc.RpcError)
139 self.assertIsNotNone(response_future.traceback())
140 self.assertIs(grpc.StatusCode.UNKNOWN,
141 response_future.exception().
code())
142 self.assertIs(response_future, value_passed_to_callback)
154 b
'\x47\x58' for _
in range(test_constants.STREAM_LENGTH))
155 request_iterator =
iter(requests)
163 'FailedStreamRequestBlockingUnaryResponse'),))
165 self.assertIs(grpc.StatusCode.UNKNOWN,
166 exception_context.exception.code())
170 b
'\x07\x18' for _
in range(test_constants.STREAM_LENGTH))
171 request_iterator =
iter(requests)
176 response_future = multi_callable.future(
178 metadata=((
'test',
'FailedStreamRequestFutureUnaryResponse'),))
179 response_future.add_done_callback(callback)
180 value_passed_to_callback = callback.value()
183 response_future.result()
184 self.assertIs(grpc.StatusCode.UNKNOWN, response_future.code())
185 self.assertIs(grpc.StatusCode.UNKNOWN,
186 exception_context.exception.code())
187 self.assertIsInstance(response_future.exception(),
grpc.RpcError)
188 self.assertIsNotNone(response_future.traceback())
189 self.assertIs(response_future, value_passed_to_callback)
200 request = b
'\x37\x17'
203 multi_callable.future(
205 metadata=((
'test',
'IgnoredUnaryRequestFutureUnaryResponse'),))
217 b
'\x07\x18' for _
in range(test_constants.STREAM_LENGTH))
218 request_iterator =
iter(requests)
221 multi_callable.future(
223 metadata=((
'test',
'IgnoredStreamRequestFutureUnaryResponse'),))
234 if __name__ ==
'__main__':
235 logging.basicConfig()
236 unittest.main(verbosity=3)