public void automatically_allocate_larger_payload_buffer() { var unix = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var now = new DateTime(2014, 10, 13, 13, 0, 0, DateTimeKind.Local).ToUniversalTime(); var seconds = now.Subtract(unix).TotalSeconds; byte[] length = BitConverter.GetBytes(4096); if (BitConverter.IsLittleEndian) Array.Reverse(length); var buffer = new byte[4096 + 12]; buffer[0] = (byte)FrameFlags.LargeFrame; //flags, buffer[1] = 0; //sequence buffer[2] = 2; buffer[3] = 2;//destination length buffer[4] = (byte)'M'; buffer[5] = (byte)'Q'; buffer[6] = 0; // filter length buffer[7] = 0; // filter length buffer[8] = length[0];//payload length buffer[9] = length[1]; buffer[10] = length[2]; buffer[11] = length[3]; var offset = 0; var count = buffer.Length; var sut = new MessageFrame(); var actual = sut.Read(buffer, ref offset, ref count); actual.Should().Be(true); sut.PayloadBuffer.Array.Length.Should().BeGreaterThan(4096); }
public void code_decode_test() { var bufMgr = new BufferManager(65535, 1); var context = new WriterContext(bufMgr); var buf = bufMgr.Dequeue(); bufMgr.Enqueue(buf); var sut = new MessageFrame(); sut.SequenceNumber = 22; var payload = Encoding.UTF8.GetBytes("Hello world"); sut.PayloadBuffer = new ArraySegment<byte>(payload, 0, payload.Length); sut.Write(context); var pos = 0; var len = context.GetPackets().First().Count; var frame2 = new MessageFrame(); frame2.Read(buf.Array, ref pos, ref len); frame2.SequenceNumber.Should().Be(22); Encoding.ASCII.GetString(sut.PayloadBuffer.Array, 0, sut.PayloadBuffer.Count).Should().Be("Hello world"); }
public void deserualize_Simplistic_filter() { var filter = Encoding.ASCII.GetBytes("last_name<kalle"); var buffer = new byte[] { 0, //flags, 0, 2, // sequence number, 2, //destination length, (byte)'M', (byte)'Q', 0, 15, // filter length (byte)'l', (byte)'a', (byte)'s', (byte)'t', (byte)'_', (byte)'n', (byte)'a', (byte)'m', (byte)'e', //filter part 1 (byte)':', (byte)'k', (byte)'a', (byte)'l', (byte)'l', (byte)'e', //filter part 2 6, //payload length (byte) 'm', (byte) 'o', (byte) 't', (byte) 'h', (byte)'e', (byte)'r' //payload }; var offset = 0; var count = buffer.Length; var sut = new MessageFrame(); var actual = sut.Read(buffer, ref offset, ref count); actual.Should().Be(true); sut.Destination.Should().Be("MQ"); sut.Properties["last_name"].Should().Be("kalle"); }
public void got_no_place_to_go() { var buffer = new byte[] { 0, //flags, 0, 2, // sequence number, 0, //destination length 0, 0, // filter length 6, //payload length (byte) 'm', (byte) 'o', (byte) 't', (byte) 'h', (byte)'e', (byte)'r' //payload }; var offset = 0; var count = buffer.Length; var sut = new MessageFrame(); var actual = sut.Read(buffer, ref offset, ref count); actual.Should().Be(true); sut.Flags.Should().Be(FrameFlags.None); sut.SequenceNumber.Should().Be(2); sut.Destination.Should().BeEmpty(); Encoding.ASCII.GetString(sut.PayloadBuffer.Array, 0, sut.PayloadBuffer.Count).Should().Be("mother"); }
public void got_no_filter() { var buffer = new byte[] { 0, //flags, 0, 2, // sequence number, 2, //destination length, (byte)'M', (byte)'Q', 0, 0, // filter length 6, //payload length (byte) 'm', (byte) 'o', (byte) 't', (byte) 'h', (byte)'e', (byte)'r' //payload }; var offset = 0; var count = buffer.Length; var sut = new MessageFrame(); var actual = sut.Read(buffer, ref offset, ref count); sut.Destination.Should().Be("MQ"); sut.Properties.Should().BeEmpty(); }
public void got_destination() { var buffer = new byte[] { 0, //flags, 0, 2, // sequence number, 2, //destination length, (byte)'M', (byte)'Q', 0, 0, // filter length 6, //payload length (byte) 'm', (byte) 'o', (byte) 't', (byte) 'h', (byte)'e', (byte)'r' //payload }; var offset = 0; var count = buffer.Length; var sut = new MessageFrame(); var actual = sut.Read(buffer, ref offset, ref count); sut.Destination.Should().Be("MQ"); Encoding.ASCII.GetString(sut.PayloadBuffer.Array, 0, sut.PayloadBuffer.Count).Should().Be("mother"); }
public void doing_a_partial_payload_write_properly() { var bufMgr = new BufferManager(5010, 1); var context = new WriterContext(bufMgr); var buf1 = bufMgr.Dequeue(); bufMgr.Enqueue(buf1); var sut = new MessageFrame(); sut.SequenceNumber = 22; var payload = Encoding.ASCII.GetBytes("Hello world".PadRight(10000)); sut.PayloadBuffer = new ArraySegment<byte>(payload, 0, payload.Length); var actual1 = sut.Write(context); var pos = 0; var len = context.GetPackets().First().Count; var frame2 = new MessageFrame(); frame2.Read(buf1.Array, ref pos, ref len); var actual2 = sut.Write(context); pos = 0; len = context.GetPackets().Last().Count; frame2.Read(buf1.Array, ref pos, ref len); frame2.SequenceNumber.Should().Be(22); frame2.IsFlaggedAsSmall.Should().BeFalse(); Encoding.ASCII.GetString(sut.PayloadBuffer.Array, 0, sut.PayloadBuffer.Count).TrimEnd(' ').Should().Be("Hello world"); actual1.Should().BeFalse(); actual2.Should().BeTrue(); }