HpackEncoderTest Class — netty Architecture
Architecture documentation for the HpackEncoderTest class in HpackEncoderTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD a8203e54_7e3c_740d_20fe_825ed86c66af["HpackEncoderTest"] 5c5c1a6d_f195_a0ab_d758_37abca4af4c2["HpackEncoderTest.java"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|defined in| 5c5c1a6d_f195_a0ab_d758_37abca4af4c2 470701ff_6203_ec64_a9aa_fa93516aceaf["setUp()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 470701ff_6203_ec64_a9aa_fa93516aceaf 4ce7582a_8b03_a475_40c7_c2bac29131c9["teardown()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 4ce7582a_8b03_a475_40c7_c2bac29131c9 68c2af6f_17f0_b829_84e4_384ec7de7fdc["testSetMaxHeaderTableSizeToMaxValue()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 68c2af6f_17f0_b829_84e4_384ec7de7fdc f2865c5a_ad76_cbc1_e0ba_62d709eab14e["testSetMaxHeaderTableSizeOverflow()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| f2865c5a_ad76_cbc1_e0ba_62d709eab14e 9fb11e02_7623_e2ef_c847_6cc3a6059c06["testWillEncode16MBHeaderByDefault()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 9fb11e02_7623_e2ef_c847_6cc3a6059c06 97e22a27_ac85_6f28_0bb3_0d1fa3a5d4e8["testSetMaxHeaderListSizeEnforcedAfterSet()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 97e22a27_ac85_6f28_0bb3_0d1fa3a5d4e8 eea3cbdd_092d_ee1e_90b1_3bf1e7b07012["testEncodeUsingBothStaticAndDynamicTable()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| eea3cbdd_092d_ee1e_90b1_3bf1e7b07012 26c508db_a097_2583_22b5_c3ec0d83ed48["testSameHeaderNameMultipleValues()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 26c508db_a097_2583_22b5_c3ec0d83ed48 0a28c169_0429_5002_7cc5_b71bc0367658["testEviction()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 0a28c169_0429_5002_7cc5_b71bc0367658 37b10d67_ec58_a660_a4eb_b02533fd5e46["testTableResize()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 37b10d67_ec58_a660_a4eb_b02533fd5e46 0ddbcc11_a023_ae99_a0d4_a5f7a1ae8c35["testManyHeaderCombinations()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 0ddbcc11_a023_ae99_a0d4_a5f7a1ae8c35 08c8f3da_5b00_c314_45af_0f086ae7ca49["testSanitization()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| 08c8f3da_5b00_c314_45af_0f086ae7ca49 b00b41c0_19cc_fa2e_f410_2d01e52c0fdd["verifyHeaderValueSanitization()"] a8203e54_7e3c_740d_20fe_825ed86c66af -->|method| b00b41c0_19cc_fa2e_f410_2d01e52c0fdd
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/HpackEncoderTest.java lines 34–281
public class HpackEncoderTest {
private HpackDecoder hpackDecoder;
private HpackEncoder hpackEncoder;
private Http2Headers mockHeaders;
private ByteBuf buf;
@BeforeEach
public void setUp() {
hpackEncoder = new HpackEncoder();
hpackDecoder = new HpackDecoder(DEFAULT_HEADER_LIST_SIZE);
mockHeaders = mock(Http2Headers.class);
buf = Unpooled.buffer();
}
@AfterEach
public void teardown() {
buf.release();
}
@Test
public void testSetMaxHeaderTableSizeToMaxValue() throws Http2Exception {
hpackEncoder.setMaxHeaderTableSize(buf, MAX_HEADER_TABLE_SIZE);
hpackDecoder.setMaxHeaderTableSize(MAX_HEADER_TABLE_SIZE);
hpackDecoder.decode(0, buf, mockHeaders, true);
assertEquals(MAX_HEADER_TABLE_SIZE, hpackDecoder.getMaxHeaderTableSize());
}
@Test
public void testSetMaxHeaderTableSizeOverflow() {
assertThrows(Http2Exception.class, new Executable() {
@Override
public void execute() throws Throwable {
hpackEncoder.setMaxHeaderTableSize(buf, MAX_HEADER_TABLE_SIZE + 1);
}
});
}
/**
* The encoder should not impose an arbitrary limit on the header size if
* the server has not specified any limit.
* @throws Http2Exception
*/
@Test
public void testWillEncode16MBHeaderByDefault() throws Http2Exception {
String bigHeaderName = "x-big-header";
int bigHeaderSize = 1024 * 1024 * 16;
String bigHeaderVal = new String(new char[bigHeaderSize]).replace('\0', 'X');
Http2Headers headersIn = new DefaultHttp2Headers().add(
"x-big-header", bigHeaderVal);
Http2Headers headersOut = new DefaultHttp2Headers();
hpackEncoder.encodeHeaders(0, buf, headersIn, Http2HeadersEncoder.NEVER_SENSITIVE);
hpackDecoder.setMaxHeaderListSize(bigHeaderSize + 1024);
hpackDecoder.decode(0, buf, headersOut, false);
assertEquals(headersOut.get(bigHeaderName).toString(), bigHeaderVal);
}
@Test
public void testSetMaxHeaderListSizeEnforcedAfterSet() throws Http2Exception {
final Http2Headers headers = new DefaultHttp2Headers().add(
"x-big-header",
new String(new char[1024 * 16]).replace('\0', 'X')
);
hpackEncoder.setMaxHeaderListSize(1000);
assertThrows(Http2Exception.class, new Executable() {
@Override
public void execute() throws Throwable {
hpackEncoder.encodeHeaders(0, buf, headers, Http2HeadersEncoder.NEVER_SENSITIVE);
}
});
}
@Test
public void testEncodeUsingBothStaticAndDynamicTable() throws Http2Exception {
final Http2Headers headers = new DefaultHttp2Headers()
// :method -> POST is found in the static table.
.add(":method", "POST")
// ":path" is found in the static table but only matches "/" and "/index.html".
Source
Frequently Asked Questions
What is the HpackEncoderTest class?
HpackEncoderTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/HpackEncoderTest.java.
Where is HpackEncoderTest defined?
HpackEncoderTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/HpackEncoderTest.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free