public void Serialize_LargePacket() { var serializer = new MqttV311PacketFormatter(WriterFactory()); const int payloadLength = 80000; var payload = new byte[payloadLength]; var value = 0; for (var i = 0; i < payloadLength; i++) { if (value > 255) { value = 0; } payload[i] = (byte)value; } var publishPacket = new MqttPublishPacket { Topic = "abcdefghijklmnopqrstuvwxyz0123456789", Payload = payload }; var publishPacketCopy = Roundtrip(publishPacket); //var buffer = serializer.Encode(publishPacket); //var testChannel = new TestMqttChannel(new MemoryStream(buffer.Array, buffer.Offset, buffer.Count)); //var header = new MqttPacketReader(testChannel).ReadFixedHeaderAsync( // new byte[2], // CancellationToken.None).GetAwaiter().GetResult().FixedHeader; //var eof = buffer.Offset + buffer.Count; //var receivedPacket = new ReceivedMqttPacket( // header.Flags, // new MqttPacketBodyReader(buffer.Array, eof - header.RemainingLength, buffer.Count + buffer.Offset), // 0); //var packet = (MqttPublishPacket)serializer.Decode(receivedPacket); Assert.AreEqual(publishPacket.Topic, publishPacketCopy.Topic); Assert.IsTrue(publishPacket.Payload.SequenceEqual(publishPacketCopy.Payload)); }
private static void SerializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311) { IMqttPacketFormatter serializer; if (protocolVersion == MqttProtocolVersion.V311) { serializer = new MqttV311PacketFormatter(); } else if (protocolVersion == MqttProtocolVersion.V310) { serializer = new MqttV310PacketFormatter(); } else { throw new NotSupportedException(); } var data = serializer.Encode(packet); Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data))); }