13
13
from rsocket .rsocket_client import RSocketClient
14
14
from rsocket .streams .stream_from_async_generator import StreamFromAsyncGenerator
15
15
from 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 )
17
21
18
22
19
23
def 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 :
21
27
async def generator () -> AsyncGenerator [Tuple [Fragment , bool ], None ]:
22
- current_response = 0
23
28
for i in range (response_count ):
24
- is_complete = (current_response + 1 ) == response_count
29
+ is_complete = (i + 1 ) == response_count
25
30
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
28
33
29
34
if is_complete :
30
35
wait_for_requester_complete .set ()
31
36
break
32
37
33
- current_response += 1
34
-
35
38
return StreamFromAsyncGenerator (generator )
36
39
37
40
@@ -47,13 +50,20 @@ async def request_response(self):
47
50
48
51
return await self ._client .request_response (payload )
49
52
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
+
50
61
async def request_channel (self ):
51
- requester_completion_event = Event ()
52
62
payload = Payload (b'The quick brown fox' , composite (
53
63
route ('channel' ),
54
64
authenticate_simple ('user' , '12345' )
55
65
))
56
- publisher = sample_publisher (requester_completion_event )
66
+ publisher = sample_publisher (Event () )
57
67
58
68
return await self ._client .request_channel (payload , publisher , limit_rate = 5 )
59
69
@@ -97,7 +107,7 @@ async def __aenter__(self):
97
107
connection = await asyncio .open_connection ('localhost' , self ._server_port )
98
108
99
109
self ._client = AwaitableRSocket (RSocketClient (
100
- single_transport_provider (TransportTCP (* connection )),
110
+ single_transport_provider (TransportTCP (* connection , read_buffer_size = data_size + 3000 )),
101
111
metadata_encoding = WellKnownMimeTypes .MESSAGE_RSOCKET_COMPOSITE_METADATA )
102
112
)
103
113
0 commit comments