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()); } }
private async Task SendPayloads(TestNode server, TestNode client, byte[][] payloads) { for (int i = 0; i < payloads.Length; i++) { client.SendDataAsync(payloads[i]); using (var result = await server.ReadMessage()) { Assert.True(result.Payload.SequenceEqual(payloads[i])); } } }
private void SendPayloadsWithoutWaiting(TestNode client, byte[][] payloads) { for (int i = 0; i < payloads.Length; i++) { client.SendDataAsync(payloads[i]); } }
public async Task ManySimpleMessageTestWithoutWaiting(byte[][] payloads, int latency, int dropPercentage) { using (var server = new TestNode()) { using (var client = new TestNode(new TestSettings(latency, dropPercentage))) { server.ListenAsync(); await client.ConnectAsync(); for (int n = 0; n < 50; n++) { for (int i = 0; i < payloads.Length; i++) { client.SendDataAsync(payloads[i]); } } for (int n = 0; n < 50; n++) { for (int i = 0; i < payloads.Length; i++) { using (var result = await server.ReadMessage()) { Assert.True(result.Payload.SequenceEqual(payloads[i])); } } } await client.DisconnectAsync(); } } }