Add serializer adapter.

This commit is contained in:
Christian Kratky
2018-08-06 20:36:15 +02:00
parent cdb05e5894
commit 5a59cd278c
35 changed files with 471 additions and 224 deletions
@@ -1,3 +1,4 @@
#if NETCOREAPP
using System.Buffers;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.AspNetCore;
@@ -12,7 +13,7 @@ namespace MQTTnet.AspNetCore.Tests
[TestMethod]
public void TestTryDeserialize()
{
var serializer = new MqttPacketSerializer();
var serializer = new MqttV311PacketSerializer();
var buffer = serializer.Serialize(new MqttPublishPacket() {Topic = "a", Payload = new byte[5]});
@@ -43,3 +44,4 @@ namespace MQTTnet.AspNetCore.Tests
}
}
}
#endif
@@ -26,7 +26,8 @@ namespace MQTTnet.Benchmarks
.Build();
_packet = message.ToPublishPacket();
var serializer = new MqttPacketSerializer();
var serializer = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
var serializedPacket = Join(serializer.Serialize(_packet));
_iterations = 10000;
@@ -19,7 +19,7 @@ namespace MQTTnet.Benchmarks
{
private MqttBasePacket _packet;
private ArraySegment<byte> _serializedPacket;
private MqttPacketSerializer _serializer;
private IMqttPacketSerializer _serializer;
[GlobalSetup]
public void Setup()
@@ -29,7 +29,7 @@ namespace MQTTnet.Benchmarks
.Build();
_packet = message.ToPublishPacket();
_serializer = new MqttPacketSerializer();
_serializer = new MqttV311PacketSerializer();
_serializedPacket = _serializer.Serialize(_packet);
}
+2 -1
View File
@@ -8,6 +8,7 @@ using MQTTnet.Client;
using MQTTnet.Diagnostics;
using MQTTnet.Exceptions;
using MQTTnet.Packets;
using MQTTnet.Packets.V3;
namespace MQTTnet.Core.Tests
{
@@ -50,7 +51,7 @@ namespace MQTTnet.Core.Tests
Task.Run(async () => {
var connect = await channel2.ReceivePacketAsync(TimeSpan.Zero, CancellationToken.None);
await channel2.SendPacketAsync(new MqttConnAckPacket() { ConnectReturnCode = Protocol.MqttConnectReturnCode.ConnectionRefusedNotAuthorized }, CancellationToken.None);
await channel2.SendPacketAsync(new MqttV3ConnAckPacket() { ConnectReturnCode = Protocol.MqttConnectReturnCode.ConnectionRefusedNotAuthorized }, CancellationToken.None);
});
@@ -77,7 +77,7 @@ namespace MQTTnet.Core.Tests
throw new NotSupportedException();
}
public Task RunAsync(MqttConnectPacket connectPacket, IMqttChannelAdapter adapter)
public Task RunAsync(MqttApplicationMessage willMessage, int keepAlivePeriod, IMqttChannelAdapter adapter)
{
throw new NotSupportedException();
}
@@ -7,6 +7,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Adapter;
using MQTTnet.Internal;
using MQTTnet.Packets;
using MQTTnet.Packets.V3;
using MQTTnet.Protocol;
using MQTTnet.Serializer;
@@ -18,7 +19,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void SerializeV310_MqttConnectPacket()
{
var p = new MqttConnectPacket
var p = new MqttV3ConnectPacket
{
ClientId = "XYZ",
Password = "PASS",
@@ -33,7 +34,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void SerializeV311_MqttConnectPacket()
{
var p = new MqttConnectPacket
var p = new MqttV3ConnectPacket
{
ClientId = "XYZ",
Password = "PASS",
@@ -48,7 +49,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void SerializeV311_MqttConnectPacketWithWillMessage()
{
var p = new MqttConnectPacket
var p = new MqttV3ConnectPacket
{
ClientId = "XYZ",
Password = "PASS",
@@ -70,7 +71,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void DeserializeV311_MqttConnectPacket()
{
var p = new MqttConnectPacket
var p = new MqttV3ConnectPacket
{
ClientId = "XYZ",
Password = "PASS",
@@ -85,7 +86,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void DeserializeV311_MqttConnectPacketWithWillMessage()
{
var p = new MqttConnectPacket
var p = new MqttV3ConnectPacket
{
ClientId = "XYZ",
Password = "PASS",
@@ -107,7 +108,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void SerializeV311_MqttConnAckPacket()
{
var p = new MqttConnAckPacket
var p = new MqttV3ConnAckPacket
{
IsSessionPresent = true,
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
@@ -119,7 +120,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void SerializeV310_MqttConnAckPacket()
{
var p = new MqttConnAckPacket
var p = new MqttV3ConnAckPacket
{
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
};
@@ -130,7 +131,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void DeserializeV311_MqttConnAckPacket()
{
var p = new MqttConnAckPacket
var p = new MqttV3ConnAckPacket
{
IsSessionPresent = true,
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
@@ -142,7 +143,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void DeserializeV310_MqttConnAckPacket()
{
var p = new MqttConnAckPacket
var p = new MqttV3ConnAckPacket
{
ConnectReturnCode = MqttConnectReturnCode.ConnectionRefusedNotAuthorized
};
@@ -153,7 +154,7 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public void Serialize_LargePacket()
{
var serializer = new MqttPacketSerializer { ProtocolVersion = MqttProtocolVersion.V311 };
var serializer = new MqttV311PacketSerializer();
const int payloadLength = 80000;
@@ -509,7 +510,20 @@ namespace MQTTnet.Core.Tests
private static void SerializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
{
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
IMqttPacketSerializer serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketSerializer();
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketSerializer();
}
else
{
throw new NotSupportedException();
}
var data = serializer.Serialize(packet);
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
@@ -517,7 +531,19 @@ namespace MQTTnet.Core.Tests
private static void DeserializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
{
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
IMqttPacketSerializer serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketSerializer();
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketSerializer();
}
else
{
throw new NotSupportedException();
}
var buffer1 = serializer.Serialize(packet);
@@ -541,7 +567,19 @@ namespace MQTTnet.Core.Tests
private static T Roundtrip<T>(T packet, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
where T : MqttBasePacket
{
var serializer = new MqttPacketSerializer { ProtocolVersion = protocolVersion };
IMqttPacketSerializer serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketSerializer();
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketSerializer();
}
else
{
throw new NotSupportedException();
}
var buffer1 = serializer.Serialize(packet);
+2 -2
View File
@@ -171,14 +171,14 @@ namespace MQTTnet.Core.Tests
[TestMethod]
public async Task MqttServer_Publish_MultipleClients()
{
var serverAdapter = new MqttTcpServerAdapter(new MqttNetLogger().CreateChildLogger());
var s = new MqttFactory().CreateMqttServer(new[] { serverAdapter }, new MqttNetLogger());
var s = new MqttFactory().CreateMqttServer();
var receivedMessagesCount = 0;
var locked = new object();
var clientOptions = new MqttClientOptionsBuilder()
.WithTcpServer("localhost")
.Build();
var clientOptions2 = new MqttClientOptionsBuilder()
.WithTcpServer("localhost")
.Build();
@@ -16,7 +16,7 @@ namespace MQTTnet.Core.Tests
public string Endpoint { get; }
public IMqttPacketSerializer PacketSerializer { get; } = new MqttPacketSerializer();
public MqttPacketSerializerAdapter PacketSerializerAdapter { get; } = new MqttPacketSerializerAdapter(MqttProtocolVersion.V311);
public event EventHandler ReadingPacketStarted;
public event EventHandler ReadingPacketCompleted;
@@ -14,6 +14,7 @@ using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Extensions.Rpc;
using MQTTnet.Implementations;
using MQTTnet.Protocol;
using MQTTnet.Serializer;
using MQTTnet.Server;
using MqttClientConnectedEventArgs = MQTTnet.Client.MqttClientConnectedEventArgs;
using MqttClientDisconnectedEventArgs = MQTTnet.Client.MqttClientDisconnectedEventArgs;
@@ -87,7 +88,8 @@ namespace MQTTnet.TestApp.UniversalWindows
var options = new MqttClientOptions
{
ClientId = ClientId.Text
ClientId = ClientId.Text,
ProtocolVersion = MqttProtocolVersion.V500
};
if (UseTcp.IsChecked == true)