HpackTestCase Class — netty Architecture
Architecture documentation for the HpackTestCase class in HpackTestCase.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704["HpackTestCase"] a836e9a9_0779_ecc8_975d_40a9ce9c9219["HpackTestCase.java"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|defined in| a836e9a9_0779_ecc8_975d_40a9ce9c9219 f36891ab_d8f4_6e60_6bd6_2a9104c5c38a["HpackTestCase()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| f36891ab_d8f4_6e60_6bd6_2a9104c5c38a 5331bda1_436a_69be_b1ec_2d6ae664331b["testCompress()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 5331bda1_436a_69be_b1ec_2d6ae664331b 55d35e05_80b4_cc85_f837_078146024350["testDecompress()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 55d35e05_80b4_cc85_f837_078146024350 65354180_90ea_b9be_23e7_42ecd9c3aa4e["HpackEncoder()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 65354180_90ea_b9be_23e7_42ecd9c3aa4e 9fd51714_ffb1_86fa_3859_1e7312fe080e["HpackDecoder()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 9fd51714_ffb1_86fa_3859_1e7312fe080e 752e1532_3a8d_0d99_13de_a7e1f0c28cf0["encode()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 752e1532_3a8d_0d99_13de_a7e1f0c28cf0 e3b44728_0d78_16ae_fd88_9a3bd0bc84c2["Http2Headers()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| e3b44728_0d78_16ae_fd88_9a3bd0bc84c2 e399de65_5392_e22b_1b56_df58382cd80c["decode()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| e399de65_5392_e22b_1b56_df58382cd80c 7d5cb3b9_d09e_ff18_e199_7f7d90dc1508["String()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| 7d5cb3b9_d09e_ff18_e199_7f7d90dc1508 d9f2be7a_b72d_658b_a42e_fe82dd297b1f["headersEqual()"] 7b46bcd3_dbd5_a8a9_21a7_007c98b4f704 -->|method| d9f2be7a_b72d_658b_a42e_fe82dd297b1f
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/HpackTestCase.java lines 59–290
final class HpackTestCase {
private static final Gson GSON = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(HpackHeaderField.class, new HeaderFieldDeserializer())
.create();
int maxHeaderTableSize = -1;
boolean sensitiveHeaders;
List<HeaderBlock> headerBlocks;
private HpackTestCase() {
}
static HpackTestCase load(InputStream is) {
InputStreamReader r = new InputStreamReader(is);
HpackTestCase hpackTestCase = GSON.fromJson(r, HpackTestCase.class);
for (HeaderBlock headerBlock : hpackTestCase.headerBlocks) {
headerBlock.encodedBytes = StringUtil.decodeHexDump(headerBlock.getEncodedStr());
}
return hpackTestCase;
}
void testCompress() throws Exception {
HpackEncoder hpackEncoder = createEncoder();
for (HeaderBlock headerBlock : headerBlocks) {
byte[] actual =
encode(hpackEncoder, headerBlock.getHeaders(), headerBlock.getMaxHeaderTableSize(),
sensitiveHeaders);
if (!Arrays.equals(actual, headerBlock.encodedBytes)) {
throw new AssertionError(
"\nEXPECTED:\n" + headerBlock.getEncodedStr() +
"\nACTUAL:\n" + StringUtil.toHexString(actual));
}
List<HpackHeaderField> actualDynamicTable = new ArrayList<HpackHeaderField>();
for (int index = 0; index < hpackEncoder.length(); index++) {
actualDynamicTable.add(hpackEncoder.getHeaderField(index));
}
List<HpackHeaderField> expectedDynamicTable = headerBlock.getDynamicTable();
if (!headersEqual(expectedDynamicTable, actualDynamicTable)) {
throw new AssertionError(
"\nEXPECTED DYNAMIC TABLE:\n" + expectedDynamicTable +
"\nACTUAL DYNAMIC TABLE:\n" + actualDynamicTable);
}
if (headerBlock.getTableSize() != hpackEncoder.size()) {
throw new AssertionError(
"\nEXPECTED TABLE SIZE: " + headerBlock.getTableSize() +
"\n ACTUAL TABLE SIZE : " + hpackEncoder.size());
}
}
}
void testDecompress() throws Exception {
HpackDecoder hpackDecoder = createDecoder();
for (HeaderBlock headerBlock : headerBlocks) {
List<HpackHeaderField> actualHeaders = decode(hpackDecoder, headerBlock.encodedBytes);
List<HpackHeaderField> expectedHeaders = new ArrayList<HpackHeaderField>();
for (HpackHeaderField h : headerBlock.getHeaders()) {
expectedHeaders.add(new HpackHeaderField(h.name, h.value));
}
if (!headersEqual(expectedHeaders, actualHeaders)) {
throw new AssertionError(
"\nEXPECTED:\n" + expectedHeaders +
"\nACTUAL:\n" + actualHeaders);
}
List<HpackHeaderField> actualDynamicTable = new ArrayList<HpackHeaderField>();
for (int index = 0; index < hpackDecoder.length(); index++) {
actualDynamicTable.add(hpackDecoder.getHeaderField(index));
Source
Frequently Asked Questions
What is the HpackTestCase class?
HpackTestCase is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/HpackTestCase.java.
Where is HpackTestCase defined?
HpackTestCase is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/HpackTestCase.java at line 59.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free