SpdyHeaderBlockZlibDecoderTest Class — netty Architecture
Architecture documentation for the SpdyHeaderBlockZlibDecoderTest class in SpdyHeaderBlockZlibDecoderTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD af170dea_1fdf_d9d0_0058_316c478ff6cc["SpdyHeaderBlockZlibDecoderTest"] 8847cd57_1720_d786_67c4_ab7bb6721ef2["SpdyHeaderBlockZlibDecoderTest.java"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|defined in| 8847cd57_1720_d786_67c4_ab7bb6721ef2 75bf6483_5c4e_92a9_e607_fbe8fe9e6fec["setUp()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 75bf6483_5c4e_92a9_e607_fbe8fe9e6fec bae9cc33_bef3_8294_0f93_83e2f50e7367["tearDown()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| bae9cc33_bef3_8294_0f93_83e2f50e7367 b18a7469_3a63_4113_ec8a_932f4cfeac3a["testHeaderBlock()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| b18a7469_3a63_4113_ec8a_932f4cfeac3a 01ea6481_9239_7a5b_4dc9_5d96c9512947["testHeaderBlockMultipleDecodes()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 01ea6481_9239_7a5b_4dc9_5d96c9512947 03fac5f5_af58_d62f_3272_36f909d5e086["testLargeHeaderName()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 03fac5f5_af58_d62f_3272_36f909d5e086 8bc60772_37e4_0d70_66e2_fa47486f4886["testLargeHeaderValue()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 8bc60772_37e4_0d70_66e2_fa47486f4886 763c185f_4b7b_4c10_008d_a687336692a8["testHeaderBlockExtraData()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 763c185f_4b7b_4c10_008d_a687336692a8 627b402d_646a_90a2_c8db_8e74c425d355["testHeaderBlockInvalidDictionary()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| 627b402d_646a_90a2_c8db_8e74c425d355 a5944aba_b59d_82ce_1a92_3c7374543fc8["testHeaderBlockInvalidDeflateBlock()"] af170dea_1fdf_d9d0_0058_316c478ff6cc -->|method| a5944aba_b59d_82ce_1a92_3c7374543fc8
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/spdy/SpdyHeaderBlockZlibDecoderTest.java lines 31–245
public class SpdyHeaderBlockZlibDecoderTest {
// zlib header indicating 32K window size fastest deflate algorithm with SPDY dictionary
private static final byte[] zlibHeader = {0x78, 0x3f, (byte) 0xe3, (byte) 0xc6, (byte) 0xa7, (byte) 0xc2};
private static final byte[] zlibSyncFlush = {0x00, 0x00, 0x00, (byte) 0xff, (byte) 0xff};
private static final int maxHeaderSize = 8192;
private static final String name = "name";
private static final String value = "value";
private static final byte[] nameBytes = name.getBytes();
private static final byte[] valueBytes = value.getBytes();
private SpdyHeaderBlockZlibDecoder decoder;
private SpdyHeadersFrame frame;
@BeforeEach
public void setUp() {
decoder = new SpdyHeaderBlockZlibDecoder(SpdyVersion.SPDY_3_1, maxHeaderSize);
frame = new DefaultSpdyHeadersFrame(1);
}
@AfterEach
public void tearDown() {
decoder.end();
}
@Test
public void testHeaderBlock() throws Exception {
ByteBuf headerBlock = Unpooled.buffer(37);
headerBlock.writeBytes(zlibHeader);
headerBlock.writeByte(0); // Non-compressed block
headerBlock.writeByte(0x15); // little-endian length (21)
headerBlock.writeByte(0x00); // little-endian length (21)
headerBlock.writeByte(0xea); // one's compliment of length
headerBlock.writeByte(0xff); // one's compliment of length
headerBlock.writeInt(1); // number of Name/Value pairs
headerBlock.writeInt(4); // length of name
headerBlock.writeBytes(nameBytes);
headerBlock.writeInt(5); // length of value
headerBlock.writeBytes(valueBytes);
headerBlock.writeBytes(zlibSyncFlush);
decoder.decode(ByteBufAllocator.DEFAULT, headerBlock, frame);
decoder.endHeaderBlock(frame);
assertFalse(headerBlock.isReadable());
assertFalse(frame.isInvalid());
assertEquals(1, frame.headers().names().size());
assertTrue(frame.headers().contains(name));
assertEquals(1, frame.headers().getAll(name).size());
assertEquals(value, frame.headers().get(name));
headerBlock.release();
}
@Test
public void testHeaderBlockMultipleDecodes() throws Exception {
ByteBuf headerBlock = Unpooled.buffer(37);
headerBlock.writeBytes(zlibHeader);
headerBlock.writeByte(0); // Non-compressed block
headerBlock.writeByte(0x15); // little-endian length (21)
headerBlock.writeByte(0x00); // little-endian length (21)
headerBlock.writeByte(0xea); // one's compliment of length
headerBlock.writeByte(0xff); // one's compliment of length
headerBlock.writeInt(1); // number of Name/Value pairs
headerBlock.writeInt(4); // length of name
headerBlock.writeBytes(nameBytes);
headerBlock.writeInt(5); // length of value
headerBlock.writeBytes(valueBytes);
headerBlock.writeBytes(zlibSyncFlush);
int readableBytes = headerBlock.readableBytes();
for (int i = 0; i < readableBytes; i++) {
ByteBuf headerBlockSegment = headerBlock.slice(i, 1);
decoder.decode(ByteBufAllocator.DEFAULT, headerBlockSegment, frame);
assertFalse(headerBlockSegment.isReadable());
}
decoder.endHeaderBlock(frame);
assertFalse(frame.isInvalid());
assertEquals(1, frame.headers().names().size());
Source
Frequently Asked Questions
What is the SpdyHeaderBlockZlibDecoderTest class?
SpdyHeaderBlockZlibDecoderTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/spdy/SpdyHeaderBlockZlibDecoderTest.java.
Where is SpdyHeaderBlockZlibDecoderTest defined?
SpdyHeaderBlockZlibDecoderTest is defined in codec-http/src/test/java/io/netty/handler/codec/spdy/SpdyHeaderBlockZlibDecoderTest.java at line 31.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free