Exemple #1
0
        public void TransportShouldNotDropConnectionWhenKeepAliveSuccess()
        {
            MemoryStream             stream           = new MemoryStream();
            ConcreteNetworkTransport networkTransport = new ConcreteNetworkTransport(stream, CancellationToken.None);

            networkTransport.StartKeepAlive(100, 1, 500);

            Thread.Sleep(200);

            GetHeaderFromStream(stream, out byte packetType, out int length);
            byte[] payload = GetPayloadFromStream(stream, length);

            Assert.AreEqual("PING", Encoding.Unicode.GetString(payload));

            byte[] payloadSent = Encoding.Unicode.GetBytes("PONG");
            payload = ConstructPayload(payloadSent, 1);
            stream.Write(payload, 0, payload.Length);
            stream.Position = 0;

#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
            networkTransport.StartReading();
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed

            Assert.IsTrue(stream.CanRead);
            Assert.IsTrue(stream.CanWrite);

            networkTransport.DropConnection();
        }
Exemple #2
0
        public void TransportShouldSendKeepAliveAfterTimeout()
        {
            MemoryStream             stream           = new MemoryStream();
            ConcreteNetworkTransport networkTransport = new ConcreteNetworkTransport(stream, CancellationToken.None);

            networkTransport.StartKeepAlive(500, 5, 10 * 1000);

            Thread.Sleep(1000);

            GetHeaderFromStream(stream, out byte packetType, out int length);
            byte[] payload = GetPayloadFromStream(stream, length);

            Assert.AreEqual(1, packetType);
            Assert.AreEqual("PING", Encoding.Unicode.GetString(payload));

            networkTransport.DropConnection();
        }