public void SelectivityCompressionSkip() { var selectivityCompressionFilter = new SelectivityDecompressionFilter0(); EmbeddedChannel encoderChannel = new EmbeddedChannel( new PerMessageDeflateEncoder(9, 15, false, selectivityCompressionFilter)); EmbeddedChannel decoderChannel = new EmbeddedChannel( ZlibCodecFactory.NewZlibDecoder(ZlibWrapper.None)); string textPayload = "not compressed payload"; byte[] binaryPayload = new byte[101]; _random.NextBytes(binaryPayload); WebSocketFrame textFrame = new TextWebSocketFrame(textPayload); BinaryWebSocketFrame binaryFrame = new BinaryWebSocketFrame(Unpooled.WrappedBuffer(binaryPayload)); Assert.True(encoderChannel.WriteOutbound(textFrame)); Assert.True(encoderChannel.WriteOutbound(binaryFrame)); var outboundTextFrame = encoderChannel.ReadOutbound <WebSocketFrame>(); //compression skipped for textFrame Assert.Equal(0, outboundTextFrame.Rsv); Assert.Equal(textPayload, outboundTextFrame.Content.ToString(Encoding.UTF8)); Assert.True(outboundTextFrame.Release()); var outboundBinaryFrame = encoderChannel.ReadOutbound <WebSocketFrame>(); //compression not skipped for binaryFrame Assert.Equal(WebSocketRsv.Rsv1, outboundBinaryFrame.Rsv); Assert.True(decoderChannel.WriteInbound(outboundBinaryFrame.Content.Retain())); var uncompressedBinaryPayload = decoderChannel.ReadInbound <IByteBuffer>(); Assert.Equal(binaryPayload, ByteBufferUtil.GetBytes(uncompressedBinaryPayload)); Assert.True(outboundBinaryFrame.Release()); Assert.True(uncompressedBinaryPayload.Release()); Assert.False(encoderChannel.Finish()); Assert.False(decoderChannel.Finish()); }
public void SelectivityDecompressionSkip() { var selectivityDecompressionFilter = new SelectivityDecompressionFilter0(); EmbeddedChannel encoderChannel = new EmbeddedChannel( ZlibCodecFactory.NewZlibEncoder(ZlibWrapper.None, 9, 15, 8)); EmbeddedChannel decoderChannel = new EmbeddedChannel( new PerMessageDeflateDecoder(false, selectivityDecompressionFilter)); string textPayload = "compressed payload"; byte[] binaryPayload = new byte[300]; _random.NextBytes(binaryPayload); Assert.True(encoderChannel.WriteOutbound(Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(textPayload)))); Assert.True(encoderChannel.WriteOutbound(Unpooled.WrappedBuffer(binaryPayload))); var compressedTextPayload = encoderChannel.ReadOutbound <IByteBuffer>(); var compressedBinaryPayload = encoderChannel.ReadOutbound <IByteBuffer>(); TextWebSocketFrame compressedTextFrame = new TextWebSocketFrame(true, WebSocketRsv.Rsv1, compressedTextPayload); BinaryWebSocketFrame compressedBinaryFrame = new BinaryWebSocketFrame(true, WebSocketRsv.Rsv1, compressedBinaryPayload); Assert.True(decoderChannel.WriteInbound(compressedTextFrame)); Assert.True(decoderChannel.WriteInbound(compressedBinaryFrame)); var inboundTextFrame = decoderChannel.ReadInbound <TextWebSocketFrame>(); var inboundBinaryFrame = decoderChannel.ReadInbound <BinaryWebSocketFrame>(); Assert.Equal(WebSocketRsv.Rsv1, inboundTextFrame.Rsv); Assert.Equal(compressedTextPayload, inboundTextFrame.Content); Assert.True(inboundTextFrame.Release()); Assert.Equal(0, inboundBinaryFrame.Rsv); Assert.Equal(binaryPayload, ByteBufferUtil.GetBytes(inboundBinaryFrame.Content)); Assert.True(inboundBinaryFrame.Release()); Assert.True(encoderChannel.FinishAndReleaseAll()); Assert.False(decoderChannel.Finish()); }