Merge branch 'master' of https://github.com/chkr1011/MQTTnet into feature/Reason_Code_In_Subscription_Interceptor

# Conflicts:
#	Build/MQTTnet.nuspec
#	Source/MQTTnet/Server/Internal/MqttClientSessionsManager.cs
This commit is contained in:
Christian
2021-10-29 21:58:57 +02:00
parent d5237bb3f5
commit 6bad9f183c
191 changed files with 601 additions and 981 deletions
@@ -2,7 +2,6 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Formatter;
using MQTTnet.Protocol;
@@ -2,7 +2,6 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Receiving;
using MQTTnet.Formatter;
using MQTTnet.Protocol;
using MQTTnet.Server;
+86 -32
View File
@@ -7,11 +7,8 @@ using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Adapter;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using MQTTnet.Client.Options;
using MQTTnet.Client.Receiving;
using MQTTnet.Formatter;
using MQTTnet.Packets;
using MQTTnet.Protocol;
using MQTTnet.Server;
using MQTTnet.Tests.Mockups;
@@ -127,7 +124,13 @@ namespace MQTTnet.Tests.Server
var clientOptions = new MqttClientOptionsBuilder().WithWillMessage(willMessage);
var c1 = await testEnvironment.ConnectClient();
c1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build());
var c2 = await testEnvironment.ConnectClient(clientOptions);
@@ -150,7 +153,12 @@ namespace MQTTnet.Tests.Server
// C1 will receive the last will!
var c1 = await testEnvironment.ConnectClient();
c1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build());
// C2 has the last will defined.
@@ -176,8 +184,6 @@ namespace MQTTnet.Tests.Server
{
using (var testEnvironment = CreateTestEnvironment())
{
var receivedMessagesCount = 0;
await testEnvironment.StartServer();
var willMessage = new MqttApplicationMessageBuilder().WithTopic("My/last/will").WithAtMostOnceQoS().Build();
@@ -185,9 +191,19 @@ namespace MQTTnet.Tests.Server
var clientOptions = new MqttClientOptionsBuilder().WithWillMessage(willMessage);
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
var receivedMessagesCount = 0;
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build());
// clientOptions.WithClientId("Client2");
// var c2 = await testEnvironment.ConnectClient(clientOptions);
var c2 = await testEnvironment.ConnectClient(clientOptions);
c2.Dispose(); // Dispose will not send a DISCONNECT pattern first so the will message must be sent.
@@ -207,7 +223,11 @@ namespace MQTTnet.Tests.Server
var receivedMessagesCount = 0;
var client = await testEnvironment.ConnectClient();
client.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
client.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
var message = new MqttApplicationMessageBuilder().WithTopic("a").WithAtLeastOnceQoS().Build();
await client.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce});
@@ -233,9 +253,17 @@ namespace MQTTnet.Tests.Server
var c2 = await testEnvironment.ConnectClient();
var c3 = await testEnvironment.ConnectClient();
c2.UseApplicationMessageReceivedHandler(c => { Interlocked.Increment(ref receivedMessagesCount); });
c2.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
c3.UseApplicationMessageReceivedHandler(c => { Interlocked.Increment(ref receivedMessagesCount); });
c3.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c2.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}).ConfigureAwait(false);
await c3.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}).ConfigureAwait(false);
@@ -293,13 +321,15 @@ namespace MQTTnet.Tests.Server
client.ConnectedHandler = new MqttClientConnectedHandlerDelegate(async e => { await client.PublishAsync("Connected"); });
client.UseApplicationMessageReceivedHandler(c =>
client.ApplicationMessageReceivedAsync += e =>
{
lock (receivedMessages)
{
receivedMessages.Add(c.ApplicationMessage);
receivedMessages.Add(e.ApplicationMessage);
}
});
return Task.CompletedTask;
};
await Task.Delay(500);
@@ -327,13 +357,15 @@ namespace MQTTnet.Tests.Server
var client = await testEnvironment.ConnectClient();
var receivedMessages = new List<MqttApplicationMessage>();
client.UseApplicationMessageReceivedHandler(c =>
client.ApplicationMessageReceivedAsync += e =>
{
lock (receivedMessages)
{
receivedMessages.Add(c.ApplicationMessage);
receivedMessages.Add(e.ApplicationMessage);
}
});
return Task.CompletedTask;
};
await Task.Delay(500);
@@ -511,7 +543,12 @@ namespace MQTTnet.Tests.Server
string receivedTopic = null;
var c1 = await testEnvironment.ConnectClient();
await c1.SubscribeAsync("#");
c1.UseApplicationMessageReceivedHandler(a => { receivedTopic = a.ApplicationMessage.Topic; });
c1.ApplicationMessageReceivedAsync += a =>
{
receivedTopic = a.ApplicationMessage.Topic;
return Task.CompletedTask;
};
await c1.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("original_topic").Build());
@@ -558,7 +595,12 @@ namespace MQTTnet.Tests.Server
string receivedTopic = null;
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(e => { receivedTopic = e.ApplicationMessage.Topic; });
c1.ApplicationMessageReceivedAsync += e =>
{
receivedTopic = e.ApplicationMessage.Topic;
return Task.CompletedTask;
};
await c1.SubscribeAsync("#");
await testEnvironment.ConnectClient();
@@ -589,10 +631,12 @@ namespace MQTTnet.Tests.Server
await c2.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("test").Build());
var isIntercepted = false;
c2.UseApplicationMessageReceivedHandler(c =>
c2.ApplicationMessageReceivedAsync += e =>
{
isIntercepted = string.Compare("extended", Encoding.UTF8.GetString(c.ApplicationMessage.Payload), StringComparison.Ordinal) == 0;
});
isIntercepted = string.Compare("extended", Encoding.UTF8.GetString(e.ApplicationMessage.Payload), StringComparison.Ordinal) == 0;
return Task.CompletedTask;
};
await c1.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("test").Build());
await c1.DisconnectAsync();
@@ -631,7 +675,11 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var client1 = await testEnvironment.ConnectClient();
client1.UseApplicationMessageReceivedHandler(c => { receivedBody = c.ApplicationMessage.Payload; });
client1.ApplicationMessageReceivedAsync += e =>
{
receivedBody = e.ApplicationMessage.Payload;
return Task.CompletedTask;
};
await client1.SubscribeAsync("string");
@@ -732,13 +780,15 @@ namespace MQTTnet.Tests.Server
});
c1.UseApplicationMessageReceivedHandler(_ =>
c1.ApplicationMessageReceivedAsync += e =>
{
lock (events)
{
events.Add("r");
}
});
return Task.CompletedTask;
};
c1.SubscribeAsync("topic").Wait();
@@ -825,13 +875,15 @@ namespace MQTTnet.Tests.Server
Assert.AreEqual("cdc", flow);
c2.UseApplicationMessageReceivedHandler(_ =>
c2.ApplicationMessageReceivedAsync += e =>
{
lock (events)
{
events.Add("r");
}
});
return Task.CompletedTask;
};
await c2.SubscribeAsync("topic");
@@ -941,13 +993,15 @@ namespace MQTTnet.Tests.Server
var buffer = new StringBuilder();
client2.UseApplicationMessageReceivedHandler(c =>
client2.ApplicationMessageReceivedAsync += e =>
{
lock (buffer)
{
buffer.Append(c.ApplicationMessage.Topic);
buffer.Append(e.ApplicationMessage.Topic);
}
});
return Task.CompletedTask;
};
await client2.SubscribeAsync(new MqttTopicFilter {Topic = "y"}, new MqttTopicFilter {Topic = "n"});
@@ -1016,7 +1070,7 @@ namespace MQTTnet.Tests.Server
await c1.UnsubscribeAsync(topicFilter);
await Task.Delay(500);
Assert.AreEqual(expectedReceivedMessagesCount, c1MessageHandler.ReceivedApplicationMessages.Count);
Assert.AreEqual(expectedReceivedMessagesCount, c1MessageHandler.ReceivedEventArgs.Count);
}
}
@@ -5,7 +5,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Packets;
using MQTTnet.Protocol;
using MQTTnet.Server;
using MQTTnet.Server.Internal;
using MQTTnet.Tests.Mockups;
namespace MQTTnet.Tests.Server
@@ -18,7 +17,7 @@ namespace MQTTnet.Tests.Server
{
var s = CreateSession();
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager());
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build());
@@ -35,7 +34,7 @@ namespace MQTTnet.Tests.Server
{
var s = CreateSession();
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager());
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new MqttTopicFilter { Topic = "A/B/C", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce });
@@ -52,7 +51,7 @@ namespace MQTTnet.Tests.Server
{
var s = CreateSession();
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager());
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new MqttTopicFilter { Topic = "#", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce });
@@ -70,7 +69,7 @@ namespace MQTTnet.Tests.Server
{
var s = CreateSession();
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager());
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build());
@@ -85,7 +84,7 @@ namespace MQTTnet.Tests.Server
{
var s = CreateSession();
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager());
var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager());
var sp = new MqttSubscribePacket();
sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build());
@@ -106,7 +105,7 @@ namespace MQTTnet.Tests.Server
var logger = new TestLogger();
var options = new MqttServerOptions();
var retainedMessagesManager = new MqttRetainedMessagesManager();
var eventContainer = new MqttServerEventContainer(logger);
var eventContainer = new MqttServerEventContainer();
return new MqttClientSession(
"",
@@ -37,7 +37,7 @@ namespace MQTTnet.Tests.Server
await LongTestDelay();
applicationMessageHandler.AssertReceivedCountEquals(1);
Assert.AreEqual(retainAsPublished, applicationMessageHandler.ReceivedApplicationMessages[0].Retain);
Assert.AreEqual(retainAsPublished, applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.Retain);
}
}
}
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Formatter;
using MQTTnet.Packets;
using MQTTnet.Protocol;
namespace MQTTnet.Tests.Server
@@ -18,6 +19,7 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var client = testEnvironment.CreateClient();
var connectResult = await client.ConnectAsync(testEnvironment.Factory.CreateClientOptionsBuilder()
.WithProtocolVersion(MqttProtocolVersion.V311)
.WithTcpServer("127.0.0.1", testEnvironment.ServerPort).Build());
@@ -114,7 +116,7 @@ namespace MQTTnet.Tests.Server
await Task.Delay(500);
messageHandler.AssertReceivedCountEquals(1);
Assert.IsTrue(messageHandler.ReceivedApplicationMessages.First().Retain);
Assert.IsTrue(messageHandler.ReceivedEventArgs.First().ApplicationMessage.Retain);
}
}
@@ -2,8 +2,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Adapter;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Options;
using MQTTnet.Exceptions;
using MQTTnet.Protocol;
@@ -2,8 +2,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Adapter;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Options;
using MQTTnet.Formatter;
using MQTTnet.Protocol;
@@ -4,9 +4,6 @@ using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Publishing;
using MQTTnet.Client.Subscribing;
using MQTTnet.Protocol;
using MQTTnet.Server;
using MQTTnet.Tests.Mockups;
@@ -57,10 +54,11 @@ namespace MQTTnet.Tests.Server
string receivedPayload = null;
var client = await testEnvironment.ConnectClient();
client.UseApplicationMessageReceivedHandler(delegate(MqttApplicationMessageReceivedEventArgs args)
client.ApplicationMessageReceivedAsync += e =>
{
receivedPayload = args.ApplicationMessage.ConvertPayloadToString();
});
receivedPayload = e.ApplicationMessage.ConvertPayloadToString();
return Task.CompletedTask;
};
var subscribeResult = await client.SubscribeAsync("x");
@@ -170,8 +168,8 @@ namespace MQTTnet.Tests.Server
await LongTestDelay();
// Assert
Assert.AreEqual(1, messageReceivedHandler.ReceivedApplicationMessages.Count);
Assert.AreEqual("injected_one", messageReceivedHandler.ReceivedApplicationMessages[0].Topic);
Assert.AreEqual(1, messageReceivedHandler.ReceivedEventArgs.Count);
Assert.AreEqual("injected_one", messageReceivedHandler.ReceivedEventArgs[0].ApplicationMessage.Topic);
}
}
@@ -191,13 +189,13 @@ namespace MQTTnet.Tests.Server
.WithClientId(qos.ToString())
.WithCleanSession(false));
subscriber.UseApplicationMessageReceivedHandler(c =>
subscriber.ApplicationMessageReceivedAsync += c =>
{
c.AutoAcknowledge = false;
++count;
Console.WriteLine("process");
return Task.CompletedTask;
});
};
await subscriber.SubscribeAsync("#", qos);
@@ -1,7 +1,6 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Subscribing;
using MQTTnet.Formatter;
namespace MQTTnet.Tests.Server
@@ -2,7 +2,6 @@
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Protocol;
using MQTTnet.Server;
using MQTTnet.Tests.Mockups;
@@ -141,7 +140,8 @@ namespace MQTTnet.Tests.Server
// At most once will send one packet to the client and the server will reply
// with an additional ACK packet.
await c1.PublishAsync("a", string.Empty, MqttQualityOfServiceLevel.AtLeastOnce);
await Task.Delay(250);
await Task.Delay(500);
var clientStatus = await server.GetClientStatusAsync();
@@ -150,8 +150,8 @@ namespace MQTTnet.Tests.Server
// + 1 because CONNECT is also counted.
Assert.AreEqual(i + 1, clientStatus.First().SentPacketsCount, "SPC invalid!");
// +1 because ConnACK package is already counted.
Assert.AreEqual(i + 1, clientStatus.First().ReceivedPacketsCount, "RPC invalid!");
// +2 because ConnACK + PubAck package is already counted.
Assert.AreEqual(i + 2, clientStatus.First().ReceivedPacketsCount, "RPC invalid!");
}
}
}
@@ -3,9 +3,8 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Formatter;
using MQTTnet.Packets;
using MQTTnet.Protocol;
using MQTTnet.Server;
@@ -33,17 +32,19 @@ namespace MQTTnet.Tests.Server
var topicBReceived = false;
var client = await testEnvironment.ConnectClient();
client.UseApplicationMessageReceivedHandler(c =>
client.ApplicationMessageReceivedAsync += e =>
{
if (c.ApplicationMessage.Topic == "a")
if (e.ApplicationMessage.Topic == "a")
{
topicAReceived = true;
}
else if (c.ApplicationMessage.Topic == "b")
else if (e.ApplicationMessage.Topic == "b")
{
topicBReceived = true;
}
});
return Task.CompletedTask;
};
await client.SubscribeAsync("b");
@@ -66,7 +67,11 @@ namespace MQTTnet.Tests.Server
var server = await testEnvironment.StartServer();
var c1 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithClientId("c1"));
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
var c2 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithClientId("c2"));
@@ -122,7 +127,12 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c1.SubscribeAsync(new MqttClientSubscribeOptionsBuilder()
.WithTopicFilter("a")
.WithTopicFilter("b")
@@ -155,7 +165,11 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
var optionsBuilder = new MqttClientSubscribeOptionsBuilder();
for (var i = 0; i < 500; i++)
@@ -191,7 +205,11 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
for (var i = 0; i < 500; i++)
{
@@ -231,7 +249,12 @@ namespace MQTTnet.Tests.Server
await testEnvironment.StartServer();
var c1 = await testEnvironment.ConnectClient();
c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));
c1.ApplicationMessageReceivedAsync += e =>
{
Interlocked.Increment(ref receivedMessagesCount);
return Task.CompletedTask;
};
await c1.SubscribeAsync(new MqttClientSubscribeOptionsBuilder()
.WithTopicFilter("a")
.Build());
@@ -47,7 +47,7 @@ namespace MQTTnet.Tests.Server
applicationMessageHandler.AssertReceivedCountEquals(1);
applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(456);
applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(456);
}
}
@@ -81,8 +81,8 @@ namespace MQTTnet.Tests.Server
applicationMessageHandler.AssertReceivedCountEquals(1);
applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(456);
applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(789);
applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(456);
applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(789);
}
}
}
@@ -1,5 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Server.Internal;
using MQTTnet.Server;
namespace MQTTnet.Tests.Server
{
@@ -3,7 +3,6 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Formatter;
namespace MQTTnet.Tests.Server
@@ -39,13 +38,15 @@ namespace MQTTnet.Tests.Server
var receivedTopics = new List<string>();
var c1 = await testEnvironment.ConnectClient(options => options.WithProtocolVersion(MqttProtocolVersion.V500));
c1.UseApplicationMessageReceivedHandler(e =>
c1.ApplicationMessageReceivedAsync += e =>
{
lock (receivedTopics)
{
receivedTopics.Add(e.ApplicationMessage.Topic);
}
});
return Task.CompletedTask;
};
await c1.SubscribeAsync("#");
@@ -3,9 +3,8 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Formatter;
using MQTTnet.Packets;
using MQTTnet.Tests.Mockups;
namespace MQTTnet.Tests.Server
@@ -41,7 +40,11 @@ namespace MQTTnet.Tests.Server
}, CancellationToken.None);
MqttApplicationMessage receivedMessage = null;
receiver.UseApplicationMessageReceivedHandler(e => receivedMessage = e.ApplicationMessage);
receiver.ApplicationMessageReceivedAsync += e =>
{
receivedMessage = e.ApplicationMessage;
return Task.CompletedTask;
};
await sender.PublishAsync(message.Build(), CancellationToken.None);