1313from rsocket .rsocket_client import RSocketClient
1414from rsocket .streams .stream_from_async_generator import StreamFromAsyncGenerator
1515from rsocket .transports .tcp import TransportTCP
16- from tests .rsocket .helpers import to_json_bytes
16+ from tests .rsocket .helpers import to_json_bytes , create_large_random_data
17+
18+
19+ data_size = 1920 # * 1080 * 3
20+ large_data = create_large_random_data (data_size )
1721
1822
1923def sample_publisher (wait_for_requester_complete : Event ,
20- response_count : int = 3 ) -> Publisher :
24+ response_count : int = 3 ,
25+ data_generator = lambda index : ('Item to server from client on channel: %s' % index ).encode ('utf-8' )
26+ ) -> Publisher :
2127 async def generator () -> AsyncGenerator [Tuple [Fragment , bool ], None ]:
22- current_response = 0
2328 for i in range (response_count ):
24- is_complete = (current_response + 1 ) == response_count
29+ is_complete = (i + 1 ) == response_count
2530
26- message = 'Item to server from client on channel: %s' % current_response
27- yield Fragment (message . encode ( 'utf-8' ) ), is_complete
31+ message = data_generator ( i )
32+ yield Payload (message ), is_complete
2833
2934 if is_complete :
3035 wait_for_requester_complete .set ()
3136 break
3237
33- current_response += 1
34-
3538 return StreamFromAsyncGenerator (generator )
3639
3740
@@ -47,13 +50,20 @@ async def request_response(self):
4750
4851 return await self ._client .request_response (payload )
4952
53+ async def large_request (self ):
54+ payload = Payload (large_data , composite (
55+ route ('large' ),
56+ authenticate_simple ('user' , '12345' )
57+ ))
58+
59+ return await self ._client .request_response (payload )
60+
5061 async def request_channel (self ):
51- requester_completion_event = Event ()
5262 payload = Payload (b'The quick brown fox' , composite (
5363 route ('channel' ),
5464 authenticate_simple ('user' , '12345' )
5565 ))
56- publisher = sample_publisher (requester_completion_event )
66+ publisher = sample_publisher (Event () )
5767
5868 return await self ._client .request_channel (payload , publisher , limit_rate = 5 )
5969
@@ -97,7 +107,7 @@ async def __aenter__(self):
97107 connection = await asyncio .open_connection ('localhost' , self ._server_port )
98108
99109 self ._client = AwaitableRSocket (RSocketClient (
100- single_transport_provider (TransportTCP (* connection )),
110+ single_transport_provider (TransportTCP (* connection , read_buffer_size = data_size + 3000 )),
101111 metadata_encoding = WellKnownMimeTypes .MESSAGE_RSOCKET_COMPOSITE_METADATA )
102112 )
103113
0 commit comments