@@ -42,30 +42,6 @@ public async Task TestSimpleConnection()
4242 Assert . False ( client . IsConnected ) ;
4343 }
4444
45- [ Fact ]
46- public async Task TestReuseClientConnection ( )
47- {
48- var server = new TcpNetworkServer ( _loggerFactoryMock . Object ) ;
49- var client = new TcpNetworkClient ( _loggerFactoryMock . Object ) ;
50-
51- var serverCancelSrc = new CancellationTokenSource ( ) ;
52- await server . StartAsync ( 7890 , serverCancelSrc . Token ) ;
53- Assert . True ( server . IsRunning ) ;
54-
55- for ( int i = 0 ; i < 10 ; ++ i )
56- {
57- var clientCancelSrc = new CancellationTokenSource ( ) ;
58- await client . ConnectAsync ( "127.0.0.1" , 7890 , clientCancelSrc . Token ) ;
59- Assert . True ( client . IsConnected ) ;
60- await client . DisconnectAsync ( ) ;
61- Assert . False ( client . IsConnected ) ;
62- }
63-
64- await server . StopAsync ( ) ;
65-
66- Assert . False ( server . IsRunning ) ;
67- }
68-
6945 [ Fact ]
7046 public async Task TestClientDisconnectionFromServer ( )
7147 {
@@ -200,5 +176,82 @@ public async Task TestMessageFromServerHandling()
200176 Assert . False ( server . IsRunning ) ;
201177 Assert . False ( client . IsConnected ) ;
202178 }
179+
180+ [ Fact ]
181+ public async Task TestReuseClientConnection ( )
182+ {
183+ var server = new TcpNetworkServer ( _loggerFactoryMock . Object ) ;
184+ var client = new TcpNetworkClient ( _loggerFactoryMock . Object ) ;
185+
186+ var serverCancelSrc = new CancellationTokenSource ( ) ;
187+ await server . StartAsync ( 7895 , serverCancelSrc . Token ) ;
188+ Assert . True ( server . IsRunning ) ;
189+
190+ for ( int i = 0 ; i < 10 ; ++ i )
191+ {
192+ var clientCancelSrc = new CancellationTokenSource ( ) ;
193+ await client . ConnectAsync ( "127.0.0.1" , 7895 , clientCancelSrc . Token ) ;
194+ // Wait a bit for connection acceptance
195+ await Task . Delay ( 100 ) ;
196+ Assert . True ( client . IsConnected ) ;
197+ await client . DisconnectAsync ( ) ;
198+ // Wait a bit for disconnection
199+ await Task . Delay ( 100 ) ;
200+ Assert . False ( client . IsConnected ) ;
201+ }
202+
203+ await server . StopAsync ( ) ;
204+
205+ Assert . False ( server . IsRunning ) ;
206+ }
207+
208+ [ Fact ]
209+ public async Task TestClientMaxConnections ( )
210+ {
211+ var server = new TcpNetworkServer ( _loggerFactoryMock . Object ) ;
212+ server . MaxConnections = 2 ;
213+
214+ var serverCancelSrc = new CancellationTokenSource ( ) ;
215+ await server . StartAsync ( 7896 , serverCancelSrc . Token ) ;
216+ Assert . True ( server . IsRunning ) ;
217+
218+ // Client 1 - must be able to connection
219+ var client1 = new TcpNetworkClient ( _loggerFactoryMock . Object ) ;
220+ var clientCancelSrc = new CancellationTokenSource ( ) ;
221+ await client1 . ConnectAsync ( "127.0.0.1" , 7896 , clientCancelSrc . Token ) ;
222+ // Wait a second for connection acceptance
223+ await Task . Delay ( 1000 ) ;
224+ Assert . True ( client1 . IsConnected ) ;
225+
226+ // Client 2 - must be able to connection
227+ var client2 = new TcpNetworkClient ( _loggerFactoryMock . Object ) ;
228+ clientCancelSrc = new CancellationTokenSource ( ) ;
229+ await client2 . ConnectAsync ( "127.0.0.1" , 7896 , clientCancelSrc . Token ) ;
230+ // Wait a second for connection acceptance
231+ await Task . Delay ( 1000 ) ;
232+ Assert . True ( client2 . IsConnected ) ;
233+
234+ // Client 3 - must not be able to connection
235+ var client3 = new TcpNetworkClient ( _loggerFactoryMock . Object ) ;
236+ clientCancelSrc = new CancellationTokenSource ( ) ;
237+ await client3 . ConnectAsync ( "127.0.0.1" , 7896 , clientCancelSrc . Token ) ;
238+ // Wait a second for connection acceptance
239+ await Task . Delay ( 1000 ) ;
240+ Assert . False ( client3 . IsConnected ) ;
241+
242+ await client1 . DisconnectAsync ( ) ;
243+ await client2 . DisconnectAsync ( ) ;
244+ try
245+ {
246+ await client3 . DisconnectAsync ( ) ;
247+ } catch ( Exception ex )
248+ {
249+ Assert . IsType < InvalidOperationException > ( ex ) ;
250+ }
251+
252+ await server . StopAsync ( ) ;
253+
254+ Assert . False ( server . IsRunning ) ;
255+ }
203256 }
204257}
0 commit comments