Skip to content

Commit f39e64e

Browse files
committed
Updated MQTTnet to latest major.
1 parent 149f6fa commit f39e64e

File tree

11 files changed

+38
-30
lines changed

11 files changed

+38
-30
lines changed

Directory.Packages.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@
5454

5555
<!-- Dependencies for drivers and adapters -->
5656
<PackageVersion Include="System.IO.Ports" Version="10.0.0" />
57-
<PackageVersion Include="MQTTnet" Version="4.3.1.873" />
57+
<PackageVersion Include="MQTTnet" Version="5.0.1.1416" />
5858
<PackageVersion Include="OPCFoundation.NetStandard.Opc.Ua.Client" Version="1.5.376.213" />
5959

6060
<PackageVersion Include="InfluxDB.LineProtocol" Version="1.1.0" />
6161
<PackageVersion Include="InfluxDB.Client" Version="4.18.0" />
62-
<PackageVersion Include="CsvHelper" Version="33.0.0" />
62+
<PackageVersion Include="CsvHelper" Version="33.1.0" />
6363

6464
<PackageVersion Include="MimeTypeMapOfficial" Version="1.0.17" />
6565
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.12" />

src/Moryx.Drivers.Mqtt/MqttDriver.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// Copyright (c) 2025, Phoenix Contact GmbH & Co. KG
22
// Licensed under the Apache License, Version 2.0
33

4+
using System.Buffers;
45
using System.Runtime.Serialization;
56
using Moryx.AbstractionLayer.Drivers;
67
using MQTTnet;
7-
using MQTTnet.Client;
88
using System.ComponentModel;
99
using System.Text.RegularExpressions;
1010
using Moryx.AbstractionLayer.Drivers.Message;
@@ -146,7 +146,7 @@ protected override void OnInitialize()
146146
{
147147
base.OnInitialize();
148148

149-
var factory = new MqttFactory();
149+
var factory = new MqttClientFactory();
150150
_mqttClient = factory.CreateMqttClient();
151151

152152
_mqttClient.ApplicationMessageReceivedAsync += OnReceived;
@@ -339,14 +339,17 @@ public async Task OnSend(MqttMessageTopic messageTopic, byte[] message, Cancella
339339
private Task OnReceived(MqttApplicationMessageReceivedEventArgs args)
340340
{
341341
// Experimental: Dispatch to new thread to prevent exceptions or deadlocks from causing inflight blockage
342-
ParallelOperations.ExecuteParallel(param => Receive(param.Topic, param.Payload), new { args.ApplicationMessage.Topic, args.ApplicationMessage.Payload });
342+
ParallelOperations.ExecuteParallel(param => Receive(param.Topic, param.Payload), new
343+
{
344+
args.ApplicationMessage.Topic,
345+
Payload = args.ApplicationMessage.Payload.ToArray()
346+
});
343347

344348
return Task.CompletedTask;
345349
}
346350

347351
internal void Receive(string topicName, byte[] message)
348352
{
349-
350353
var topic = topicName;
351354
if (Identifier != "")
352355
{

src/Moryx.Drivers.OpcUa/OpcUaDriver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ internal List<NodeIdAlias> NodeIdAlias
195195

196196
//TODO: Internal property just for tests, use xml also in tests
197197
internal ApplicationConfigurationFactory ApplicationConfigurationFactory { get; set; } = new();
198-
198+
199199
/// <summary>
200200
/// Convert an OpcUaNode to an entity to be shown on the UI
201201
/// </summary>

src/Moryx.Operators.Management/Moryx.Operators.Management.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<ProjectReference Include="..\Moryx.Model.PostgreSQL\Moryx.Model.PostgreSQL.csproj"/>
2020
<ProjectReference Include="..\Moryx.Model.Sqlite\Moryx.Model.Sqlite.csproj"/>
2121
<ProjectReference Include="..\Moryx.Operators\Moryx.Operators.csproj"/>
22+
<ProjectReference Include="..\Moryx.Runtime.Kernel\Moryx.Runtime.Kernel.csproj" />
2223
<ProjectReference Include="..\Moryx.Users\Moryx.Users.csproj"/>
2324
</ItemGroup>
2425

src/Moryx.Shifts.Management/Moryx.Shifts.Management.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<ItemGroup>
1515
<ProjectReference Include="..\Moryx.Model.PostgreSQL\Moryx.Model.PostgreSQL.csproj" />
1616
<ProjectReference Include="..\Moryx.Model.Sqlite\Moryx.Model.Sqlite.csproj" />
17+
<ProjectReference Include="..\Moryx.Runtime.Kernel\Moryx.Runtime.Kernel.csproj" />
1718
<ProjectReference Include="..\Moryx.Shifts\Moryx.Shifts.csproj" />
1819
</ItemGroup>
1920

src/Tests/Moryx.Drivers.OpcUa.Tests/HandlingWriteAndRead.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public void TestFindNode()
124124
//Act
125125
var result = _driver.FindNodeId(node.DisplayName.ToString());
126126

127-
//Assert
127+
//Assert
128128
Assert.That(result.Any(x => x.Equals(nodeId)), Is.True);
129129
}
130130
}

src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttChannelFunctions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
using Moryx.TestTools.UnitTest;
1818
using Moryx.Tools;
1919
using MQTTnet;
20-
using MQTTnet.Client;
2120
using MQTTnet.Formatter;
2221
using MQTTnet.Packets;
2322
using MQTTnet.Protocol;
@@ -50,7 +49,7 @@ public void Setup()
5049
_driver = CreateMqttDriver();
5150
_mockClient = SetupMqttClientMock();
5251

53-
//Initialize MqttDriver
52+
//Initialize MqttDriver
5453
_driver.InitializeForTest(_mockClient.Object);
5554
((IPlugin)_driver).Start();
5655
_driver.OnConnected(new MqttClientConnectedEventArgs(new MqttClientConnectResult())).Wait();
@@ -88,7 +87,8 @@ private MqttDriver CreateMqttDriver()
8887
Id = 4,
8988
Logger = new ModuleLogger("Dummy", new NullLoggerFactory()),
9089
Channels = new ReferenceCollectionMock<MqttTopic>(),
91-
MqttVersion = _version
90+
MqttVersion = _version,
91+
BrokerUrl = "mock"
9292
};
9393
}
9494

