Add extension for RPC calls; replace locks; Refactored storage in Managed Client

This commit is contained in:
Christian Kratky
2017-12-04 10:21:37 +01:00
parent 0ee3c8e135
commit d12d2648b7
31 changed files with 690 additions and 307 deletions
@@ -14,9 +14,9 @@ namespace MQTTnet.Core.Tests
var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new TopicFilter("A/B/C"));
sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());
sm.Subscribe(sp, "");
sm.SubscribeAsync(sp, "").Wait();
var pp = new MqttApplicationMessage
{
@@ -24,7 +24,52 @@ namespace MQTTnet.Core.Tests
QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
};
Assert.IsTrue(sm.CheckSubscriptions(pp).IsSubscribed);
var result = sm.CheckSubscriptionsAsync(pp).Result;
Assert.IsTrue(result.IsSubscribed);
Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtMostOnce);
}
[TestMethod]
public void MqttSubscriptionsManager_SubscribeDifferentQoSSuccess()
{
var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new TopicFilter("A/B/C", MqttQualityOfServiceLevel.AtMostOnce));
sm.SubscribeAsync(sp, "").Wait();
var pp = new MqttApplicationMessage
{
Topic = "A/B/C",
QualityOfServiceLevel = MqttQualityOfServiceLevel.ExactlyOnce
};
var result = sm.CheckSubscriptionsAsync(pp).Result;
Assert.IsTrue(result.IsSubscribed);
Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtMostOnce);
}
[TestMethod]
public void MqttSubscriptionsManager_SubscribeTwoTimesSuccess()
{
var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new TopicFilter("#", MqttQualityOfServiceLevel.AtMostOnce));
sp.TopicFilters.Add(new TopicFilter("A/B/C", MqttQualityOfServiceLevel.AtLeastOnce));
sm.SubscribeAsync(sp, "").Wait();
var pp = new MqttApplicationMessage
{
Topic = "A/B/C",
QualityOfServiceLevel = MqttQualityOfServiceLevel.ExactlyOnce
};
var result = sm.CheckSubscriptionsAsync(pp).Result;
Assert.IsTrue(result.IsSubscribed);
Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtLeastOnce);
}
[TestMethod]
@@ -33,9 +78,9 @@ namespace MQTTnet.Core.Tests
var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new TopicFilter("A/B/C"));
sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());
sm.Subscribe(sp, "");
sm.SubscribeAsync(sp, "").Wait();
var pp = new MqttApplicationMessage
{
@@ -43,7 +88,7 @@ namespace MQTTnet.Core.Tests
QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
};
Assert.IsFalse(sm.CheckSubscriptions(pp).IsSubscribed);
Assert.IsFalse(sm.CheckSubscriptionsAsync(pp).Result.IsSubscribed);
}
[TestMethod]
@@ -52,9 +97,9 @@ namespace MQTTnet.Core.Tests
var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new TopicFilter("A/B/C"));
sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());
sm.Subscribe(sp, "");
sm.SubscribeAsync(sp, "").Wait();
var pp = new MqttApplicationMessage
{
@@ -62,13 +107,13 @@ namespace MQTTnet.Core.Tests
QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
};
Assert.IsTrue(sm.CheckSubscriptions(pp).IsSubscribed);
Assert.IsTrue(sm.CheckSubscriptionsAsync(pp).Result.IsSubscribed);
var up = new MqttUnsubscribePacket();
up.TopicFilters.Add("A/B/C");
sm.Unsubscribe(up);
sm.UnsubscribeAsync(up).Wait();
Assert.IsFalse(sm.CheckSubscriptions(pp).IsSubscribed);
Assert.IsFalse(sm.CheckSubscriptionsAsync(pp).Result.IsSubscribed);
}
}
}