From f1e1113a58f74f0414c675679851d18b77c23a67 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 9 Feb 2012 15:47:39 +0100 Subject: [PATCH] Finished test implementation. --- ...ava => LiveChromiumRequestParserTest.java} | 61 ++++++++++++------- 1 file changed, 38 insertions(+), 23 deletions(-) rename src/test/java/org/eclipse/jetty/spdy/parser/{ParserTest.java => LiveChromiumRequestParserTest.java} (57%) diff --git a/src/test/java/org/eclipse/jetty/spdy/parser/ParserTest.java b/src/test/java/org/eclipse/jetty/spdy/parser/LiveChromiumRequestParserTest.java similarity index 57% rename from src/test/java/org/eclipse/jetty/spdy/parser/ParserTest.java rename to src/test/java/org/eclipse/jetty/spdy/parser/LiveChromiumRequestParserTest.java index 8e0f3583403..56b65f0b6fe 100644 --- a/src/test/java/org/eclipse/jetty/spdy/parser/ParserTest.java +++ b/src/test/java/org/eclipse/jetty/spdy/parser/LiveChromiumRequestParserTest.java @@ -26,34 +26,26 @@ import org.eclipse.jetty.spdy.frames.SynStreamFrame; import org.junit.Assert; import org.junit.Test; -public class ParserTest +public class LiveChromiumRequestParserTest { @Test public void testSynStream() throws Exception { // Bytes taken with wireshark from a live chromium request - String data = "" + - "80020001010001c40000000100000000000038eadfa251b262e0666083a41706" + + byte[] bytes1 = toBytes("" + + "800200010100011a0000000100000000000038eadfa251b262e0626083a41706" + "7bb80b75302cd6ae4017cdcdb12eb435d0b3d4d1d2d702b32c18f850732c036f" + "68889bae850e44da94811f2d0b3308821ca80375a14e714a72065c0d2cd619f8" + - "52f37443837552f3a076b041628ae1b6a357b01e307681093b37b508a85f0f22" + - "615b0306a505b97a258949b69979401fe7e4582b64651625ea95e4a7a7e7a426" + - "01134d763158334c535e625970666e414e6a3040a98945c919aac62eaa46c640" + - "c1ccf4c492fc22ddb44c60c817e916972681ca2ba0d375338b8b4b53134b4a8a" + - "32934a4b528b75d38bf24b0b548d9c81da92f37373f3f340a91fe493625d608e" + - "cb02a67fa07001b0b4c92b812a863a099b17185840e516031f2871e780985616" + - "0616060c6cb9c0f2323f8581d9dd358481ad1898c57253814a4b4a0a18984151" + - "c9a8cfc085287f18da7df3ab3273721201d237d53350d0883034b456f0c9cc2b" + - "ad50a8b0308b3733d154700446676a786a92776689bea9b1a99ea18286b74788" + - "af8f8e424e6676aa827b6a7276bea6426852695e49a9bea1a19e8189827306b0" + - "50cd2ccdd53734d633d033b730d233318408a6a2080527a6251665424c656087" + - "2637060e582a04000000ffff"; - byte[] bytes = new byte[data.length() / 2]; - for (int i = 0; i < data.length(); i += 2) - { - String hex = data.substring(i, i + 2); - bytes[i / 2] = (byte)Integer.parseInt(hex, 16); - } + "52f37443837552f3a076b080b234033f28de73404c2b43630b135306b65c6059" + + "929fc2c0ecee1ac2c0560c4c7eb9a940b52525050ccc206f32ea337021f22643" + + "bb6f7e55664e4ea2bea99e81824684a1a135400a3e9979a5150a151666f16626" + + "9a0a8e40afa686a726796796e89b1a9bea992b68787b84f8fae828e46466a72a" + + "b8a72667e76b2a842695e69594ea1b0203d640c1390358e06496e6ea1b9ae901" + + "c3c5d048cfdc1c22988a22149c98965894093195811d1a150c1cb01802000000" + + "ffff"); + byte[] bytes2 = toBytes("" + + "800200010100002700000003000000008000428a106660d00ee640e5d14f4b2c" + + "cb0466313d203154c217000000ffff"); final AtomicReference frameRef = new AtomicReference<>(); Parser parser = new Parser(new StandardCompressionFactory().newDecompressor()); @@ -65,7 +57,7 @@ public class ParserTest frameRef.set(frame); } }); - parser.parse(ByteBuffer.wrap(bytes)); + parser.parse(ByteBuffer.wrap(bytes1)); ControlFrame frame = frameRef.get(); Assert.assertNotNull(frame); @@ -78,6 +70,29 @@ public class ParserTest Assert.assertNotNull(synStream.getHeaders()); Assert.assertFalse(synStream.getHeaders().isEmpty()); - // TODO: gather bytes for a second identical request to test that compression is working fine + frameRef.set(null); + parser.parse(ByteBuffer.wrap(bytes2)); + + frame = frameRef.get(); + Assert.assertNotNull(frame); + Assert.assertEquals(ControlFrameType.SYN_STREAM, frame.getType()); + synStream = (SynStreamFrame)frame; + Assert.assertEquals(2, synStream.getVersion()); + Assert.assertEquals(3, synStream.getStreamId()); + Assert.assertEquals(0, synStream.getAssociatedStreamId()); + Assert.assertEquals(2, synStream.getPriority()); + Assert.assertNotNull(synStream.getHeaders()); + Assert.assertFalse(synStream.getHeaders().isEmpty()); + } + + private byte[] toBytes(String hexs) + { + byte[] bytes = new byte[hexs.length() / 2]; + for (int i = 0; i < hexs.length(); i += 2) + { + String hex = hexs.substring(i, i + 2); + bytes[i / 2] = (byte)Integer.parseInt(hex, 16); + } + return bytes; } }