@@ -122,7 +122,7 @@ public void Channel_FindChannel_TChannel()
122122
Assert.That(c.Identifier.Equals(_topicBoolMqtt.Identifier));
123123
}
124124

125-
125+
126126
[Test(Description = "Return null, if identifier does not exist")]
127127
public void Channel_NotFindChannel_IdentifierDoesNotExist()
128128
{

src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttIByteSerializable.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0
33

44
using System;
5+
using System.Buffers;
56
using System.Linq.Expressions;
67
using System.Threading;
78
using System.Threading.Tasks;
@@ -15,7 +16,6 @@
1516
using Moryx.Resources.Mqtt.Tests.TestMessages;
1617
using Moryx.Tools;
1718
using MQTTnet;
18-
using MQTTnet.Client;
1919
using MQTTnet.Formatter;
2020
using MQTTnet.Packets;
2121
using MQTTnet.Protocol;
@@ -64,7 +64,8 @@ public void Setup()
6464
Id = 4,
6565
Logger = new ModuleLogger("Dummy", new NullLoggerFactory()),
6666
Channels = new ReferenceCollectionMock<MqttTopic> { _topicBoolMqtt, _topicBoolIByteSerializable },
67-
MqttVersion = _version
67+
MqttVersion = _version,
68+
BrokerUrl = "mock"
6869
};
6970

7071
_mockClient = new Mock<IMqttClient>();
@@ -84,8 +85,7 @@ public void Setup()
8485
private Expression<Func<MqttClientOptions, bool>> CorrectClientOptions()
8586
{
8687
return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession
87-
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl &&
88-
(o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port;
88+
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}";
8989
}
9090

9191
[Test(Description = "Publish Message using Driver")]
@@ -129,7 +129,7 @@ private void SendMessageBoolMqttMessage(MqttApplicationMessage mqttMsg, Cancella
129129
Assert.That(mqttMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce),
130130
"Qos should be ExactlyOnce, but is " + mqttMsg.QualityOfServiceLevel);
131131
var msg = new BoolMqttMessage();
132-
msg.FromBytes(mqttMsg.Payload);
132+
msg.FromBytes(mqttMsg.Payload.ToArray());
133133
Assert.That(msg.Message == MESSAGE_VALUE, "Message should be " + MESSAGE_VALUE + ", but is " + msg.Message);
134134
}
135135

@@ -160,7 +160,7 @@ private void SendMessageBoolIByteSerializableMessage(MqttApplicationMessage sent
160160
Assert.That(sentMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce),
161161
"Qos should be ExactlyOnce, but is " + sentMsg.QualityOfServiceLevel);
162162
var msg = new BoolByteSerializableMessage();
163-
msg.FromBytes(sentMsg.Payload);
163+
msg.FromBytes(sentMsg.Payload.ToArray());
164164
Assert.That(msg.Message == MESSAGE_VALUE, "Message should be " + MESSAGE_VALUE + ", but is " + msg.Message);
165165
}
166166

src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttJsonTopic.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the Apache License, Version 2.0
33

