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
+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;