Adding test for deflate-frame extension receiving non-compressed frames

This commit is contained in:
Joakim Erdfelt 2012-07-23 13:56:41 -07:00
parent 697d32beb4
commit 9c4a8df8af
1 changed files with 56 additions and 2 deletions

View File

@ -101,10 +101,10 @@ public class DeflateFrameExtensionTest
}
/**
* Verify that incoming frames are unmodified
* Verify that incoming compressed frames are properly decompressed
*/
@Test
public void testIncomingFrames()
public void testIncomingCompressedFrames()
{
IncomingFramesCapture capture = new IncomingFramesCapture();
@ -189,6 +189,60 @@ public class DeflateFrameExtensionTest
ByteBufferAssert.assertEquals("Frame.payload",expected,actual.getPayload().slice());
}
/**
* Verify that incoming uncompressed frames are properly passed through
*/
@Test
public void testIncomingUncompressedFrames()
{
IncomingFramesCapture capture = new IncomingFramesCapture();
DeflateFrameExtension ext = new DeflateFrameExtension();
ext.setBufferPool(new StandardByteBufferPool());
ext.setPolicy(WebSocketPolicy.newServerPolicy());
ExtensionConfig config = ExtensionConfig.parse("x-deflate-frame;minLength=16");
ext.setConfig(config);
ext.setNextIncomingFrames(capture);
// Quote
List<String> quote = new ArrayList<>();
quote.add("No amount of experimentation can ever prove me right;");
quote.add("a single experiment can prove me wrong.");
quote.add("-- Albert Einstein");
// leave frames as-is, no compression, and pass into extension
for (String q : quote)
{
WebSocketFrame frame = new WebSocketFrame(OpCode.TEXT);
frame.setPayload(q);
frame.setRsv1(false); // indication to extension that frame is not compressed (ie: a normal frame)
ext.incoming(frame);
}
int len = quote.size();
capture.assertFrameCount(len);
capture.assertHasFrame(OpCode.TEXT,len);
String prefix;
for (int i = 0; i < len; i++)
{
prefix = "Frame[" + i + "]";
WebSocketFrame actual = capture.getFrames().get(i);
Assert.assertThat(prefix + ".opcode",actual.getOpCode(),is(OpCode.TEXT));
Assert.assertThat(prefix + ".fin",actual.isFin(),is(true));
Assert.assertThat(prefix + ".rsv1",actual.isRsv1(),is(false));
Assert.assertThat(prefix + ".rsv2",actual.isRsv2(),is(false));
Assert.assertThat(prefix + ".rsv3",actual.isRsv3(),is(false));
ByteBuffer expected = BufferUtil.toBuffer(quote.get(i),StringUtil.__UTF8_CHARSET);
Assert.assertThat(prefix + ".payloadLength",actual.getPayloadLength(),is(expected.remaining()));
ByteBufferAssert.assertEquals(prefix + ".payload",expected,actual.getPayload().slice());
}
}
/**
* Verify that outgoing text frames are compressed.
*/