public async Task WhenReadingStreamWithCompressedFramesAndPingsThenReadsAllData() { var data1 = new MemoryStream(Enumerable.Repeat((byte)1, 1000000).ToArray()); var frame1Compressed = await(await data1.Compress().ConfigureAwait(false)).ToByteArray().ConfigureAwait(false); var frame1 = new WebSocketFrame(Fin.More, Opcode.Binary, frame1Compressed, false, true); var data2 = new MemoryStream(Enumerable.Repeat((byte)2, 1000000).ToArray()); var frame2Compressed = await(await data2.Compress().ConfigureAwait(false)).ToByteArray().ConfigureAwait(false); var frame2 = new WebSocketFrame(Fin.Final, Opcode.Cont, frame2Compressed, false, true); var frame3 = new WebSocketFrame(Fin.Final, Opcode.Ping, new byte[0], false, true); var frame4 = new WebSocketFrame(Fin.Final, Opcode.Binary, frame1Compressed, false, true); var frame5 = new WebSocketFrame(Fin.Final, Opcode.Ping, new byte[0], false, true); var stream = new MemoryStream( (await frame1.ToByteArray().ConfigureAwait(false)) .Concat(await frame2.ToByteArray().ConfigureAwait(false)) .Concat(await frame3.ToByteArray().ConfigureAwait(false)) .Concat(await frame4.ToByteArray().ConfigureAwait(false)) .Concat(await frame5.ToByteArray().ConfigureAwait(false)) .ToArray()); _sut = new WebSocketStreamReader(stream, 100000); int messages = 0; WebSocketMessage message; while ((message = await _sut.Read(CancellationToken.None).ConfigureAwait(false)) != null) { await message.Consume().ConfigureAwait(false); messages += 1; } Assert.AreEqual(4, messages); }
public async Task Setup() { var data1 = Enumerable.Repeat((byte)1, 1000).ToArray(); var frame1 = new WebSocketFrame(Fin.More, Opcode.Binary, data1, false, true); var data2 = Enumerable.Repeat((byte)2, 1000).ToArray(); var frame2 = new WebSocketFrame(Fin.Final, Opcode.Cont, data2, false, true); var frame3 = new WebSocketFrame(Fin.Final, Opcode.Close, new byte[0], false, true); var stream = new MemoryStream( (await frame1.ToByteArray().ConfigureAwait(false)) .Concat(await frame2.ToByteArray().ConfigureAwait(false)) .Concat(await frame3.ToByteArray().ConfigureAwait(false)) .ToArray()); _sut = new WebSocketStreamReader(stream, 100000); }