15 from concurrent
import futures
33 services_pb2.DESCRIPTOR.services_by_name.get(
'FirstService')
is None,
34 'Fix protobuf issue 3452!')
46 services_pb2.DESCRIPTOR.services_by_name.values(), self.
_fake_time)
48 services_pb2.DESCRIPTOR.services_by_name.values(), self.
_real_time)
55 _client_application.run, _client_application.Scenario.UNARY_UNARY,
57 invocation_metadata, request, rpc = (
59 _application_testing_common.FIRST_SERVICE_UNUN))
60 rpc.send_initial_metadata(())
61 rpc.terminate(_application_common.UNARY_UNARY_RESPONSE, (),
62 grpc.StatusCode.OK,
'')
63 application_return_value = application_future.result()
65 self.assertEqual(_application_common.UNARY_UNARY_REQUEST, request)
66 self.assertIs(application_return_value.kind,
67 _client_application.Outcome.Kind.SATISFACTORY)
71 _client_application.run, _client_application.Scenario.UNARY_STREAM,
73 invocation_metadata, request, rpc = (
75 _application_testing_common.FIRST_SERVICE_UNSTRE))
76 rpc.send_initial_metadata(())
77 rpc.terminate((), grpc.StatusCode.OK,
'')
78 application_return_value = application_future.result()
80 self.assertEqual(_application_common.UNARY_STREAM_REQUEST, request)
81 self.assertIs(application_return_value.kind,
82 _client_application.Outcome.Kind.SATISFACTORY)
86 _client_application.run, _client_application.Scenario.STREAM_UNARY,
89 _application_testing_common.FIRST_SERVICE_STREUN)
90 rpc.send_initial_metadata(())
91 first_request = rpc.take_request()
92 second_request = rpc.take_request()
93 third_request = rpc.take_request()
95 rpc.terminate(_application_common.STREAM_UNARY_RESPONSE, (),
96 grpc.StatusCode.OK,
'')
97 application_return_value = application_future.result()
99 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
101 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
103 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
105 self.assertIs(application_return_value.kind,
106 _client_application.Outcome.Kind.SATISFACTORY)
110 _client_application.run, _client_application.Scenario.STREAM_STREAM,
113 _application_testing_common.FIRST_SERVICE_STRESTRE)
114 first_request = rpc.take_request()
115 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
116 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
117 second_request = rpc.take_request()
118 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
119 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
120 rpc.requests_closed()
121 rpc.terminate((), grpc.StatusCode.OK,
'')
122 application_return_value = application_future.result()
124 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
126 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
128 self.assertIs(application_return_value.kind,
129 _client_application.Outcome.Kind.SATISFACTORY)
133 _client_application.run,
134 _client_application.Scenario.CONCURRENT_STREAM_STREAM,
137 for _
in range(test_constants.RPC_CONCURRENCY):
138 invocation_metadata, rpc = (
140 _application_testing_common.FIRST_SERVICE_STRESTRE))
144 requests[rpc] = [rpc.take_request()]
146 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
147 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
149 requests[rpc].append(rpc.take_request())
151 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
152 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
154 rpc.requests_closed()
156 rpc.terminate((), grpc.StatusCode.OK,
'')
157 application_return_value = application_future.result()
159 for requests_of_one_rpc
in requests.values():
160 for request
in requests_of_one_rpc:
161 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
163 self.assertIs(application_return_value.kind,
164 _client_application.Outcome.Kind.SATISFACTORY)
168 _client_application.run,
169 _client_application.Scenario.CANCEL_UNARY_UNARY,
171 invocation_metadata, request, rpc = (
173 _application_testing_common.FIRST_SERVICE_UNUN))
174 rpc.send_initial_metadata(())
176 application_return_value = application_future.result()
178 self.assertEqual(_application_common.UNARY_UNARY_REQUEST, request)
179 self.assertIs(application_return_value.kind,
180 _client_application.Outcome.Kind.SATISFACTORY)
184 _client_application.run,
185 _client_application.Scenario.CONCURRENT_STREAM_UNARY,
189 _application_testing_common.FIRST_SERVICE_STREUN)[1]
190 for _
in range(test_constants.THREAD_CONCURRENCY))
195 rpc.requests_closed()
196 rpc.send_initial_metadata(((
198 'My Metadata Value!',
200 for rpc
in rpcs[:-1]:
201 rpc.terminate(_application_common.STREAM_UNARY_RESPONSE, (),
202 grpc.StatusCode.OK,
'')
203 rpcs[-1].terminate(_application_common.STREAM_UNARY_RESPONSE, (),
204 grpc.StatusCode.RESOURCE_EXHAUSTED,
205 'nope; not able to handle all those RPCs!')
206 application_return_value = application_future.result()
208 self.assertIs(application_return_value.kind,
209 _client_application.Outcome.Kind.UNSATISFACTORY)
212 code = grpc.StatusCode.DEADLINE_EXCEEDED
213 details =
'test deadline exceeded!'
216 _client_application.run, _client_application.Scenario.STREAM_STREAM,
219 _application_testing_common.FIRST_SERVICE_STRESTRE)
220 first_request = rpc.take_request()
221 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
222 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
223 second_request = rpc.take_request()
224 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
225 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
226 rpc.requests_closed()
227 rpc.terminate((), code, details)
228 application_return_value = application_future.result()
230 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
232 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
234 self.assertIs(application_return_value.kind,
235 _client_application.Outcome.Kind.RPC_ERROR)
236 self.assertIs(application_return_value.code, code)
237 self.assertEqual(application_return_value.details, details)
241 _client_application.run, _client_application.Scenario.UNARY_UNARY,
243 invocation_metadata, request, rpc = (
245 _application_testing_common.FIRST_SERVICE_UNUN))
246 rpc.send_initial_metadata(())
247 rpc.terminate(_application_common.ERRONEOUS_UNARY_UNARY_RESPONSE, (),
248 grpc.StatusCode.OK,
'')
249 application_return_value = application_future.result()
251 self.assertEqual(_application_common.UNARY_UNARY_REQUEST, request)
252 self.assertIs(application_return_value.kind,
253 _client_application.Outcome.Kind.UNSATISFACTORY)
257 _client_application.run, _client_application.Scenario.STREAM_STREAM,
260 _application_testing_common.FIRST_SERVICE_STRESTRE)
261 first_request = rpc.take_request()
262 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
263 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
264 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
265 second_request = rpc.take_request()
266 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
267 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
268 rpc.send_response(_application_common.STREAM_STREAM_RESPONSE)
269 rpc.requests_closed()
270 rpc.terminate((), grpc.StatusCode.OK,
'')
271 application_return_value = application_future.result()
273 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
275 self.assertEqual(_application_common.STREAM_STREAM_REQUEST,
277 self.assertIs(application_return_value.kind,
278 _client_application.Outcome.Kind.UNSATISFACTORY)
282 _client_application.run,
283 _client_application.Scenario.INFINITE_REQUEST_STREAM,
286 _application_testing_common.FIRST_SERVICE_STREUN)
287 rpc.send_initial_metadata(())
288 first_request = rpc.take_request()
289 second_request = rpc.take_request()
290 third_request = rpc.take_request()
292 _application_common.INFINITE_REQUEST_STREAM_TIMEOUT)
293 rpc.terminate(_application_common.STREAM_UNARY_RESPONSE, (),
294 grpc.StatusCode.DEADLINE_EXCEEDED,
'')
295 application_return_value = application_future.result()
297 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
299 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
301 self.assertEqual(_application_common.STREAM_UNARY_REQUEST,
303 self.assertIs(application_return_value.kind,
304 _client_application.Outcome.Kind.SATISFACTORY)
307 if __name__ ==
'__main__':
308 unittest.main(verbosity=2)