_rpc_part_2_test.py
Go to the documentation of this file.
1 # Copyright 2016 gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """Test of RPCs made against gRPC Python's application-layer API."""
15 
16 from concurrent import futures
17 import itertools
18 import logging
19 import threading
20 import unittest
21 
22 import grpc
23 from grpc.framework.foundation import logging_pool
24 
25 from tests.unit._rpc_test_helpers import BaseRPCTest
26 from tests.unit._rpc_test_helpers import Callback
27 from tests.unit._rpc_test_helpers import TIMEOUT_SHORT
28 from tests.unit._rpc_test_helpers import \
29  stream_stream_non_blocking_multi_callable
30 from tests.unit._rpc_test_helpers import \
31  unary_stream_non_blocking_multi_callable
32 from tests.unit._rpc_test_helpers import stream_stream_multi_callable
33 from tests.unit._rpc_test_helpers import stream_unary_multi_callable
34 from tests.unit._rpc_test_helpers import unary_stream_multi_callable
35 from tests.unit._rpc_test_helpers import unary_unary_multi_callable
36 from tests.unit.framework.common import test_constants
37 
38 
39 class RPCPart2Test(BaseRPCTest, unittest.TestCase):
40 
44  self.assertFalse(self._thread_pool.was_used())
45 
49  self.assertTrue(self._thread_pool.was_used())
50 
52  request = b'abc'
53 
54  with self.assertRaises(grpc.RpcError) as exception_context:
55  self._channel.unary_unary('NoSuchMethod')(request)
56 
57  self.assertEqual(grpc.StatusCode.UNIMPLEMENTED,
58  exception_context.exception.code())
59 
61  request = b'\x07\x08'
62  expected_response = self._handler.handle_unary_unary(request, None)
63 
64  multi_callable = unary_unary_multi_callable(self._channel)
65  response = multi_callable(
66  request,
67  metadata=(('test', 'SuccessfulUnaryRequestBlockingUnaryResponse'),))
68 
69  self.assertEqual(expected_response, response)
70 
72  request = b'\x07\x08'
73  expected_response = self._handler.handle_unary_unary(request, None)
74 
75  multi_callable = unary_unary_multi_callable(self._channel)
76  response, call = multi_callable.with_call(
77  request,
78  metadata=(('test',
79  'SuccessfulUnaryRequestBlockingUnaryResponseWithCall'),))
80 
81  self.assertEqual(expected_response, response)
82  self.assertIs(grpc.StatusCode.OK, call.code())
83  self.assertEqual('', call.debug_error_string())
84 
86  request = b'\x07\x08'
87  expected_response = self._handler.handle_unary_unary(request, None)
88 
89  multi_callable = unary_unary_multi_callable(self._channel)
90  response_future = multi_callable.future(
91  request,
92  metadata=(('test', 'SuccessfulUnaryRequestFutureUnaryResponse'),))
93  response = response_future.result()
94 
95  self.assertIsInstance(response_future, grpc.Future)
96  self.assertIsInstance(response_future, grpc.Call)
97  self.assertEqual(expected_response, response)
98  self.assertIsNone(response_future.exception())
99  self.assertIsNone(response_future.traceback())
100 
102  request = b'\x37\x58'
103  expected_responses = tuple(
104  self._handler.handle_unary_stream(request, None))
105 
106  multi_callable = unary_stream_multi_callable(self._channel)
107  response_iterator = multi_callable(
108  request,
109  metadata=(('test', 'SuccessfulUnaryRequestStreamResponse'),))
110  responses = tuple(response_iterator)
111 
112  self.assertSequenceEqual(expected_responses, responses)
113 
115  requests = tuple(
116  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
117  expected_response = self._handler.handle_stream_unary(
118  iter(requests), None)
119  request_iterator = iter(requests)
120 
121  multi_callable = stream_unary_multi_callable(self._channel)
122  response = multi_callable(
123  request_iterator,
124  metadata=(('test',
125  'SuccessfulStreamRequestBlockingUnaryResponse'),))
126 
127  self.assertEqual(expected_response, response)
128 
130  requests = tuple(
131  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
132  expected_response = self._handler.handle_stream_unary(
133  iter(requests), None)
134  request_iterator = iter(requests)
135 
136  multi_callable = stream_unary_multi_callable(self._channel)
137  response, call = multi_callable.with_call(
138  request_iterator,
139  metadata=(
140  ('test',
141  'SuccessfulStreamRequestBlockingUnaryResponseWithCall'),))
142 
143  self.assertEqual(expected_response, response)
144  self.assertIs(grpc.StatusCode.OK, call.code())
145 
147  requests = tuple(
148  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
149  expected_response = self._handler.handle_stream_unary(
150  iter(requests), None)
151  request_iterator = iter(requests)
152 
153  multi_callable = stream_unary_multi_callable(self._channel)
154  response_future = multi_callable.future(
155  request_iterator,
156  metadata=(('test', 'SuccessfulStreamRequestFutureUnaryResponse'),))
157  response = response_future.result()
158 
159  self.assertEqual(expected_response, response)
160  self.assertIsNone(response_future.exception())
161  self.assertIsNone(response_future.traceback())
162 
164  requests = tuple(
165  b'\x77\x58' for _ in range(test_constants.STREAM_LENGTH))
166 
167  expected_responses = tuple(
168  self._handler.handle_stream_stream(iter(requests), None))
169  request_iterator = iter(requests)
170 
171  multi_callable = stream_stream_multi_callable(self._channel)
172  response_iterator = multi_callable(
173  request_iterator,
174  metadata=(('test', 'SuccessfulStreamRequestStreamResponse'),))
175  responses = tuple(response_iterator)
176 
177  self.assertSequenceEqual(expected_responses, responses)
178 
180  first_request = b'\x07\x08'
181  second_request = b'\x0809'
182  expected_first_response = self._handler.handle_unary_unary(
183  first_request, None)
184  expected_second_response = self._handler.handle_unary_unary(
185  second_request, None)
186 
187  multi_callable = unary_unary_multi_callable(self._channel)
188  first_response = multi_callable(first_request,
189  metadata=(('test',
190  'SequentialInvocations'),))
191  second_response = multi_callable(second_request,
192  metadata=(('test',
193  'SequentialInvocations'),))
194 
195  self.assertEqual(expected_first_response, first_response)
196  self.assertEqual(expected_second_response, second_response)
197 
199  pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
200  requests = tuple(
201  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
202  expected_response = self._handler.handle_stream_unary(
203  iter(requests), None)
204  expected_responses = [expected_response
205  ] * test_constants.THREAD_CONCURRENCY
206  response_futures = [None] * test_constants.THREAD_CONCURRENCY
207 
208  multi_callable = stream_unary_multi_callable(self._channel)
209  for index in range(test_constants.THREAD_CONCURRENCY):
210  request_iterator = iter(requests)
211  response_future = pool.submit(
212  multi_callable,
213  request_iterator,
214  metadata=(('test', 'ConcurrentBlockingInvocations'),))
215  response_futures[index] = response_future
216  responses = tuple(
217  response_future.result() for response_future in response_futures)
218 
219  pool.shutdown(wait=True)
220  self.assertSequenceEqual(expected_responses, responses)
221 
223  requests = tuple(
224  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
225  expected_response = self._handler.handle_stream_unary(
226  iter(requests), None)
227  expected_responses = [expected_response
228  ] * test_constants.THREAD_CONCURRENCY
229  response_futures = [None] * test_constants.THREAD_CONCURRENCY
230 
231  multi_callable = stream_unary_multi_callable(self._channel)
232  for index in range(test_constants.THREAD_CONCURRENCY):
233  request_iterator = iter(requests)
234  response_future = multi_callable.future(
235  request_iterator,
236  metadata=(('test', 'ConcurrentFutureInvocations'),))
237  response_futures[index] = response_future
238  responses = tuple(
239  response_future.result() for response_future in response_futures)
240 
241  self.assertSequenceEqual(expected_responses, responses)
242 
244  pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
245  request = b'\x67\x68'
246  expected_response = self._handler.handle_unary_unary(request, None)
247  response_futures = [None] * test_constants.THREAD_CONCURRENCY
248  lock = threading.Lock()
249  test_is_running_cell = [True]
250 
251  def wrap_future(future):
252 
253  def wrap():
254  try:
255  return future.result()
256  except grpc.RpcError:
257  with lock:
258  if test_is_running_cell[0]:
259  raise
260  return None
261 
262  return wrap
263 
264  multi_callable = unary_unary_multi_callable(self._channel)
265  for index in range(test_constants.THREAD_CONCURRENCY):
266  inner_response_future = multi_callable.future(
267  request,
268  metadata=(
269  ('test',
270  'WaitingForSomeButNotAllConcurrentFutureInvocations'),))
271  outer_response_future = pool.submit(
272  wrap_future(inner_response_future))
273  response_futures[index] = outer_response_future
274 
275  some_completed_response_futures_iterator = itertools.islice(
276  futures.as_completed(response_futures),
277  test_constants.THREAD_CONCURRENCY // 2)
278  for response_future in some_completed_response_futures_iterator:
279  self.assertEqual(expected_response, response_future.result())
280  with lock:
281  test_is_running_cell[0] = False
282 
286 
290 
294 
298 
302 
306 
310 
314 
316  request = b'\x07\x17'
317 
318  multi_callable = unary_unary_multi_callable(self._channel)
319  with self._control.pause():
320  response_future = multi_callable.future(
321  request,
322  metadata=(('test', 'CancelledUnaryRequestUnaryResponse'),))
323  response_future.cancel()
324 
325  self.assertIs(grpc.StatusCode.CANCELLED, response_future.code())
326  self.assertTrue(response_future.cancelled())
327  with self.assertRaises(grpc.FutureCancelledError):
328  response_future.result()
329  with self.assertRaises(grpc.FutureCancelledError):
330  response_future.exception()
331  with self.assertRaises(grpc.FutureCancelledError):
332  response_future.traceback()
333 
337 
341 
343  requests = tuple(
344  b'\x07\x08' for _ in range(test_constants.STREAM_LENGTH))
345  request_iterator = iter(requests)
346 
347  multi_callable = stream_unary_multi_callable(self._channel)
348  with self._control.pause():
349  response_future = multi_callable.future(
350  request_iterator,
351  metadata=(('test', 'CancelledStreamRequestUnaryResponse'),))
352  self._control.block_until_paused()
353  response_future.cancel()
354 
355  self.assertIs(grpc.StatusCode.CANCELLED, response_future.code())
356  self.assertTrue(response_future.cancelled())
357  with self.assertRaises(grpc.FutureCancelledError):
358  response_future.result()
359  with self.assertRaises(grpc.FutureCancelledError):
360  response_future.exception()
361  with self.assertRaises(grpc.FutureCancelledError):
362  response_future.traceback()
363  self.assertIsNotNone(response_future.initial_metadata())
364  self.assertIsNotNone(response_future.details())
365  self.assertIsNotNone(response_future.trailing_metadata())
366 
370 
374 
376  request = b'\x07\x17'
377 
378  multi_callable = unary_unary_multi_callable(self._channel)
379  with self._control.pause():
380  with self.assertRaises(grpc.RpcError) as exception_context:
381  multi_callable.with_call(
382  request,
383  timeout=TIMEOUT_SHORT,
384  metadata=(('test',
385  'ExpiredUnaryRequestBlockingUnaryResponse'),))
386 
387  self.assertIsInstance(exception_context.exception, grpc.Call)
388  self.assertIsNotNone(exception_context.exception.initial_metadata())
389  self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED,
390  exception_context.exception.code())
391  self.assertIsNotNone(exception_context.exception.details())
392  self.assertIsNotNone(exception_context.exception.trailing_metadata())
393 
395  request = b'\x07\x17'
396  callback = Callback()
397 
398  multi_callable = unary_unary_multi_callable(self._channel)
399  with self._control.pause():
400  response_future = multi_callable.future(
401  request,
402  timeout=TIMEOUT_SHORT,
403  metadata=(('test', 'ExpiredUnaryRequestFutureUnaryResponse'),))
404  response_future.add_done_callback(callback)
405  value_passed_to_callback = callback.value()
406 
407  self.assertIs(response_future, value_passed_to_callback)
408  self.assertIsNotNone(response_future.initial_metadata())
409  self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED, response_future.code())
410  self.assertIsNotNone(response_future.details())
411  self.assertIsNotNone(response_future.trailing_metadata())
412  with self.assertRaises(grpc.RpcError) as exception_context:
413  response_future.result()
414  self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED,
415  exception_context.exception.code())
416  self.assertIsInstance(response_future.exception(), grpc.RpcError)
417  self.assertIsNotNone(response_future.traceback())
418  self.assertIs(grpc.StatusCode.DEADLINE_EXCEEDED,
419  response_future.exception().code())
420 
424 
428 
429 
430 if __name__ == '__main__':
431  logging.basicConfig()
432  unittest.main(verbosity=2)
tests.unit._rpc_part_2_test.RPCPart2Test.testConcurrentFutureInvocations
def testConcurrentFutureInvocations(self)
Definition: _rpc_part_2_test.py:222
grpc.Call
Definition: src/python/grpcio/grpc/__init__.py:359
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingOneStreamResponseUnaryRequestNonBlocking
def testConsumingOneStreamResponseUnaryRequestNonBlocking(self)
Definition: _rpc_part_2_test.py:287
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulStreamRequestStreamResponse
def testSuccessfulStreamRequestStreamResponse(self)
Definition: _rpc_part_2_test.py:163
grpc.framework.foundation
Definition: src/python/grpcio/grpc/framework/foundation/__init__.py:1
tests.unit._rpc_test_helpers.BaseRPCTest._consume_one_stream_response_unary_request
def _consume_one_stream_response_unary_request(self, multi_callable)
Definition: _rpc_test_helpers.py:250
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulUnaryRequestBlockingUnaryResponse
def testSuccessfulUnaryRequestBlockingUnaryResponse(self)
Definition: _rpc_part_2_test.py:60
tests.unit._rpc_test_helpers.BaseRPCTest._consume_some_but_not_all_stream_responses_stream_request
def _consume_some_but_not_all_stream_responses_stream_request(self, multi_callable)
Definition: _rpc_test_helpers.py:269
capstone.range
range
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:6
tests.unit._rpc_test_helpers.BaseRPCTest._cancelled_stream_request_stream_response
def _cancelled_stream_request_stream_response(self, multi_callable)
Definition: _rpc_test_helpers.py:321
tests.unit._rpc_test_helpers.BaseRPCTest._control
_control
Definition: _rpc_test_helpers.py:235
grpc.FutureCancelledError
Definition: src/python/grpcio/grpc/__init__.py:44
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledStreamRequestUnaryResponse
def testCancelledStreamRequestUnaryResponse(self)
Definition: _rpc_part_2_test.py:342
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulStreamRequestBlockingUnaryResponseWithCall
def testSuccessfulStreamRequestBlockingUnaryResponseWithCall(self)
Definition: _rpc_part_2_test.py:129
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulUnaryRequestFutureUnaryResponse
def testSuccessfulUnaryRequestFutureUnaryResponse(self)
Definition: _rpc_part_2_test.py:85
tests.unit._rpc_part_2_test.RPCPart2Test.testExpiredUnaryRequestStreamResponseNonBlocking
def testExpiredUnaryRequestStreamResponseNonBlocking(self)
Definition: _rpc_part_2_test.py:425
grpc.RpcError
Definition: src/python/grpcio/grpc/__init__.py:302
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulUnaryRequestBlockingUnaryResponseWithCall
def testSuccessfulUnaryRequestBlockingUnaryResponseWithCall(self)
Definition: _rpc_part_2_test.py:71
tests.unit._rpc_part_2_test.RPCPart2Test.testDefaultThreadPoolIsUsed
def testDefaultThreadPoolIsUsed(self)
Definition: _rpc_part_2_test.py:41
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledUnaryRequestUnaryResponse
def testCancelledUnaryRequestUnaryResponse(self)
Definition: _rpc_part_2_test.py:315
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingTooManyStreamResponsesStreamRequestNonBlocking
def testConsumingTooManyStreamResponsesStreamRequestNonBlocking(self)
Definition: _rpc_part_2_test.py:311
tests.unit._exit_scenarios.multi_callable
multi_callable
Definition: _exit_scenarios.py:216
tests.unit._rpc_part_2_test.RPCPart2Test.testExpiredUnaryRequestBlockingUnaryResponse
def testExpiredUnaryRequestBlockingUnaryResponse(self)
Definition: _rpc_part_2_test.py:375
tests.unit._rpc_test_helpers
Definition: _rpc_test_helpers.py:1
tests.unit._rpc_test_helpers.BaseRPCTest._handler
_handler
Definition: _rpc_test_helpers.py:237
tests.unit._rpc_test_helpers.BaseRPCTest._thread_pool
_thread_pool
Definition: _rpc_test_helpers.py:236
tests.unit._rpc_part_2_test.RPCPart2Test.testUnrecognizedMethod
def testUnrecognizedMethod(self)
Definition: _rpc_part_2_test.py:51
grpc.Future
Definition: src/python/grpcio/grpc/__init__.py:48
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingSomeButNotAllStreamResponsesStreamRequest
def testConsumingSomeButNotAllStreamResponsesStreamRequest(self)
Definition: _rpc_part_2_test.py:299
tests.unit._rpc_part_2_test.RPCPart2Test.testWaitingForSomeButNotAllConcurrentFutureInvocations
def testWaitingForSomeButNotAllConcurrentFutureInvocations(self)
Definition: _rpc_part_2_test.py:243
tests.unit._rpc_part_2_test.RPCPart2Test.testExpiredUnaryRequestStreamResponse
def testExpiredUnaryRequestStreamResponse(self)
Definition: _rpc_part_2_test.py:421
tests.unit._empty_message_test.handle_stream_unary
def handle_stream_unary(request_iterator, servicer_context)
Definition: _empty_message_test.py:41
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledStreamRequestStreamResponseNonBlocking
def testCancelledStreamRequestStreamResponseNonBlocking(self)
Definition: _rpc_part_2_test.py:371
tests.unit._rpc_test_helpers.unary_stream_non_blocking_multi_callable
def unary_stream_non_blocking_multi_callable(channel)
Definition: _rpc_test_helpers.py:212
tests.unit._rpc_test_helpers.BaseRPCTest
Definition: _rpc_test_helpers.py:232
tests.unit._rpc_test_helpers.unary_unary_multi_callable
def unary_unary_multi_callable(channel)
Definition: _rpc_test_helpers.py:202
tests.unit._empty_message_test.handle_unary_stream
def handle_unary_stream(request, servicer_context)
Definition: _empty_message_test.py:36
tests.unit._rpc_test_helpers.BaseRPCTest._cancelled_unary_request_stream_response
def _cancelled_unary_request_stream_response(self, multi_callable)
Definition: _rpc_test_helpers.py:302
grpc._simple_stubs.unary_unary
ResponseType unary_unary(RequestType request, str target, str method, Optional[Callable[[Any], bytes]] request_serializer=None, Optional[Callable[[bytes], Any]] response_deserializer=None, Sequence[Tuple[AnyStr, AnyStr]] options=(), Optional[grpc.ChannelCredentials] channel_credentials=None, bool insecure=False, Optional[grpc.CallCredentials] call_credentials=None, Optional[grpc.Compression] compression=None, Optional[bool] wait_for_ready=None, Optional[float] timeout=_DEFAULT_TIMEOUT, Optional[Sequence[Tuple[str, Union[str, bytes]]]] metadata=None)
Definition: _simple_stubs.py:169
tests.unit._empty_message_test.handle_stream_stream
def handle_stream_stream(request_iterator, servicer_context)
Definition: _empty_message_test.py:47
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingSomeButNotAllStreamResponsesUnaryRequest
def testConsumingSomeButNotAllStreamResponsesUnaryRequest(self)
Definition: _rpc_part_2_test.py:291
tests.unit._rpc_part_2_test.RPCPart2Test.testSequentialInvocations
def testSequentialInvocations(self)
Definition: _rpc_part_2_test.py:179
tests.unit._rpc_test_helpers.BaseRPCTest._consume_too_many_stream_responses_stream_request
def _consume_too_many_stream_responses_stream_request(self, multi_callable)
Definition: _rpc_test_helpers.py:282
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingTooManyStreamResponsesStreamRequest
def testConsumingTooManyStreamResponsesStreamRequest(self)
Definition: _rpc_part_2_test.py:307
tests.unit._rpc_test_helpers.stream_stream_non_blocking_multi_callable
def stream_stream_non_blocking_multi_callable(channel)
Definition: _rpc_test_helpers.py:228
tests.unit._rpc_part_2_test.RPCPart2Test
Definition: _rpc_part_2_test.py:39
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledUnaryRequestStreamResponseNonBlocking
def testCancelledUnaryRequestStreamResponseNonBlocking(self)
Definition: _rpc_part_2_test.py:338
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulStreamRequestBlockingUnaryResponse
def testSuccessfulStreamRequestBlockingUnaryResponse(self)
Definition: _rpc_part_2_test.py:114
tests.unit._rpc_part_2_test.RPCPart2Test.testExperimentalThreadPoolIsUsed
def testExperimentalThreadPoolIsUsed(self)
Definition: _rpc_part_2_test.py:46
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledUnaryRequestStreamResponse
def testCancelledUnaryRequestStreamResponse(self)
Definition: _rpc_part_2_test.py:334
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulUnaryRequestStreamResponse
def testSuccessfulUnaryRequestStreamResponse(self)
Definition: _rpc_part_2_test.py:101
tests.unit._rpc_test_helpers.Callback
Definition: _rpc_test_helpers.py:42
tests.unit._rpc_part_2_test.RPCPart2Test.testConcurrentBlockingInvocations
def testConcurrentBlockingInvocations(self)
Definition: _rpc_part_2_test.py:198
tests.unit._auth_context_test.handle_unary_unary
def handle_unary_unary(request, servicer_context)
Definition: _auth_context_test.py:54
tests.unit._rpc_test_helpers.stream_unary_multi_callable
def stream_unary_multi_callable(channel)
Definition: _rpc_test_helpers.py:218
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingSomeButNotAllStreamResponsesStreamRequestNonBlocking
def testConsumingSomeButNotAllStreamResponsesStreamRequestNonBlocking(self)
Definition: _rpc_part_2_test.py:303
iter
Definition: test_winkernel.cpp:47
tests.unit._rpc_part_2_test.RPCPart2Test.testExpiredUnaryRequestFutureUnaryResponse
def testExpiredUnaryRequestFutureUnaryResponse(self)
Definition: _rpc_part_2_test.py:394
tests.unit.framework.common
Definition: src/python/grpcio_tests/tests/unit/framework/common/__init__.py:1
tests.unit._rpc_test_helpers.BaseRPCTest._expired_unary_request_stream_response
def _expired_unary_request_stream_response(self, multi_callable)
Definition: _rpc_test_helpers.py:339
code
Definition: bloaty/third_party/zlib/contrib/infback9/inftree9.h:24
tests.unit._rpc_test_helpers.stream_stream_multi_callable
def stream_stream_multi_callable(channel)
Definition: _rpc_test_helpers.py:224
tests.unit._rpc_part_2_test.RPCPart2Test.testCancelledStreamRequestStreamResponse
def testCancelledStreamRequestStreamResponse(self)
Definition: _rpc_part_2_test.py:367
tests.unit._rpc_part_2_test.RPCPart2Test.testSuccessfulStreamRequestFutureUnaryResponse
def testSuccessfulStreamRequestFutureUnaryResponse(self)
Definition: _rpc_part_2_test.py:146
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingSomeButNotAllStreamResponsesUnaryRequestNonBlocking
def testConsumingSomeButNotAllStreamResponsesUnaryRequestNonBlocking(self)
Definition: _rpc_part_2_test.py:295
tests.unit._rpc_part_2_test.RPCPart2Test.testConsumingOneStreamResponseUnaryRequest
def testConsumingOneStreamResponseUnaryRequest(self)
Definition: _rpc_part_2_test.py:283
tests.unit._rpc_test_helpers.BaseRPCTest._channel
_channel
Definition: _rpc_test_helpers.py:244
tests.unit._rpc_test_helpers.BaseRPCTest._consume_some_but_not_all_stream_responses_unary_request
def _consume_some_but_not_all_stream_responses_unary_request(self, multi_callable)
Definition: _rpc_test_helpers.py:258
tests.unit._rpc_test_helpers.unary_stream_multi_callable
def unary_stream_multi_callable(channel)
Definition: _rpc_test_helpers.py:206


grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:38