Exemple #1
0
        public void MqttSubscriptionsManager_SubscribeAndUnsubscribeSingle()
        {
            var sm = new MqttClientSubscriptionsManager(new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter("A/B/C"));

            sm.Subscribe(sp, "");

            var pp = new MqttPublishPacket
            {
                Topic = "A/B/C",
                QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
            };

            Assert.IsTrue(sm.CheckSubscriptions(pp).IsSubscribed);

            var up = new MqttUnsubscribePacket();

            up.TopicFilters.Add("A/B/C");
            sm.Unsubscribe(up);

            Assert.IsFalse(sm.CheckSubscriptions(pp).IsSubscribed);
        }
        CheckSubscriptionsResult CheckSubscriptions(string topic, MqttQualityOfServiceLevel applicationMessageQoSLevel, string senderClientId)
        {
            ulong topicHashMask; // not needed
            bool  hasWildcard;   // not needed

            MqttSubscription.CalculateTopicHash(topic, out var topicHash, out topicHashMask, out hasWildcard);
            return(_subscriptionsManager.CheckSubscriptions(topic, topicHash, applicationMessageQoSLevel, senderClientId));
        }
        public void MqttSubscriptionsManager_SubscribeAndUnsubscribeSingle()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerOptions(), new MqttServerEventDispatcher());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());

            sm.Subscribe(sp);

            Assert.IsTrue(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);

            var up = new MqttUnsubscribePacket();

            up.TopicFilters.Add("A/B/C");
            sm.Unsubscribe(up);

            Assert.IsFalse(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);
        }
        public async Task MqttSubscriptionsManager_SubscribeAndUnsubscribeSingle()
        {
            var s = CreateSession();

            var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventDispatcher(new TestLogger()), new MqttRetainedMessagesManager());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build());

            await sm.Subscribe(sp);

            Assert.IsTrue(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce, "").IsSubscribed);

            var up = new MqttUnsubscribePacket();

            up.TopicFilters.Add("A/B/C");
            await sm.Unsubscribe(up);

            Assert.IsFalse(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce, "").IsSubscribed);
        }
        public void MqttSubscriptionsManager_SubscribeSingleNoSuccess()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());

            sm.SubscribeAsync(sp).GetAwaiter().GetResult();

            Assert.IsFalse(sm.CheckSubscriptions("A/B/X", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);
        }
        public void MqttSubscriptionsManager_SubscribeSingleNoSuccess()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerOptions(), new MqttServer(new IMqttServerAdapter[0], new MqttNetLogger().CreateChildLogger("")));

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());

            sm.Subscribe(sp);

            Assert.IsFalse(sm.CheckSubscriptions("A/B/X", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);
        }
Exemple #7
0
        public async Task MqttSubscriptionsManager_SubscribeAndUnsubscribeSingle()
        {
            var s = new MqttClientSession("", new ConcurrentDictionary <object, object>(),
                                          new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions(), new TestLogger());

            var sm = new MqttClientSubscriptionsManager(s, new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilterBuilder().WithTopic("A/B/C").Build());

            await sm.SubscribeAsync(sp, new MqttConnectPacket());

            Assert.IsTrue(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);

            var up = new MqttUnsubscribePacket();

            up.TopicFilters.Add("A/B/C");
            await sm.UnsubscribeAsync(up);

            Assert.IsFalse(sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);
        }
Exemple #8
0
        public async Task MqttSubscriptionsManager_SubscribeSingleNoSuccess()
        {
            var s = CreateSession();

            var sm = new MqttClientSubscriptionsManager(s, new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build());

            await sm.SubscribeAsync(sp, new MqttConnectPacket());

            Assert.IsFalse(sm.CheckSubscriptions("A/B/X", MqttQualityOfServiceLevel.AtMostOnce).IsSubscribed);
        }
        public void MqttSubscriptionsManager_SubscribeDifferentQoSSuccess()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerOptions(), new MqttServerEventDispatcher());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter("A/B/C", MqttQualityOfServiceLevel.AtMostOnce));

            sm.Subscribe(sp);

            var result = sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.ExactlyOnce);

            Assert.IsTrue(result.IsSubscribed);
            Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtMostOnce);
        }
        public void MqttSubscriptionsManager_SubscribeTwoTimesSuccess()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerOptions(), new MqttServer(new IMqttServerAdapter[0], new MqttNetLogger().CreateChildLogger("")));

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter("#", MqttQualityOfServiceLevel.AtMostOnce));
            sp.TopicFilters.Add(new TopicFilter("A/B/C", MqttQualityOfServiceLevel.AtLeastOnce));

            sm.Subscribe(sp);

            var result = sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.ExactlyOnce);

            Assert.IsTrue(result.IsSubscribed);
            Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtLeastOnce);
        }
        public void MqttSubscriptionsManager_SubscribeSingleNoSuccess()
        {
            var sm = new MqttClientSubscriptionsManager(new OptionsWrapper <MqttServerOptions>(new MqttServerOptions()));

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter("A/B/C"));

            sm.Subscribe(sp, "");

            var pp = new MqttPublishPacket
            {
                Topic = "A/B/X",
                QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
            };

            Assert.IsFalse(sm.CheckSubscriptions(pp).IsSubscribed);
        }
        public async Task MqttSubscriptionsManager_SubscribeDifferentQoSSuccess()
        {
            var s = CreateSession();

            var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventDispatcher(new TestLogger()), new MqttRetainedMessagesManager());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new MqttTopicFilter {
                Topic = "A/B/C", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
            });

            await sm.Subscribe(sp);

            var result = sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.ExactlyOnce, "");

            Assert.IsTrue(result.IsSubscribed);
            Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtMostOnce);
        }
Exemple #13
0
        public async Task MqttSubscriptionsManager_SubscribeDifferentQoSSuccess()
        {
            var s = new MqttClientSession("", new ConcurrentDictionary <object, object>(),
                                          new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions(), new TestLogger());

            var sm = new MqttClientSubscriptionsManager(s, new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter {
                Topic = "A/B/C", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
            });

            await sm.SubscribeAsync(sp, new MqttConnectPacket());

            var result = sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.ExactlyOnce);

            Assert.IsTrue(result.IsSubscribed);
            Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtMostOnce);
        }
        public void MqttSubscriptionsManager_SubscribeTwoTimesSuccess()
        {
            var sm = new MqttClientSubscriptionsManager("", new MqttServerEventDispatcher(new TestLogger()), new MqttServerOptions());

            var sp = new MqttSubscribePacket();

            sp.TopicFilters.Add(new TopicFilter {
                Topic = "#", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce
            });
            sp.TopicFilters.Add(new TopicFilter {
                Topic = "A/B/C", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce
            });

            sm.SubscribeAsync(sp).GetAwaiter().GetResult();

            var result = sm.CheckSubscriptions("A/B/C", MqttQualityOfServiceLevel.ExactlyOnce);

            Assert.IsTrue(result.IsSubscribed);
            Assert.AreEqual(result.QualityOfServiceLevel, MqttQualityOfServiceLevel.AtLeastOnce);
        }