From 7f083715323acce39d878eca2d452c1d132d9041 Mon Sep 17 00:00:00 2001 From: Christian Kratky Date: Mon, 8 Apr 2019 22:29:52 +0200 Subject: [PATCH] Update tests. --- .../MQTTv5/Feature_Tests.cs | 55 +++++++++++++++++ Tests/MQTTnet.Core.Tests/MqttClient_Tests.cs | 34 +++++++++++ .../MQTTnet.Core.Tests/RoundtripTime_Tests.cs | 59 ++++++++----------- 3 files changed, 115 insertions(+), 33 deletions(-) create mode 100644 Tests/MQTTnet.Core.Tests/MQTTv5/Feature_Tests.cs diff --git a/Tests/MQTTnet.Core.Tests/MQTTv5/Feature_Tests.cs b/Tests/MQTTnet.Core.Tests/MQTTv5/Feature_Tests.cs new file mode 100644 index 00000000..294ee846 --- /dev/null +++ b/Tests/MQTTnet.Core.Tests/MQTTv5/Feature_Tests.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +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.Tests.Mockups; + +namespace MQTTnet.Tests.MQTTv5 +{ + [TestClass] + public class Feature_Tests + { + [TestMethod] + public async Task Use_User_Properties() + { + using (var testEnvironment = new TestEnvironment()) + { + await testEnvironment.StartServerAsync(); + + var sender = await testEnvironment.ConnectClientAsync(new MqttClientOptionsBuilder().WithProtocolVersion(MqttProtocolVersion.V500)); + var receiver = await testEnvironment.ConnectClientAsync(new MqttClientOptionsBuilder().WithProtocolVersion(MqttProtocolVersion.V500)); + + var message = new MqttApplicationMessageBuilder() + .WithTopic("A") + .WithUserProperty("x", "1") + .WithUserProperty("y", "2") + .WithUserProperty("z", "3") + .WithUserProperty("z", "4"); // z is here two times to test list of items + + await receiver.SubscribeAsync(new MqttClientSubscribeOptions + { + TopicFilters = new List + { + new TopicFilter { Topic = "#" } + } + }, CancellationToken.None); + + MqttApplicationMessage receivedMessage = null; + receiver.UseApplicationMessageReceivedHandler(e => receivedMessage = e.ApplicationMessage); + + await sender.PublishAsync(message.Build(), CancellationToken.None); + + await Task.Delay(1000); + + Assert.IsNotNull(receivedMessage); + Assert.AreEqual("A", receivedMessage.Topic); + Assert.AreEqual(4, receivedMessage.UserProperties.Count); + + } + } + } +} diff --git a/Tests/MQTTnet.Core.Tests/MqttClient_Tests.cs b/Tests/MQTTnet.Core.Tests/MqttClient_Tests.cs index 35c78194..9d9bc2da 100644 --- a/Tests/MQTTnet.Core.Tests/MqttClient_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/MqttClient_Tests.cs @@ -2,13 +2,16 @@ using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; +using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; using MQTTnet.Client.Connecting; using MQTTnet.Client.Disconnecting; using MQTTnet.Client.Options; +using MQTTnet.Client.Subscribing; using MQTTnet.Exceptions; +using MQTTnet.Formatter; using MQTTnet.Protocol; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -339,5 +342,36 @@ namespace MQTTnet.Tests Assert.AreEqual("1", receivedPayload); } } + + [TestMethod] + public async Task No_Payload() + { + using (var testEnvironment = new TestEnvironment()) + { + await testEnvironment.StartServerAsync(); + + var sender = await testEnvironment.ConnectClientAsync(); + var receiver = await testEnvironment.ConnectClientAsync(); + + var message = new MqttApplicationMessageBuilder() + .WithTopic("A"); + + await receiver.SubscribeAsync(new MqttClientSubscribeOptions + { + TopicFilters = new List { new TopicFilter { Topic = "#" } } + }, CancellationToken.None); + + MqttApplicationMessage receivedMessage = null; + receiver.UseApplicationMessageReceivedHandler(e => receivedMessage = e.ApplicationMessage); + + await sender.PublishAsync(message.Build(), CancellationToken.None); + + await Task.Delay(1000); + + Assert.IsNotNull(receivedMessage); + Assert.AreEqual("A", receivedMessage.Topic); + Assert.AreEqual(null, receivedMessage.Payload); + } + } } } diff --git a/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs b/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs index a099d68c..02055a84 100644 --- a/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs @@ -4,9 +4,7 @@ using System.Diagnostics; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; -using MQTTnet.Server; +using MQTTnet.Tests.Mockups; namespace MQTTnet.Tests { @@ -16,42 +14,37 @@ namespace MQTTnet.Tests [TestMethod] public async Task Round_Trip_Time() { - var factory = new MqttFactory(); - var server = factory.CreateMqttServer(); - var receiverClient = factory.CreateMqttClient(); - var senderClient = factory.CreateMqttClient(); - - await server.StartAsync(new MqttServerOptionsBuilder().Build()); - - await receiverClient.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("localhost").Build()); - await receiverClient.SubscribeAsync("#"); - - await senderClient.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("localhost").Build()); - - TaskCompletionSource response = null; - - receiverClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(args => + using (var testEnvironment = new TestEnvironment()) { - response?.SetResult(args.ApplicationMessage.ConvertPayloadToString()); - }); + await testEnvironment.StartServerAsync(); + var receiverClient = await testEnvironment.ConnectClientAsync(); + var senderClient = await testEnvironment.ConnectClientAsync(); - var times = new List(); - var stopwatch = Stopwatch.StartNew(); + await receiverClient.SubscribeAsync("#"); + + TaskCompletionSource response = null; - await Task.Delay(1000); + receiverClient.UseApplicationMessageReceivedHandler(e => + { + response?.SetResult(e.ApplicationMessage.ConvertPayloadToString()); + }); - for (var i = 0; i < 100; i++) - { - response = new TaskCompletionSource(); - await senderClient.PublishAsync("test", DateTime.UtcNow.Ticks.ToString()); - response.Task.GetAwaiter().GetResult(); + var times = new List(); + var stopwatch = Stopwatch.StartNew(); - stopwatch.Stop(); - times.Add(stopwatch.Elapsed); - stopwatch.Restart(); + await Task.Delay(1000); + + for (var i = 0; i < 100; i++) + { + response = new TaskCompletionSource(); + await senderClient.PublishAsync("test", DateTime.UtcNow.Ticks.ToString()); + response.Task.GetAwaiter().GetResult(); + + stopwatch.Stop(); + times.Add(stopwatch.Elapsed); + stopwatch.Restart(); + } } - - await server.StopAsync(); } } }