diff --git a/Directory.Packages.props b/Directory.Packages.props index 233fc2ad6..7d0f95d76 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -42,24 +42,22 @@ - - + + - - - + - + diff --git a/MORYX-Framework.sln b/MORYX-Framework.sln index 311087c01..cc3ea0111 100644 --- a/MORYX-Framework.sln +++ b/MORYX-Framework.sln @@ -216,8 +216,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Drivers", "Drivers", "{93C9 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Drivers.Mqtt", "src\Moryx.Drivers.Mqtt\Moryx.Drivers.Mqtt.csproj", "{7EDCD56F-EF56-40DF-A25F-5896990D2407}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Resources.Mqtt.Tests", "src\Tests\Moryx.Recources.Mqtt.Tests\Moryx.Resources.Mqtt.Tests.csproj", "{4C32122A-90B9-4E49-AE3E-985FA5D4AC54}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Drivers.OpcUa", "src\Moryx.Drivers.OpcUa\Moryx.Drivers.OpcUa.csproj", "{BD3B74DF-9EC2-4A5A-BCFE-1707C83756CC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Drivers.OpcUa.Tests", "src\Tests\Moryx.Drivers.OpcUa.Tests\Moryx.Drivers.OpcUa.Tests.csproj", "{CB5BC342-4952-4419-ABB9-0D240684A3DE}" @@ -308,6 +306,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Shifts.Management.Int EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Model.SqlServer", "src\Moryx.Model.SqlServer\Moryx.Model.SqlServer.csproj", "{4402EF2E-CBA8-4EEF-B8A6-EC8364960306}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moryx.Drivers.Mqtt.Tests", "src\Tests\Moryx.Drivers.Mqtt.Tests\Moryx.Drivers.Mqtt.Tests.csproj", "{B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -646,10 +646,6 @@ Global {7EDCD56F-EF56-40DF-A25F-5896990D2407}.Debug|Any CPU.Build.0 = Debug|Any CPU {7EDCD56F-EF56-40DF-A25F-5896990D2407}.Release|Any CPU.ActiveCfg = Release|Any CPU {7EDCD56F-EF56-40DF-A25F-5896990D2407}.Release|Any CPU.Build.0 = Release|Any CPU - {4C32122A-90B9-4E49-AE3E-985FA5D4AC54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4C32122A-90B9-4E49-AE3E-985FA5D4AC54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4C32122A-90B9-4E49-AE3E-985FA5D4AC54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4C32122A-90B9-4E49-AE3E-985FA5D4AC54}.Release|Any CPU.Build.0 = Release|Any CPU {BD3B74DF-9EC2-4A5A-BCFE-1707C83756CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BD3B74DF-9EC2-4A5A-BCFE-1707C83756CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {BD3B74DF-9EC2-4A5A-BCFE-1707C83756CC}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -810,6 +806,10 @@ Global {4402EF2E-CBA8-4EEF-B8A6-EC8364960306}.Debug|Any CPU.Build.0 = Debug|Any CPU {4402EF2E-CBA8-4EEF-B8A6-EC8364960306}.Release|Any CPU.ActiveCfg = Release|Any CPU {4402EF2E-CBA8-4EEF-B8A6-EC8364960306}.Release|Any CPU.Build.0 = Release|Any CPU + {B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -893,7 +893,6 @@ Global {39EDE0BB-F7D8-4E2E-9D1B-36A7A245FA05} = {8BBF84BB-4A8B-49F4-BA74-F25CBEED3F57} {D473D554-26F3-47EC-AE7D-A9754556C9D9} = {8BBF84BB-4A8B-49F4-BA74-F25CBEED3F57} {7EDCD56F-EF56-40DF-A25F-5896990D2407} = {93C94C82-873F-4D31-8A9C-0227047BD5A8} - {4C32122A-90B9-4E49-AE3E-985FA5D4AC54} = {0A466330-6ED6-4861-9C94-31B1949CDDB9} {BD3B74DF-9EC2-4A5A-BCFE-1707C83756CC} = {93C94C82-873F-4D31-8A9C-0227047BD5A8} {CB5BC342-4952-4419-ABB9-0D240684A3DE} = {0A466330-6ED6-4861-9C94-31B1949CDDB9} {58CD8D72-1000-479A-B82A-D8C018345239} = {73AFB51B-B1A2-4144-AB4C-9CDE80CBCFBC} @@ -934,6 +933,7 @@ Global {22358E04-0AE4-4ADA-9018-56C881E313F1} = {8DF13E64-63FC-44A9-A54C-ADEFC356CDE8} {5E02B439-B91F-4297-9AE4-7B92F2AA2AFF} = {8517D209-5BC1-47BD-A7C7-9CF9ADD9F5B6} {4402EF2E-CBA8-4EEF-B8A6-EC8364960306} = {74112169-6672-4907-A187-F055111940A9} + {B2F922C0-F7C3-4C70-9BC5-5B5743BD8D7F} = {0A466330-6ED6-4861-9C94-31B1949CDDB9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {36EFC961-F4E7-49DC-A36A-99594FFB8243} diff --git a/src/Moryx.Drivers.Mqtt/MqttDriver.cs b/src/Moryx.Drivers.Mqtt/MqttDriver.cs index b0b3a5ce1..2a586b68d 100644 --- a/src/Moryx.Drivers.Mqtt/MqttDriver.cs +++ b/src/Moryx.Drivers.Mqtt/MqttDriver.cs @@ -1,10 +1,10 @@ // Copyright (c) 2025, Phoenix Contact GmbH & Co. KG // Licensed under the Apache License, Version 2.0 +using System.Buffers; using System.Runtime.Serialization; using Moryx.AbstractionLayer.Drivers; using MQTTnet; -using MQTTnet.Client; using System.ComponentModel; using System.Text.RegularExpressions; using Moryx.AbstractionLayer.Drivers.Message; @@ -146,7 +146,7 @@ protected override void OnInitialize() { base.OnInitialize(); - var factory = new MqttFactory(); + var factory = new MqttClientFactory(); _mqttClient = factory.CreateMqttClient(); _mqttClient.ApplicationMessageReceivedAsync += OnReceived; @@ -339,14 +339,17 @@ public async Task OnSend(MqttMessageTopic messageTopic, byte[] message, Cancella private Task OnReceived(MqttApplicationMessageReceivedEventArgs args) { // Experimental: Dispatch to new thread to prevent exceptions or deadlocks from causing inflight blockage - ParallelOperations.ExecuteParallel(param => Receive(param.Topic, param.Payload), new { args.ApplicationMessage.Topic, args.ApplicationMessage.Payload }); + ParallelOperations.ExecuteParallel(param => Receive(param.Topic, param.Payload), new + { + args.ApplicationMessage.Topic, + Payload = args.ApplicationMessage.Payload.ToArray() + }); return Task.CompletedTask; } internal void Receive(string topicName, byte[] message) { - var topic = topicName; if (Identifier != "") { diff --git a/src/Moryx.Drivers.Mqtt/Properties/AssemblyInfo.cs b/src/Moryx.Drivers.Mqtt/Properties/AssemblyInfo.cs index 5a8970d7a..a2cda0907 100644 --- a/src/Moryx.Drivers.Mqtt/Properties/AssemblyInfo.cs +++ b/src/Moryx.Drivers.Mqtt/Properties/AssemblyInfo.cs @@ -3,4 +3,4 @@ using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Moryx.Resources.Mqtt.Tests")] \ No newline at end of file +[assembly: InternalsVisibleTo("Moryx.Drivers.Mqtt.Tests")] diff --git a/src/Moryx.Drivers.OpcUa/OpcUaDriver.cs b/src/Moryx.Drivers.OpcUa/OpcUaDriver.cs index 7503f0e13..d4860cda3 100644 --- a/src/Moryx.Drivers.OpcUa/OpcUaDriver.cs +++ b/src/Moryx.Drivers.OpcUa/OpcUaDriver.cs @@ -195,7 +195,7 @@ internal List NodeIdAlias //TODO: Internal property just for tests, use xml also in tests internal ApplicationConfigurationFactory ApplicationConfigurationFactory { get; set; } = new(); - + /// /// Convert an OpcUaNode to an entity to be shown on the UI /// diff --git a/src/Moryx.Model.Sqlite/Moryx.Model.Sqlite.csproj b/src/Moryx.Model.Sqlite/Moryx.Model.Sqlite.csproj index 4655f9f58..70602b005 100644 --- a/src/Moryx.Model.Sqlite/Moryx.Model.Sqlite.csproj +++ b/src/Moryx.Model.Sqlite/Moryx.Model.Sqlite.csproj @@ -13,7 +13,6 @@ - diff --git a/src/Moryx.Operators.Management/Moryx.Operators.Management.csproj b/src/Moryx.Operators.Management/Moryx.Operators.Management.csproj index 61b639f25..f08fa7d43 100644 --- a/src/Moryx.Operators.Management/Moryx.Operators.Management.csproj +++ b/src/Moryx.Operators.Management/Moryx.Operators.Management.csproj @@ -19,6 +19,7 @@ + diff --git a/src/Moryx.Shifts.Management/Moryx.Shifts.Management.csproj b/src/Moryx.Shifts.Management/Moryx.Shifts.Management.csproj index a02ca4f12..5c7e9fbad 100644 --- a/src/Moryx.Shifts.Management/Moryx.Shifts.Management.csproj +++ b/src/Moryx.Shifts.Management/Moryx.Shifts.Management.csproj @@ -14,6 +14,7 @@ + diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/Moryx.Resources.Mqtt.Tests.csproj b/src/Tests/Moryx.Drivers.Mqtt.Tests/Moryx.Drivers.Mqtt.Tests.csproj similarity index 98% rename from src/Tests/Moryx.Recources.Mqtt.Tests/Moryx.Resources.Mqtt.Tests.csproj rename to src/Tests/Moryx.Drivers.Mqtt.Tests/Moryx.Drivers.Mqtt.Tests.csproj index 7f2e3cd5f..bde6a0ef2 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/Moryx.Resources.Mqtt.Tests.csproj +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/Moryx.Drivers.Mqtt.Tests.csproj @@ -1,10 +1,12 @@  + Library net10.0 full true + @@ -12,10 +14,12 @@ + - \ No newline at end of file + + diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttChannelFunctions.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttChannelFunctions.cs similarity index 98% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttChannelFunctions.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttChannelFunctions.cs index abe2efeda..3258c1a1a 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttChannelFunctions.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttChannelFunctions.cs @@ -9,22 +9,20 @@ using Moq; using Moryx.AbstractionLayer.Products; using Moryx.AbstractionLayer.TestTools; -using Moryx.Drivers.Mqtt; using Moryx.Drivers.Mqtt.MqttTopics; +using Moryx.Drivers.Mqtt.Tests.TestMessages; using Moryx.Logging; using Moryx.Modules; -using Moryx.Resources.Mqtt.Tests.TestMessages; using Moryx.TestTools.UnitTest; using Moryx.Tools; using MQTTnet; -using MQTTnet.Client; using MQTTnet.Formatter; using MQTTnet.Packets; using MQTTnet.Protocol; using Newtonsoft.Json; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture(MqttProtocolVersion.V310)] [TestFixture(MqttProtocolVersion.V311)] @@ -50,7 +48,7 @@ public void Setup() _driver = CreateMqttDriver(); _mockClient = SetupMqttClientMock(); - //Initialize MqttDriver + //Initialize MqttDriver _driver.InitializeForTest(_mockClient.Object); ((IPlugin)_driver).Start(); _driver.OnConnected(new MqttClientConnectedEventArgs(new MqttClientConnectResult())).Wait(); @@ -88,7 +86,8 @@ private MqttDriver CreateMqttDriver() Id = 4, Logger = new ModuleLogger("Dummy", new NullLoggerFactory()), Channels = new ReferenceCollectionMock(), - MqttVersion = _version + MqttVersion = _version, + BrokerUrl = "mock" }; } @@ -122,7 +121,7 @@ public void Channel_FindChannel_TChannel() Assert.That(c.Identifier.Equals(_topicBoolMqtt.Identifier)); } - + [Test(Description = "Return null, if identifier does not exist")] public void Channel_NotFindChannel_IdentifierDoesNotExist() { diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttIByteSerializable.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttIByteSerializable.cs similarity index 95% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttIByteSerializable.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttIByteSerializable.cs index 291be0b39..0ab199a4b 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttIByteSerializable.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttIByteSerializable.cs @@ -2,26 +2,24 @@ // Licensed under the Apache License, Version 2.0 using System; +using System.Buffers; using System.Linq.Expressions; using System.Threading; -using System.Threading.Tasks; using Microsoft.Extensions.Logging.Abstractions; using Moq; using Moryx.AbstractionLayer.TestTools; -using Moryx.Drivers.Mqtt; using Moryx.Drivers.Mqtt.MqttTopics; +using Moryx.Drivers.Mqtt.Tests.TestMessages; using Moryx.Logging; using Moryx.Modules; -using Moryx.Resources.Mqtt.Tests.TestMessages; using Moryx.Tools; using MQTTnet; -using MQTTnet.Client; using MQTTnet.Formatter; using MQTTnet.Packets; using MQTTnet.Protocol; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture(MqttProtocolVersion.V310)] [TestFixture(MqttProtocolVersion.V311)] @@ -64,7 +62,8 @@ public void Setup() Id = 4, Logger = new ModuleLogger("Dummy", new NullLoggerFactory()), Channels = new ReferenceCollectionMock { _topicBoolMqtt, _topicBoolIByteSerializable }, - MqttVersion = _version + MqttVersion = _version, + BrokerUrl = "mock" }; _mockClient = new Mock(); @@ -84,8 +83,7 @@ public void Setup() private Expression> CorrectClientOptions() { return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession - && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl && - (o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port; + && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}"; } [Test(Description = "Publish Message using Driver")] @@ -129,7 +127,7 @@ private void SendMessageBoolMqttMessage(MqttApplicationMessage mqttMsg, Cancella Assert.That(mqttMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce), "Qos should be ExactlyOnce, but is " + mqttMsg.QualityOfServiceLevel); var msg = new BoolMqttMessage(); - msg.FromBytes(mqttMsg.Payload); + msg.FromBytes(mqttMsg.Payload.ToArray()); Assert.That(msg.Message == MESSAGE_VALUE, "Message should be " + MESSAGE_VALUE + ", but is " + msg.Message); } @@ -160,7 +158,7 @@ private void SendMessageBoolIByteSerializableMessage(MqttApplicationMessage sent Assert.That(sentMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce), "Qos should be ExactlyOnce, but is " + sentMsg.QualityOfServiceLevel); var msg = new BoolByteSerializableMessage(); - msg.FromBytes(sentMsg.Payload); + msg.FromBytes(sentMsg.Payload.ToArray()); Assert.That(msg.Message == MESSAGE_VALUE, "Message should be " + MESSAGE_VALUE + ", but is " + msg.Message); } diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttJsonTopic.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttJsonTopic.cs similarity index 94% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttJsonTopic.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttJsonTopic.cs index 8fe2c0686..9b1958bd9 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttJsonTopic.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttJsonTopic.cs @@ -2,26 +2,25 @@ // Licensed under the Apache License, Version 2.0 using System; +using System.Buffers; using System.Linq.Expressions; using System.Text; using System.Threading; using Microsoft.Extensions.Logging.Abstractions; using Moq; using Moryx.AbstractionLayer.TestTools; -using Moryx.Drivers.Mqtt; using Moryx.Drivers.Mqtt.MqttTopics; using Moryx.Logging; using Moryx.Modules; using Moryx.Tools; using MQTTnet; -using MQTTnet.Client; using MQTTnet.Formatter; using MQTTnet.Packets; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture(MqttProtocolVersion.V310)] [TestFixture(MqttProtocolVersion.V311)] @@ -65,7 +64,8 @@ public void Setup() Id = 4, Logger = new ModuleLogger("Dummy", new NullLoggerFactory()), Channels = new ReferenceCollectionMock { _mqttTopicCamel, _mqttTopicPascal }, - MqttVersion = _version + MqttVersion = _version, + BrokerUrl = "mock" }; _mockClient = new Mock(); @@ -84,8 +84,7 @@ public void Setup() private Expression> CorrectClientOptions() { return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession - && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl && - (o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port; + && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}"; } [Test(Description = "Publish Json Message using the MqttTopicJson")] @@ -109,7 +108,8 @@ public void Send_UsingMqttTopicJson_Topic_QOS_Message() private void CheckSentMessage(MqttApplicationMessage sentMsg, CancellationToken token) { var msg = new JsonMessageTest(); - var payload = Encoding.UTF8.GetString(sentMsg.Payload, 0, sentMsg.Payload.Length); + var payloadArray = sentMsg.Payload.ToArray(); + var payload = Encoding.UTF8.GetString(payloadArray, 0, payloadArray.Length); if (sentMsg.Topic == _driver.Identifier + _mqttTopicCamel.Identifier) { Assert.That(payload.Contains(nameof(JsonMessageTest.Age).ToLower())); diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs similarity index 95% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs index f6a0818fd..dc3e98769 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs @@ -2,25 +2,24 @@ // Licensed under the Apache License, Version 2.0 using System; +using System.Buffers; using System.Linq.Expressions; using System.Text; using System.Threading; using Microsoft.Extensions.Logging.Abstractions; using Moq; using Moryx.AbstractionLayer.TestTools; -using Moryx.Drivers.Mqtt; using Moryx.Drivers.Mqtt.MqttTopics; using Moryx.Logging; using Moryx.Modules; using Moryx.Tools; using MQTTnet; -using MQTTnet.Client; using MQTTnet.Formatter; using MQTTnet.Packets; using MQTTnet.Protocol; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture(MqttProtocolVersion.V310)] [TestFixture(MqttProtocolVersion.V311)] @@ -66,7 +65,8 @@ public void Setup() Id = 4, Logger = new ModuleLogger("Dummy", new NullLoggerFactory()), Channels = new ReferenceCollectionMock { _mqttTopicInt, _mqttTopicString }, - MqttVersion = _version + MqttVersion = _version, + BrokerUrl = "mock" }; _mockClient = new Mock(); @@ -85,8 +85,7 @@ public void Setup() private Expression> CorrectClientOptions() { return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession - && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl && - (o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port; + && o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}"; } [Test(Description = "Publish int32 Message using the MqttTopicPrimitive")] @@ -115,7 +114,7 @@ private void SendMessagIntIConvertible(MqttApplicationMessage sentMsg, Cancellat "Topic should be " + _driver.Identifier + _mqttTopicInt.Identifier + ", but is " + sentMsg.Topic); Assert.That(sentMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce), "Qos should be ExactlyOnce, but is " + sentMsg.QualityOfServiceLevel); - var msg = BitConverter.ToInt32(sentMsg.Payload, 0); + var msg = BitConverter.ToInt32(sentMsg.Payload.ToArray(), 0); Assert.That(msg == MESSAGE_VALUE_INT, "Message should be " + MESSAGE_VALUE_INT + ", but is " + msg); } diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverStateMachine.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverStateMachine.cs similarity index 95% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverStateMachine.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverStateMachine.cs index 542501571..b57b26f94 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverStateMachine.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestDriverStateMachine.cs @@ -7,15 +7,14 @@ using Moq; using Moryx.AbstractionLayer.Drivers; using Moryx.AbstractionLayer.TestTools; -using Moryx.Drivers.Mqtt; using Moryx.Logging; using Moryx.Modules; using Moryx.Tools; -using MQTTnet.Client; +using MQTTnet; using MQTTnet.Formatter; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture(MqttProtocolVersion.V310)] [TestFixture(MqttProtocolVersion.V311)] @@ -37,7 +36,8 @@ public void Setup() Id = 4, Logger = new ModuleLogger("Dummy", new NullLoggerFactory()), Channels = new ReferenceCollectionMock(), - MqttVersion = version + MqttVersion = version, + BrokerUrl = "mock" }; //Setup mock for MQTT-Client diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs similarity index 90% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs index 0f7b04c57..fe644b399 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolByteSerializableMessage.cs @@ -4,7 +4,7 @@ using System; using Moryx.Communication; -namespace Moryx.Resources.Mqtt.Tests.TestMessages +namespace Moryx.Drivers.Mqtt.Tests.TestMessages { public class BoolByteSerializableMessage : IByteSerializable { diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolMqttMessage.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolMqttMessage.cs similarity index 92% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolMqttMessage.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolMqttMessage.cs index 767638d62..2cc0494ca 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/BoolMqttMessage.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/BoolMqttMessage.cs @@ -5,7 +5,7 @@ using Moryx.AbstractionLayer.Drivers.Message; using Moryx.Communication; -namespace Moryx.Resources.Mqtt.Tests.TestMessages +namespace Moryx.Drivers.Mqtt.Tests.TestMessages { public class BoolMqttMessage : IIdentifierMessage, IByteSerializable { diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs similarity index 91% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs index 04fe38a90..319b7d0dc 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMessages/MessageForPlaceholderMessages.cs @@ -3,7 +3,7 @@ using Moryx.AbstractionLayer.Products; -namespace Moryx.Resources.Mqtt.Tests.TestMessages +namespace Moryx.Drivers.Mqtt.Tests.TestMessages { public class MessageForPlaceholderMessages { diff --git a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMqttTopic.cs b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMqttTopic.cs similarity index 98% rename from src/Tests/Moryx.Recources.Mqtt.Tests/TestMqttTopic.cs rename to src/Tests/Moryx.Drivers.Mqtt.Tests/TestMqttTopic.cs index b53e17649..c1183722b 100644 --- a/src/Tests/Moryx.Recources.Mqtt.Tests/TestMqttTopic.cs +++ b/src/Tests/Moryx.Drivers.Mqtt.Tests/TestMqttTopic.cs @@ -6,7 +6,7 @@ using Moryx.Drivers.Mqtt.MqttTopics; using NUnit.Framework; -namespace Moryx.Resources.Mqtt.Tests +namespace Moryx.Drivers.Mqtt.Tests { [TestFixture] public class TestMqttTopic diff --git a/src/Tests/Moryx.Drivers.OpcUa.Tests/HandlingWriteAndRead.cs b/src/Tests/Moryx.Drivers.OpcUa.Tests/HandlingWriteAndRead.cs index 1c3037b8f..8f6e6e5d3 100644 --- a/src/Tests/Moryx.Drivers.OpcUa.Tests/HandlingWriteAndRead.cs +++ b/src/Tests/Moryx.Drivers.OpcUa.Tests/HandlingWriteAndRead.cs @@ -124,7 +124,7 @@ public void TestFindNode() //Act var result = _driver.FindNodeId(node.DisplayName.ToString()); - //Assert + //Assert Assert.That(result.Any(x => x.Equals(nodeId)), Is.True); } }