Improve keep alive tests.

This commit is contained in:
Christian Kratky
2020-11-02 21:17:31 +01:00
parent 2f0513212e
commit 44b7133a1c
2 changed files with 17 additions and 30 deletions
+4 -4
View File
@@ -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<int?> ReadBodyLengthAsync(byte initialEncodedByte, CancellationToken cancellationToken)
async Task<int?> ReadBodyLengthAsync(byte initialEncodedByte, CancellationToken cancellationToken)
{
var offset = 0;
var multiplier = 128;
@@ -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).