Skip to content

Commit 7c74b34

Browse files
committed
feat: add max connections testing
1 parent 27d142d commit 7c74b34

1 file changed

Lines changed: 77 additions & 24 deletions

File tree

SimpleNetworkManager.NET.Tests/Network/TcpTransport/TcpTransportTests.cs

Lines changed: 77 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)