diff --git a/Source/MQTTnet/Formatter/MqttPacketReader.cs b/Source/MQTTnet/Formatter/MqttPacketReader.cs index 61698a1a..0f1a9760 100644 --- a/Source/MQTTnet/Formatter/MqttPacketReader.cs +++ b/Source/MQTTnet/Formatter/MqttPacketReader.cs @@ -6,11 +6,11 @@ using MQTTnet.Exceptions; namespace MQTTnet.Formatter { - public class MqttPacketReader + public sealed class MqttPacketReader { - private readonly byte[] _singleByteBuffer = new byte[1]; + readonly byte[] _singleByteBuffer = new byte[1]; - private readonly IMqttChannel _channel; + readonly IMqttChannel _channel; public MqttPacketReader(IMqttChannel channel) { @@ -70,7 +70,7 @@ namespace MQTTnet.Formatter }; } - private async Task ReadBodyLengthAsync(byte initialEncodedByte, CancellationToken cancellationToken) + async Task ReadBodyLengthAsync(byte initialEncodedByte, CancellationToken cancellationToken) { var offset = 0; var multiplier = 128; diff --git a/Tests/MQTTnet.Core.Tests/Server_KeepAlive_Tests.cs b/Tests/MQTTnet.Core.Tests/Server_KeepAlive_Tests.cs index d6be5a8f..6d9a0208 100644 --- a/Tests/MQTTnet.Core.Tests/Server_KeepAlive_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server_KeepAlive_Tests.cs @@ -17,43 +17,30 @@ namespace MQTTnet.Tests { using (var testEnvironment = new TestEnvironment()) { - var server = await testEnvironment.StartServerAsync(); + await testEnvironment.StartServerAsync(); var client = await testEnvironment.ConnectLowLevelClientAsync(o => o - .WithCommunicationTimeout(TimeSpan.FromSeconds(2)) + .WithCommunicationTimeout(TimeSpan.FromSeconds(1)) .WithProtocolVersion(MqttProtocolVersion.V500)).ConfigureAwait(false); await client.SendAsync(new MqttConnectPacket { CleanSession = true, ClientId = "abc", - KeepAlivePeriod = 1, + KeepAlivePeriod = 1 }, CancellationToken.None).ConfigureAwait(false); - var response = await client.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); - - Assert.IsTrue(response is MqttConnAckPacket); - - await client.SendAsync(MqttPingReqPacket.Instance, CancellationToken.None); - await Task.Delay(500); - var responsePacket = await client.ReceiveAsync(CancellationToken.None); - Assert.IsTrue(responsePacket is MqttPingRespPacket); - - await client.SendAsync(MqttPingReqPacket.Instance, CancellationToken.None); - await Task.Delay(500); - responsePacket = await client.ReceiveAsync(CancellationToken.None); - Assert.IsTrue(responsePacket is MqttPingRespPacket); - - await client.SendAsync(MqttPingReqPacket.Instance, CancellationToken.None); - await Task.Delay(500); - responsePacket = await client.ReceiveAsync(CancellationToken.None); - Assert.IsTrue(responsePacket is MqttPingRespPacket); - - await client.SendAsync(MqttPingReqPacket.Instance, CancellationToken.None); - await Task.Delay(500); - responsePacket = await client.ReceiveAsync(CancellationToken.None); - Assert.IsTrue(responsePacket is MqttPingRespPacket); + var responsePacket = await client.ReceiveAsync(CancellationToken.None).ConfigureAwait(false); + Assert.IsTrue(responsePacket is MqttConnAckPacket); + for (var i = 0; i < 6; i++) + { + await client.SendAsync(MqttPingReqPacket.Instance, CancellationToken.None); + await Task.Delay(500); + responsePacket = await client.ReceiveAsync(CancellationToken.None); + Assert.IsTrue(responsePacket is MqttPingRespPacket); + } + // If we reach this point everything works as expected (server did not close the connection // due to proper ping messages. // Now we will wait 1.2 seconds because the server MUST wait 1.5 seconds in total (See spec).