14 """Test a corner-case at the level of the Cython API."""
28 server_request_call_tag =
'server_request_call_tag'
29 server_send_initial_metadata_tag =
'server_send_initial_metadata_tag'
30 server_complete_rpc_tag =
'server_complete_rpc_tag'
35 server_request_call_tag)
37 server_request_call_tag,
40 client_receive_initial_metadata_tag =
'client_receive_initial_metadata_tag'
41 client_complete_rpc_tag =
'client_complete_rpc_tag'
42 client_call = self.
channel.integrated_call(
43 _common.EMPTY_FLAGS, b
'/twinkies',
None,
None,
44 _common.INVOCATION_METADATA,
None, [
47 cygrpc.SendInitialMetadataOperation(
48 _common.INVOCATION_METADATA, _common.EMPTY_FLAGS),
49 cygrpc.SendCloseFromClientOperation(
51 cygrpc.ReceiveStatusOnClientOperation(
54 client_complete_rpc_tag,
58 cygrpc.ReceiveInitialMetadataOperation(_common.EMPTY_FLAGS),
59 ], client_receive_initial_metadata_tag)
65 server_request_call_event = self.
server_driver.event_with_tag(
66 server_request_call_tag)
69 server_send_initial_metadata_start_batch_result = (
70 server_request_call_event.call.start_server_batch([
71 cygrpc.SendInitialMetadataOperation(
72 _common.INITIAL_METADATA, _common.EMPTY_FLAGS),
73 ], server_send_initial_metadata_tag))
75 server_send_initial_metadata_tag,
77 server_send_initial_metadata_event = self.
server_driver.event_with_tag(
78 server_send_initial_metadata_tag)
81 server_complete_rpc_start_batch_result = (
82 server_request_call_event.call.start_server_batch([
83 cygrpc.ReceiveCloseOnServerOperation(_common.EMPTY_FLAGS),
84 cygrpc.SendStatusFromServerOperation(
85 _common.TRAILING_METADATA, cygrpc.StatusCode.ok,
86 'test details', _common.EMPTY_FLAGS),
87 ], server_complete_rpc_tag))
89 server_complete_rpc_tag,
91 server_complete_rpc_event = self.
server_driver.event_with_tag(
92 server_complete_rpc_tag)
94 client_events = client_events_future.result()
95 client_receive_initial_metadata_event = client_events[0]
96 client_complete_rpc_event = client_events[1]
100 server_request_call_event.completion_type,
101 server_request_call_event.success),
104 client_receive_initial_metadata_event.completion_type,
105 client_receive_initial_metadata_event.success),
107 client_complete_rpc_event.completion_type,
108 client_complete_rpc_event.success),
110 server_send_initial_metadata_start_batch_result,
111 server_send_initial_metadata_event.completion_type,
112 server_send_initial_metadata_event.success),
114 server_complete_rpc_event.completion_type,
115 server_complete_rpc_event.success),
119 expecteds = [(_common.SUCCESSFUL_OPERATION_RESULT,) * 5
120 ] * _common.RPC_COUNT
121 actuallys = _common.execute_many_times(self.
_do_rpcs)
122 self.assertSequenceEqual(expecteds, actuallys)
125 if __name__ ==
'__main__':
126 unittest.main(verbosity=2)