Http3HeadersSinkTest Class — netty Architecture
Architecture documentation for the Http3HeadersSinkTest class in Http3HeadersSinkTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 44533ac4_926b_9689_4e92_561270ec7a60["Http3HeadersSinkTest"] d5061e76_9e00_4af6_177a_f77e727510b4["Http3HeadersSinkTest.java"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|defined in| d5061e76_9e00_4af6_177a_f77e727510b4 2a6dc8f8_2a44_5644_f40e_9451aa9ac1d0["testHeaderSizeExceeded()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 2a6dc8f8_2a44_5644_f40e_9451aa9ac1d0 43b9b34b_0cf0_e6e1_3aa7_ef10fd1bc9ac["testHeaderSizeNotExceed()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 43b9b34b_0cf0_e6e1_3aa7_ef10fd1bc9ac 69000419_a88e_e2ad_587c_7dacf15633f1["testPseudoHeaderFollowsNormalHeader()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 69000419_a88e_e2ad_587c_7dacf15633f1 6f2d00c3_cc31_e496_ad95_d099bedf6e61["testInvalidatePseudoHeader()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 6f2d00c3_cc31_e496_ad95_d099bedf6e61 26e112b1_05c1_accc_f0f3_b4ab38d15627["testMixRequestResponsePseudoHeaders()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 26e112b1_05c1_accc_f0f3_b4ab38d15627 8d5073b6_1527_d681_ecc8_9059f96785fb["testValidPseudoHeadersRequest()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 8d5073b6_1527_d681_ecc8_9059f96785fb 78f2020b_6087_468e_84e1_6810eaee0bbf["testValidPseudoHeadersResponse()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 78f2020b_6087_468e_84e1_6810eaee0bbf 6f8c9282_e06e_6ee8_4a93_fbcafdf013eb["testDuplicatePseudoHeader()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 6f8c9282_e06e_6ee8_4a93_fbcafdf013eb 71c84102_f957_acc7_6c89_021e770c9357["testMandatoryPseudoHeaderMissingRequest()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 71c84102_f957_acc7_6c89_021e770c9357 6d680fe1_b5ed_f3d1_ccdc_c7d9974362ef["testMandatoryPseudoHeaderMissingResponse()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 6d680fe1_b5ed_f3d1_ccdc_c7d9974362ef 75e214f8_de4b_c168_e2a3_0aa32e9219bc["testInvalidPseudoHeadersForConnect()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| 75e214f8_de4b_c168_e2a3_0aa32e9219bc a39a6b50_5ed6_47bc_4702_255760350d12["testValidPseudoHeadersForConnect()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| a39a6b50_5ed6_47bc_4702_255760350d12 ebeb1550_229a_263a_97e2_027b1fa28ff9["testTrailersWithRequestPseudoHeaders()"] 44533ac4_926b_9689_4e92_561270ec7a60 -->|method| ebeb1550_229a_263a_97e2_027b1fa28ff9
Relationship Graph
Source Code
codec-http3/src/test/java/io/netty/handler/codec/http3/Http3HeadersSinkTest.java lines 25–196
public class Http3HeadersSinkTest {
@Test
public void testHeaderSizeExceeded() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 32, false, false);
addMandatoryPseudoHeaders(sink, false);
Http3Exception e = assertThrows(Http3Exception.class, () -> sink.finish());
Http3TestUtils.assertException(Http3ErrorCode.H3_EXCESSIVE_LOAD, e);
}
@Test
public void testHeaderSizeNotExceed() throws Exception {
Http3Headers headers = new DefaultHttp3Headers();
Http3HeadersSink sink = new Http3HeadersSink(headers, 64, false, false);
addMandatoryPseudoHeaders(sink, false);
sink.finish();
}
@Test
public void testPseudoHeaderFollowsNormalHeader() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
sink.accept("name", "value");
sink.accept(Http3Headers.PseudoHeaderName.AUTHORITY.value(), "value");
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
@Test
public void testInvalidatePseudoHeader() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
sink.accept(":invalid", "value");
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
@Test
public void testMixRequestResponsePseudoHeaders() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
sink.accept(Http3Headers.PseudoHeaderName.METHOD.value(), "value");
sink.accept(Http3Headers.PseudoHeaderName.STATUS.value(), "value");
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
@Test
public void testValidPseudoHeadersRequest() throws Exception {
Http3Headers headers = new DefaultHttp3Headers();
Http3HeadersSink sink = new Http3HeadersSink(headers, 512, true, false);
addMandatoryPseudoHeaders(sink, true);
sink.finish();
}
@Test
public void testValidPseudoHeadersResponse() throws Exception {
Http3Headers headers = new DefaultHttp3Headers();
Http3HeadersSink sink = new Http3HeadersSink(headers, 512, true, false);
addMandatoryPseudoHeaders(sink, false);
sink.finish();
}
@Test
public void testDuplicatePseudoHeader() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
addMandatoryPseudoHeaders(sink, false);
sink.accept(Http3Headers.PseudoHeaderName.AUTHORITY.value(), "value");
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
@Test
public void testMandatoryPseudoHeaderMissingRequest() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
sink.accept(Http3Headers.PseudoHeaderName.METHOD.value(), "GET");
sink.accept(Http3Headers.PseudoHeaderName.PATH.value(), "/");
sink.accept(Http3Headers.PseudoHeaderName.SCHEME.value(), "https");
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
@Test
public void testMandatoryPseudoHeaderMissingResponse() {
Http3HeadersSink sink = new Http3HeadersSink(new DefaultHttp3Headers(), 512, true, false);
assertThrows(Http3HeadersValidationException.class, () -> sink.finish());
}
Source
Frequently Asked Questions
What is the Http3HeadersSinkTest class?
Http3HeadersSinkTest is a class in the netty codebase, defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3HeadersSinkTest.java.
Where is Http3HeadersSinkTest defined?
Http3HeadersSinkTest is defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3HeadersSinkTest.java at line 25.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free