DefaultHttp2HeadersTest Class — netty Architecture
Architecture documentation for the DefaultHttp2HeadersTest class in DefaultHttp2HeadersTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD dee91314_9fa2_2772_1f20_e4b8f18eea54["DefaultHttp2HeadersTest"] 394daedf_337e_7cbb_9876_f4c2d7c63065["DefaultHttp2HeadersTest.java"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|defined in| 394daedf_337e_7cbb_9876_f4c2d7c63065 7c86390c_da27_ec65_6ad3_a86072ef5a45["nullHeaderNameNotAllowed()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 7c86390c_da27_ec65_6ad3_a86072ef5a45 7ca75330_a87b_6478_846c_7795506b778a["emptyHeaderNameNotAllowed()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 7ca75330_a87b_6478_846c_7795506b778a 479272f6_3bae_eb36_4a9d_9d5397cd1377["testPseudoHeadersMustComeFirstWhenIterating()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 479272f6_3bae_eb36_4a9d_9d5397cd1377 0cc4bde2_4ede_21ae_4ec1_eb8f1d0690fc["testPseudoHeadersWithRemovePreservesPseudoIterationOrder()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 0cc4bde2_4ede_21ae_4ec1_eb8f1d0690fc a44ccbe9_a2fe_01dc_1ffd_77791a6cb32e["testPseudoHeadersWithClearDoesNotLeak()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| a44ccbe9_a2fe_01dc_1ffd_77791a6cb32e 03daf0f7_d3b1_5ec2_da3c_003d78789de2["testSetHeadersOrdersPseudoHeadersCorrectly()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 03daf0f7_d3b1_5ec2_da3c_003d78789de2 d10187ac_b750_fa4b_f20b_f4829998d39e["testSetAllOrdersPseudoHeadersCorrectly()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| d10187ac_b750_fa4b_f20b_f4829998d39e 861b477e_7ece_f653_4d3d_a62aab7a446b["testHeaderNameValidation()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 861b477e_7ece_f653_4d3d_a62aab7a446b d13458e4_6746_a6c6_4a96_aa0e93ccb5e1["testClearResetsPseudoHeaderDivision()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| d13458e4_6746_a6c6_4a96_aa0e93ccb5e1 6f3dac53_fb15_e5da_e98c_b0209ab0b9f8["testContainsNameAndValue()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 6f3dac53_fb15_e5da_e98c_b0209ab0b9f8 ecad8a96_b5b5_3ab6_c319_bceaa4bd2b0b["testContainsName()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| ecad8a96_b5b5_3ab6_c319_bceaa4bd2b0b 049c26d7_1d67_25d4_3c56_cb0bf1473550["setMustOverwritePseudoHeaders()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 049c26d7_1d67_25d4_3c56_cb0bf1473550 23cceb99_8ef1_8d24_bad4_d574f33bf535["possibleToAddConnectionHeaders()"] dee91314_9fa2_2772_1f20_e4b8f18eea54 -->|method| 23cceb99_8ef1_8d24_bad4_d574f33bf535
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java lines 38–253
public class DefaultHttp2HeadersTest {
@Test
public void nullHeaderNameNotAllowed() {
assertThrows(Http2Exception.class, new Executable() {
@Override
public void execute() throws Throwable {
new DefaultHttp2Headers().add(null, "foo");
}
});
}
@Test
public void emptyHeaderNameNotAllowed() {
assertThrows(Http2Exception.class, new Executable() {
@Override
public void execute() throws Throwable {
new DefaultHttp2Headers().add(StringUtil.EMPTY_STRING, "foo");
}
});
}
@Test
public void testPseudoHeadersMustComeFirstWhenIterating() {
Http2Headers headers = newHeaders();
verifyPseudoHeadersFirst(headers);
verifyAllPseudoHeadersPresent(headers);
}
@Test
public void testPseudoHeadersWithRemovePreservesPseudoIterationOrder() {
Http2Headers headers = newHeaders();
Http2Headers nonPseudoHeaders = new DefaultHttp2Headers();
for (Entry<CharSequence, CharSequence> entry : headers) {
if (entry.getKey().length() == 0 || entry.getKey().charAt(0) != ':' &&
!nonPseudoHeaders.contains(entry.getKey())) {
nonPseudoHeaders.add(entry.getKey(), entry.getValue());
}
}
assertFalse(nonPseudoHeaders.isEmpty());
// Remove all the non-pseudo headers and verify
for (Entry<CharSequence, CharSequence> nonPseudoHeaderEntry : nonPseudoHeaders) {
assertTrue(headers.remove(nonPseudoHeaderEntry.getKey()));
verifyPseudoHeadersFirst(headers);
verifyAllPseudoHeadersPresent(headers);
}
// Add back all non-pseudo headers
for (Entry<CharSequence, CharSequence> nonPseudoHeaderEntry : nonPseudoHeaders) {
headers.add(nonPseudoHeaderEntry.getKey(), of("goo"));
verifyPseudoHeadersFirst(headers);
verifyAllPseudoHeadersPresent(headers);
}
}
@Test
public void testPseudoHeadersWithClearDoesNotLeak() {
Http2Headers headers = newHeaders();
assertFalse(headers.isEmpty());
headers.clear();
assertTrue(headers.isEmpty());
// Combine 2 headers together, make sure pseudo headers stay up front.
headers.add("name1", "value1").scheme("nothing");
verifyPseudoHeadersFirst(headers);
Http2Headers other = new DefaultHttp2Headers().add("name2", "value2").authority("foo");
verifyPseudoHeadersFirst(other);
headers.add(other);
verifyPseudoHeadersFirst(headers);
// Make sure the headers are what we expect them to be, and no leaking behind the scenes.
assertEquals(4, headers.size());
assertEquals("value1", headers.get("name1"));
assertEquals("value2", headers.get("name2"));
Source
Frequently Asked Questions
What is the DefaultHttp2HeadersTest class?
DefaultHttp2HeadersTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java.
Where is DefaultHttp2HeadersTest defined?
DefaultHttp2HeadersTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java at line 38.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free