3
3
4
4
using System ;
5
5
using System . Collections . Generic ;
6
+ using System . Diagnostics ;
6
7
using System . IO ;
7
8
using System . Linq ;
8
9
using System . Net ;
@@ -63,7 +64,6 @@ public async Task Can_handle_very_large_objects()
63
64
Assert . That ( sent , Is . EqualTo ( received ) ) ;
64
65
}
65
66
66
- [ Test ]
67
67
[ TestCase ( 1 ) ]
68
68
[ TestCase ( 2 ) ]
69
69
[ TestCase ( 10 ) ]
@@ -80,7 +80,12 @@ static async Task<int> CountNumberOfMessages(Socket socket, CancellationToken to
80
80
byte [ ] buffer = new byte [ 10 ] ;
81
81
while ( true )
82
82
{
83
- ReceiveResult ? result = await stream . ReceiveAsync ( buffer ) . ConfigureAwait ( false ) ;
83
+ ReceiveResult ? result = await stream . ReceiveAsync ( buffer ) ;
84
+
85
+ // Imitate random delays
86
+ if ( Stopwatch . GetTimestamp ( ) % 1001 == 0 )
87
+ await Task . Delay ( 1 ) ;
88
+
84
89
if ( result is not null && IsEndOfIpcMessage ( result ) )
85
90
{
86
91
messages ++ ;
@@ -108,7 +113,7 @@ static async Task<int> CountNumberOfMessages(Socket socket, CancellationToken to
108
113
Task < int > sendMessages = Task . Run ( async ( ) =>
109
114
{
110
115
using Socket socket = new ( ipEndPoint . AddressFamily , SocketType . Stream , ProtocolType . Tcp ) ;
111
- await socket . ConnectAsync ( ipEndPoint ) . ConfigureAwait ( false ) ;
116
+ await socket . ConnectAsync ( ipEndPoint ) ;
112
117
113
118
using IpcSocketMessageStream stream = new ( socket ) ;
114
119
using JsonRpcSocketsClient < IpcSocketMessageStream > client = new (
@@ -123,18 +128,18 @@ static async Task<int> CountNumberOfMessages(Socket socket, CancellationToken to
123
128
124
129
for ( int i = 0 ; i < messageCount ; i ++ )
125
130
{
126
- using JsonRpcResult result = JsonRpcResult . Single ( RandomSuccessResponse ( 1_000 , ( ) => disposeCount ++ ) , default ) ;
127
- await client . SendJsonRpcResult ( result ) . ConfigureAwait ( false ) ;
128
- await Task . Delay ( 1 ) . ConfigureAwait ( false ) ;
131
+ using JsonRpcResult result = JsonRpcResult . Single ( RandomSuccessResponse ( 1000 , ( ) => disposeCount ++ ) , default ) ;
132
+ await client . SendJsonRpcResult ( result ) ;
133
+ await Task . Delay ( 1 ) ;
129
134
}
130
135
131
136
disposeCount . Should ( ) . Be ( messageCount ) ;
132
- await cts . CancelAsync ( ) . ConfigureAwait ( false ) ;
137
+ await cts . CancelAsync ( ) ;
133
138
134
139
return messageCount ;
135
140
} ) ;
136
141
137
- await Task . WhenAll ( sendMessages , receiveMessages ) . ConfigureAwait ( false ) ;
142
+ await Task . WhenAll ( sendMessages , receiveMessages ) ;
138
143
int sent = sendMessages . Result ;
139
144
int received = receiveMessages . Result ;
140
145
@@ -158,7 +163,7 @@ async Task<int> ReadMessages(Socket socket, IList<byte[]> receivedMessages, Canc
158
163
byte [ ] buffer = new byte [ bufferSize ] ;
159
164
while ( true )
160
165
{
161
- ReceiveResult ? result = await stream . ReceiveAsync ( buffer ) . ConfigureAwait ( false ) ;
166
+ ReceiveResult ? result = await stream . ReceiveAsync ( buffer ) ;
162
167
if ( result is not null )
163
168
{
164
169
msg . AddRange ( buffer . Take ( result . Read ) ) ;
@@ -190,14 +195,14 @@ async Task<int> ReadMessages(Socket socket, IList<byte[]> receivedMessages, Canc
190
195
191
196
Task < int > receiveMessages = OneShotServer (
192
197
ipEndPoint ,
193
- async socket => await ReadMessages ( socket , receivedMessages , cts . Token ) . ConfigureAwait ( false )
198
+ async socket => await ReadMessages ( socket , receivedMessages , cts . Token )
194
199
) ;
195
200
196
201
Task < int > sendMessages = Task . Run ( async ( ) =>
197
202
{
198
203
int messageCount = 0 ;
199
204
using Socket socket = new ( ipEndPoint . AddressFamily , SocketType . Stream , ProtocolType . Tcp ) ;
200
- await socket . ConnectAsync ( ipEndPoint ) . ConfigureAwait ( false ) ;
205
+ await socket . ConnectAsync ( ipEndPoint ) ;
201
206
202
207
using IpcSocketMessageStream stream = new ( socket ) ;
203
208
using JsonRpcSocketsClient < IpcSocketMessageStream > client = new (
@@ -216,20 +221,20 @@ async Task<int> ReadMessages(Socket socket, IList<byte[]> receivedMessages, Canc
216
221
messageCount ++ ;
217
222
var msg = Enumerable . Range ( 11 , i ) . Select ( x => ( byte ) x ) . ToArray ( ) ;
218
223
sentMessages . Add ( msg ) ;
219
- await stream . WriteAsync ( msg . Append ( ( byte ) '\n ' ) . ToArray ( ) ) . ConfigureAwait ( false ) ;
224
+ await stream . WriteAsync ( msg . Append ( ( byte ) '\n ' ) . ToArray ( ) ) ;
220
225
221
226
if ( i % 10 == 0 )
222
227
{
223
- await Task . Delay ( 1 ) . ConfigureAwait ( false ) ;
228
+ await Task . Delay ( 1 ) ;
224
229
}
225
230
}
226
231
stream . Close ( ) ;
227
- await cts . CancelAsync ( ) . ConfigureAwait ( false ) ;
232
+ await cts . CancelAsync ( ) ;
228
233
229
234
return messageCount ;
230
235
} ) ;
231
236
232
- await Task . WhenAll ( sendMessages , receiveMessages ) . ConfigureAwait ( false ) ;
237
+ await Task . WhenAll ( sendMessages , receiveMessages ) ;
233
238
int sent = sendMessages . Result ;
234
239
int received = receiveMessages . Result ;
235
240
0 commit comments