MultipleContentLengthHeadersTest Class — netty Architecture
Architecture documentation for the MultipleContentLengthHeadersTest class in MultipleContentLengthHeadersTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD c26a8de7_4130_e6d2_f18f_4d1697886c48["MultipleContentLengthHeadersTest"] a67cda0d_158e_7514_17a2_2b07e2e84af6["MultipleContentLengthHeadersTest.java"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|defined in| a67cda0d_158e_7514_17a2_2b07e2e84af6 47b3cce3_2310_4483_b3e8_bc45d2c5d651["parameters()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| 47b3cce3_2310_4483_b3e8_bc45d2c5d651 ae76eb7b_1742_45c7_0ac1_d1ae4c4d694c["EmbeddedChannel()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| ae76eb7b_1742_45c7_0ac1_d1ae4c4d694c eb2ff751_18ff_420a_0b38_d5c01cd3ad8d["testMultipleContentLengthHeadersBehavior()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| eb2ff751_18ff_420a_0b38_d5c01cd3ad8d 5eaa7b0c_ceaf_d4b9_c460_207d8aef506f["String()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| 5eaa7b0c_ceaf_d4b9_c460_207d8aef506f c1083368_471b_daa5_248f_67e2f4fb575e["testDanglingComma()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| c1083368_471b_daa5_248f_67e2f4fb575e acb91720_70b2_ead5_0dea_a9cdab479b34["assertValid()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| acb91720_70b2_ead5_0dea_a9cdab479b34 59b9c793_1d45_3e25_7705_a5c9975a5e6f["assertInvalid()"] c26a8de7_4130_e6d2_f18f_4d1697886c48 -->|method| 59b9c793_1d45_3e25_7705_a5c9975a5e6f
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/MultipleContentLengthHeadersTest.java lines 35–121
public class MultipleContentLengthHeadersTest {
static Collection<Object[]> parameters() {
return Arrays.asList(new Object[][] {
{ false, false, false },
{ false, false, true },
{ false, true, false },
{ false, true, true },
{ true, false, false },
{ true, false, true },
{ true, true, false },
{ true, true, true }
});
}
private static EmbeddedChannel newChannel(boolean allowDuplicateContentLengths) {
HttpDecoderConfig config = new HttpDecoderConfig()
.setAllowDuplicateContentLengths(allowDuplicateContentLengths);
HttpRequestDecoder decoder = new HttpRequestDecoder(config);
return new EmbeddedChannel(decoder);
}
@ParameterizedTest
@MethodSource("parameters")
public void testMultipleContentLengthHeadersBehavior(boolean allowDuplicateContentLengths,
boolean sameValue, boolean singleField) {
EmbeddedChannel channel = newChannel(allowDuplicateContentLengths);
String requestStr = setupRequestString(sameValue, singleField);
assertTrue(channel.writeInbound(Unpooled.copiedBuffer(requestStr, CharsetUtil.US_ASCII)));
HttpRequest request = channel.readInbound();
if (allowDuplicateContentLengths) {
if (sameValue) {
assertValid(request);
List<String> contentLengths = request.headers().getAll(HttpHeaderNames.CONTENT_LENGTH);
assertThat(contentLengths).contains("1");
LastHttpContent body = channel.readInbound();
assertEquals(1, body.content().readableBytes());
assertEquals("a", body.content().readCharSequence(1, CharsetUtil.US_ASCII).toString());
} else {
assertInvalid(request);
}
} else {
assertInvalid(request);
}
assertFalse(channel.finish());
}
private static String setupRequestString(boolean sameValue, boolean singleField) {
String firstValue = "1";
String secondValue = sameValue ? firstValue : "2";
String contentLength;
if (singleField) {
contentLength = "Content-Length: " + firstValue + ", " + secondValue + "\r\n\r\n";
} else {
contentLength = "Content-Length: " + firstValue + "\r\n" +
"Content-Length: " + secondValue + "\r\n\r\n";
}
return "PUT /some/path HTTP/1.1\r\n" +
contentLength +
"ab";
}
@Test
public void testDanglingComma() {
EmbeddedChannel channel = newChannel(false);
String requestStr = "GET /some/path HTTP/1.1\r\n" +
"Content-Length: 1,\r\n" +
"Connection: close\r\n\r\n" +
"ab";
assertTrue(channel.writeInbound(Unpooled.copiedBuffer(requestStr, CharsetUtil.US_ASCII)));
HttpRequest request = channel.readInbound();
assertInvalid(request);
assertFalse(channel.finish());
}
private static void assertValid(HttpRequest request) {
assertFalse(request.decoderResult().isFailure());
}
private static void assertInvalid(HttpRequest request) {
Defined In
Source
Frequently Asked Questions
What is the MultipleContentLengthHeadersTest class?
MultipleContentLengthHeadersTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/MultipleContentLengthHeadersTest.java.
Where is MultipleContentLengthHeadersTest defined?
MultipleContentLengthHeadersTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/MultipleContentLengthHeadersTest.java at line 35.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free