Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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());
            }
        }
Exemplo n.º 4
0
        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());
            }
        }
Exemplo n.º 5
0
        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());
                }
            }
        }