Add support for reset of connection statistics. Refactor keep alive monitor.

This commit is contained in:
Christian Kratky
2019-06-06 21:12:32 +02:00
parent 6262a16504
commit b0ad6bda70
8 changed files with 60 additions and 23 deletions
@@ -69,6 +69,10 @@ namespace MQTTnet.Tests.Mockups
}, cancellationToken);
}
public void ResetStatistics()
{
}
private void EnqueuePacketInternal(MqttBasePacket packet)
{
if (packet == null) throw new ArgumentNullException(nameof(packet));
@@ -16,31 +16,43 @@ namespace MQTTnet.Tests
[TestMethod]
public void KeepAlive_Timeout()
{
var clientSession = new TestClientSession();
var monitor = new MqttClientKeepAliveMonitor(clientSession, new MqttNetLogger().CreateChildLogger());
var counter = 0;
Assert.AreEqual(0, clientSession.StopCalledCount);
var monitor = new MqttClientKeepAliveMonitor("", () =>
{
counter++;
return Task.CompletedTask;
},
new MqttNetLogger().CreateChildLogger());
Assert.AreEqual(0, counter);
monitor.Start(1, CancellationToken.None);
Assert.AreEqual(0, clientSession.StopCalledCount);
Assert.AreEqual(0, counter);
Thread.Sleep(2000); // Internally the keep alive timeout is multiplied with 1.5 as per protocol specification.
Assert.AreEqual(1, clientSession.StopCalledCount);
Assert.AreEqual(1, counter);
}
[TestMethod]
public void KeepAlive_NoTimeout()
{
var clientSession = new TestClientSession();
var monitor = new MqttClientKeepAliveMonitor(clientSession, new MqttNetLogger().CreateChildLogger());
var counter = 0;
Assert.AreEqual(0, clientSession.StopCalledCount);
var monitor = new MqttClientKeepAliveMonitor("", () =>
{
counter++;
return Task.CompletedTask;
},
new MqttNetLogger().CreateChildLogger());
Assert.AreEqual(0, counter);
monitor.Start(1, CancellationToken.None);
Assert.AreEqual(0, clientSession.StopCalledCount);
Assert.AreEqual(0, counter);
// Simulate traffic.
Thread.Sleep(1000); // Internally the keep alive timeout is multiplied with 1.5 as per protocol specification.
@@ -49,11 +61,11 @@ namespace MQTTnet.Tests
monitor.PacketReceived();
Thread.Sleep(1000);
Assert.AreEqual(0, clientSession.StopCalledCount);
Assert.AreEqual(0, counter);
Thread.Sleep(2000);
Assert.AreEqual(1, clientSession.StopCalledCount);
Assert.AreEqual(1, counter);
}
private class TestClientSession : IMqttClientSession