QpackEncoderDynamicTableTest Class — netty Architecture
Architecture documentation for the QpackEncoderDynamicTableTest class in QpackEncoderDynamicTableTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0b57921e_fd41_0d68_9a74_4964c2403fe3["QpackEncoderDynamicTableTest"] 8b8516d8_3cb6_cd38_9e8a_df54c2fb5921["QpackEncoderDynamicTableTest.java"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|defined in| 8b8516d8_3cb6_cd38_9e8a_df54c2fb5921 64a19864_8713_f6ba_fbe8_d42555304402["zeroCapacityIsAllowed()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 64a19864_8713_f6ba_fbe8_d42555304402 3eea06c3_b17b_b4c8_9edd_08d6a352eeb9["maxCapacityIsAllowed()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 3eea06c3_b17b_b4c8_9edd_08d6a352eeb9 833a2cb7_a397_cf10_f548_d80c5ec18c2f["negativeCapacityIsDisallowed()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 833a2cb7_a397_cf10_f548_d80c5ec18c2f 759caa19_8a4d_2426_de5f_91bd13b40d8c["capacityTooLarge()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 759caa19_8a4d_2426_de5f_91bd13b40d8c 6e0c2a4a_f933_84ae_4d83_a2972efd248b["delayAck()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 6e0c2a4a_f933_84ae_4d83_a2972efd248b a849d335_fbd5_650b_b28a_0f810d08d28c["addAndGet()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| a849d335_fbd5_650b_b28a_0f810d08d28c 75b01273_84b0_067c_0c87_1ba04445334b["nameOnlyMatch()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 75b01273_84b0_067c_0c87_1ba04445334b 4acf566f_3274_1f36_d92e_6f208904e0a5["addDuplicateEntries()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 4acf566f_3274_1f36_d92e_6f208904e0a5 e60ba6ec_8a38_58ef_8012_409e7114d4e2["hashCollisionThenRemove()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| e60ba6ec_8a38_58ef_8012_409e7114d4e2 d4c9fd8b_7c9b_2451_f5b3_f323e2aa0f1c["requiredInsertCountWrapsAround()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| d4c9fd8b_7c9b_2451_f5b3_f323e2aa0f1c 774a913d_8d3e_659a_51aa_0fc252d37e82["indexWrapsAroundForSingleEntryCapacity()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 774a913d_8d3e_659a_51aa_0fc252d37e82 1532b1b0_5bdb_a8ea_ec9e_cf06f74967c9["sectionAck()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| 1532b1b0_5bdb_a8ea_ec9e_cf06f74967c9 a39b3914_a744_c869_bda4_a81e75b63f13["sectionAckOutOfOrder()"] 0b57921e_fd41_0d68_9a74_4964c2403fe3 -->|method| a39b3914_a744_c869_bda4_a81e75b63f13
Relationship Graph
Source Code
codec-http3/src/test/java/io/netty/handler/codec/http3/QpackEncoderDynamicTableTest.java lines 29–261
public class QpackEncoderDynamicTableTest {
private static final QpackHeaderField emptyHeader = new QpackHeaderField("", "");
private static final QpackHeaderField fooBarHeader = new QpackHeaderField("foo", "bar");
private static final QpackHeaderField fooBar2Header = new QpackHeaderField("foo", "bar2");
private static final QpackHeaderField fooBar3Header = new QpackHeaderField("foo", "bar3");
private int insertCount;
private long maxCapacity;
@Test
public void zeroCapacityIsAllowed() throws Exception {
QpackEncoderDynamicTable table = newDynamicTable(0);
assertThat("Header addition passed.", addHeader(table, emptyHeader),
lessThan(0));
}
@Test
public void maxCapacityIsAllowed() throws Exception {
final QpackEncoderDynamicTable table = newDynamicTable(MAX_HEADER_TABLE_SIZE);
addAndValidateHeader(table, emptyHeader);
}
@Test
public void negativeCapacityIsDisallowed() {
assertThrows(QpackException.class, () -> newDynamicTable(-1));
}
@Test
public void capacityTooLarge() {
assertThrows(QpackException.class, () -> newDynamicTable(Long.MAX_VALUE));
}
@Test
public void delayAck() throws Exception {
QpackEncoderDynamicTable table = newDynamicTable(16, 50, 128);
addAndValidateHeader(table, emptyHeader);
addAndValidateHeader(table, fooBarHeader);
final int idx2 = addAndValidateHeader(table, fooBar2Header);
assertThat("Header addition passed.", addHeader(table, fooBarHeader), lessThan(0));
table.incrementKnownReceivedCount(3);
assertThat("Unexpected entry index.", getEntryIndex(table, emptyHeader), lessThan(0));
assertThat("Unexpected entry index.", getEntryIndex(table, fooBarHeader), lessThan(0));
assertThat("Unexpected entry index.", getEntryIndex(table, fooBar2Header), is(idx2));
final int idx1 = addAndValidateHeader(table, emptyHeader);
assertThat("Unexpected entry index.", getEntryIndex(table, emptyHeader), is(idx1));
assertThat("Unexpected entry index.", getEntryIndex(table, fooBar2Header), lessThan(0));
}
@Test
public void addAndGet() throws Exception {
QpackEncoderDynamicTable table = newDynamicTable(128);
final int idx1 = addValidateAndAckHeader(table, emptyHeader);
assertEquals(0, idx1);
assertThat("Unexpected entry index.", getEntryIndex(table, emptyHeader), is(idx1));
final int idx2 = addValidateAndAckHeader(table, fooBarHeader);
assertEquals(1, idx2);
assertThat("Unexpected entry index.", getEntryIndex(table, fooBarHeader), is(idx2));
assertThat("Unexpected entry index.", getEntryIndex(table, emptyHeader), is(idx1));
}
@Test
public void nameOnlyMatch() throws Exception {
final QpackEncoderDynamicTable table = newDynamicTable(128);
addValidateAndAckHeader(table, fooBarHeader);
final int lastIdx = addValidateAndAckHeader(table, fooBar2Header);
final int idx = table.getEntryIndex("foo", "baz");
assertThat("Unexpected index.", idx, lessThan(0));
assertThat("Unexpected index.", idx, is(-lastIdx - 1));
}
@Test
public void addDuplicateEntries() throws Exception {
Source
Frequently Asked Questions
What is the QpackEncoderDynamicTableTest class?
QpackEncoderDynamicTableTest is a class in the netty codebase, defined in codec-http3/src/test/java/io/netty/handler/codec/http3/QpackEncoderDynamicTableTest.java.
Where is QpackEncoderDynamicTableTest defined?
QpackEncoderDynamicTableTest is defined in codec-http3/src/test/java/io/netty/handler/codec/http3/QpackEncoderDynamicTableTest.java at line 29.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free