public async Task ConnectionTest(int clientCount) { using (var server = new TestNode()) { server.ListenAsync(); List<TestNode> clients = new List<TestNode>(clientCount); for (int i = 0; i < clientCount; i++) { var client = new TestNode(); await client.ConnectAsync(); clients.Add(client); var result = await server.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(server.IsStatesQueueEmpty()); } foreach (var client in clients) { client.Dispose(); } } }
public async Task TestIdleConnectionKeptAliveByHearbeat() { using (var server = new TestNode()) { server.ListenAsync(); using (var client = new TestNode()) { await client.ConnectAsync(); var result = await server.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(server.IsStatesQueueEmpty()); // Wait 60 seconds doing nothing await Task.Delay(60000); Assert.Equal(ConnectionState.Connected, client.RemoteConnection.State); Assert.Equal(ConnectionState.Connected, server.RemoteConnection.State); } } }
public async Task TestDroppedConnectionWithHeartbeatAndNoIncomingData() { using (var server = new TestNode()) { server.ListenAsync(); var client = new TestNode(); await client.ConnectAsync(); var result = await server.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(server.IsStatesQueueEmpty()); // Dispose, not a clean disconnect client.Dispose(); result = await server.ReadState(); Assert.Equal(result, TestNodeState.Disconnected); Assert.True(server.IsStatesQueueEmpty()); } }
public async Task TestDroppedConnectionWithIncomingData() { using (var server = new TestNode()) { server.ListenAsync(); var client = new TestNode(); await client.ConnectAsync(); var result = await server.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(server.IsStatesQueueEmpty()); // Dispose, not a clean disconnect client.Dispose(); var payload = GenerateRandomBytes(100); server.SendDataAsync(payload); result = await server.ReadState(); Assert.Equal(result, TestNodeState.Disconnected); Assert.True(server.IsStatesQueueEmpty()); } }
public async Task ConnectDisconnectTest() { using (var server = new TestNode()) { using (var client = new TestNode()) { server.ListenAsync(); await client.ConnectAsync(); // Ensure both the client and server are connected var result = await client.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(client.IsStatesQueueEmpty()); result = await server.ReadState(); Assert.Equal(result, TestNodeState.Connected); Assert.True(server.IsStatesQueueEmpty()); await client.DisconnectAsync(); // Ensure both the client and server and disconnected result = await client.ReadState(); Assert.Equal(result, TestNodeState.Disconnected); Assert.True(client.IsStatesQueueEmpty()); result = await server.ReadState(); Assert.Equal(result, TestNodeState.Disconnected); Assert.True(server.IsStatesQueueEmpty()); } } }