44
using System;
5+
using System.Buffers;
56
using System.Linq.Expressions;
67
using System.Text;
78
using System.Threading;
@@ -14,7 +15,6 @@
1415
using Moryx.Modules;
1516
using Moryx.Tools;
1617
using MQTTnet;
17-
using MQTTnet.Client;
1818
using MQTTnet.Formatter;
1919
using MQTTnet.Packets;
2020
using Newtonsoft.Json;
@@ -65,7 +65,8 @@ public void Setup()
6565
Id = 4,
6666
Logger = new ModuleLogger("Dummy", new NullLoggerFactory()),
6767
Channels = new ReferenceCollectionMock<MqttTopic> { _mqttTopicCamel, _mqttTopicPascal },
68-
MqttVersion = _version
68+
MqttVersion = _version,
69+
BrokerUrl = "mock"
6970
};
7071

7172
_mockClient = new Mock<IMqttClient>();
@@ -84,8 +85,7 @@ public void Setup()
8485
private Expression<Func<MqttClientOptions, bool>> CorrectClientOptions()
8586
{
8687
return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession
87-
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl &&
88-
(o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port;
88+
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}";
8989
}
9090

9191
[Test(Description = "Publish Json Message using the MqttTopicJson")]
@@ -109,7 +109,8 @@ public void Send_UsingMqttTopicJson_Topic_QOS_Message()
109109
private void CheckSentMessage(MqttApplicationMessage sentMsg, CancellationToken token)
110110
{
111111
var msg = new JsonMessageTest();
112-
var payload = Encoding.UTF8.GetString(sentMsg.Payload, 0, sentMsg.Payload.Length);
112+
var payloadArray = sentMsg.Payload.ToArray();
113+
var payload = Encoding.UTF8.GetString(payloadArray, 0, payloadArray.Length);
113114
if (sentMsg.Topic == _driver.Identifier + _mqttTopicCamel.Identifier)
114115
{
115116
Assert.That(payload.Contains(nameof(JsonMessageTest.Age).ToLower()));

src/Tests/Moryx.Recources.Mqtt.Tests/TestDriverMqttPrimitiveDatatypeTopic.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,20 @@
22
// Licensed under the Apache License, Version 2.0
33

44
using System;
5+
using System.Buffers;
56
using System.Linq.Expressions;
67
using System.Text;
78
using System.Threading;
89
using Microsoft.Extensions.Logging.Abstractions;
910
using Moq;
11+
using Moryx.AbstractionLayer.Resources;
1012
using Moryx.AbstractionLayer.TestTools;
1113
using Moryx.Drivers.Mqtt;
1214
using Moryx.Drivers.Mqtt.MqttTopics;
1315
using Moryx.Logging;
1416
using Moryx.Modules;
1517
using Moryx.Tools;
1618
using MQTTnet;
17-
using MQTTnet.Client;
1819
using MQTTnet.Formatter;
1920
using MQTTnet.Packets;
2021
using MQTTnet.Protocol;
@@ -66,7 +67,8 @@ public void Setup()
6667
Id = 4,
6768
Logger = new ModuleLogger("Dummy", new NullLoggerFactory()),
6869
Channels = new ReferenceCollectionMock<MqttTopic> { _mqttTopicInt, _mqttTopicString },
69-
MqttVersion = _version
70+
MqttVersion = _version,
71+
BrokerUrl = "mock"
7072
};
7173

7274
_mockClient = new Mock<IMqttClient>();
@@ -85,8 +87,7 @@ public void Setup()
8587
private Expression<Func<MqttClientOptions, bool>> CorrectClientOptions()
8688
{
8789
return o => o.ProtocolVersion == _driver.MqttVersion && o.CleanSession == !_driver.ReconnectWithoutCleanSession
88-
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}" && (o.ChannelOptions as MqttClientTcpOptions).Server == _driver.BrokerUrl &&
89-
(o.ChannelOptions as MqttClientTcpOptions).Port == _driver.Port;
90+
&& o.ClientId == $"{System.Net.Dns.GetHostName()}-{_driver.Id}-{_driver.Name}";
9091
}
9192

9293
[Test(Description = "Publish int32 Message using the MqttTopicPrimitive")]
@@ -115,7 +116,7 @@ private void SendMessagIntIConvertible(MqttApplicationMessage sentMsg, Cancellat
115116
"Topic should be " + _driver.Identifier + _mqttTopicInt.Identifier + ", but is " + sentMsg.Topic);
116117
Assert.That(sentMsg.QualityOfServiceLevel, Is.EqualTo(MqttQualityOfServiceLevel.ExactlyOnce),
117118
"Qos should be ExactlyOnce, but is " + sentMsg.QualityOfServiceLevel);
118-
var msg = BitConverter.ToInt32(sentMsg.Payload, 0);
119+
var msg = BitConverter.ToInt32(sentMsg.Payload.ToArray(), 0);
119120
Assert.That(msg == MESSAGE_VALUE_INT, "Message should be " + MESSAGE_VALUE_INT + ", but is " + msg);
120121
}
121122

0 commit comments

Comments
 (0)