public void AddRemoveItemDoesNotFireTimeoutEvent() { MqttProtocolInformation.Settings.NetworkTimeout = 4; // 4 seconds var store = new MessageStore(); var are = new AutoResetEvent(false); var eventData = "Test data"; string connectionKey = "123"; var msg = new MqttPublishMessageBuilder { MessageId = 42, QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b/c" }; store.MessageTimeout += (sender, args) => { Assert.Fail("MessageTimeout event fired but should not have."); are.Set(); }; store.Add(msg.GetMessage(), eventData, connectionKey); Thread.Sleep(1000); store.Remove(MessageType.PubAck, 42, connectionKey); if (!are.WaitOne(MqttProtocolInformation.Settings.NetworkTimeout*2)) { Assert.AreEqual(0, store.Count); } }
public void AddItemWithoutRemovingItFiresTimeoutEvent() { MqttProtocolInformation.Settings.NetworkTimeout = 4; // 4 seconds var store = new MessageStore(); var are = new AutoResetEvent(false); var eventData = "Test data"; string connectionKey = "123"; var msgBldr = new MqttPublishMessageBuilder { MessageId = 42, QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b/c" }; var msg = msgBldr.GetMessage(); store.MessageTimeout += (sender, args) => { Assert.AreEqual(msg, args.FailedMessage); Assert.AreEqual(eventData, args.EventData); are.Set(); }; store.Add(msg, eventData, connectionKey); if (!are.WaitOne(MqttProtocolInformation.Settings.NetworkTimeout*2*1000)) { Assert.Fail("Timeout event did not fire."); } }
public void RemoveItemReturnsEventData() { MqttProtocolInformation.Settings.NetworkTimeout = 4; // 4 seconds var store = new MessageStore(); var eventData = "Test data"; string connectionKey = "123"; var msg = new MqttPublishMessageBuilder { MessageId = 42, QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b/c" }; store.Add(msg.GetMessage(), eventData, connectionKey); Thread.Sleep(1000); object testData = store.Remove(MessageType.PubAck, 42, connectionKey); Assert.AreSame(eventData, testData); }