HttpInvalidMessageTest Class — netty Architecture
Architecture documentation for the HttpInvalidMessageTest class in HttpInvalidMessageTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 9fcfe62b_bd7f_3212_a40b_cda45186b61b["HttpInvalidMessageTest"] cc5a1f7b_4898_ff23_e031_b5430a67b153["HttpInvalidMessageTest.java"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|defined in| cc5a1f7b_4898_ff23_e031_b5430a67b153 e6337f8f_a892_660e_9afa_c688fb606d2c["testRequestWithBadInitialLine()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| e6337f8f_a892_660e_9afa_c688fb606d2c ee4667ea_ed93_39d6_48e1_4b4c0dffd4fd["testRequestWithBadHeader()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| ee4667ea_ed93_39d6_48e1_4b4c0dffd4fd 538e05cf_b95a_4967_6ed6_31da8b9b1eaa["testResponseWithBadInitialLine()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| 538e05cf_b95a_4967_6ed6_31da8b9b1eaa 0059ca13_2db9_ea1e_b721_7c69f7734b36["testResponseWithBadHeader()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| 0059ca13_2db9_ea1e_b721_7c69f7734b36 4c1762d4_53ec_0a1e_0835_f1f3eb19c23c["testBadChunk()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| 4c1762d4_53ec_0a1e_0835_f1f3eb19c23c 089c961b_dc5d_1623_f43c_45ebbfde8f6a["ensureInboundTrafficDiscarded()"] 9fcfe62b_bd7f_3212_a40b_cda45186b61b -->|method| 089c961b_dc5d_1623_f43c_45ebbfde8f6a
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/HttpInvalidMessageTest.java lines 33–122
public class HttpInvalidMessageTest {
private final Random rnd = new Random();
@Test
public void testRequestWithBadInitialLine() throws Exception {
EmbeddedChannel ch = new EmbeddedChannel(new HttpRequestDecoder());
ch.writeInbound(Unpooled.copiedBuffer("GET / HTTP/1.0 with extra\r\n", CharsetUtil.UTF_8));
HttpRequest req = ch.readInbound();
DecoderResult dr = req.decoderResult();
assertFalse(dr.isSuccess());
assertTrue(dr.isFailure());
ensureInboundTrafficDiscarded(ch);
}
@Test
public void testRequestWithBadHeader() throws Exception {
EmbeddedChannel ch = new EmbeddedChannel(new HttpRequestDecoder());
ch.writeInbound(Unpooled.copiedBuffer("GET /maybe-something HTTP/1.0\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("Good_Name: Good Value\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
HttpRequest req = ch.readInbound();
DecoderResult dr = req.decoderResult();
assertFalse(dr.isSuccess());
assertTrue(dr.isFailure());
assertEquals("Good Value", req.headers().get(of("Good_Name")));
assertEquals("/maybe-something", req.uri());
ensureInboundTrafficDiscarded(ch);
}
@Test
public void testResponseWithBadInitialLine() throws Exception {
EmbeddedChannel ch = new EmbeddedChannel(new HttpResponseDecoder());
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.0 BAD_CODE Bad Server\r\n", CharsetUtil.UTF_8));
HttpResponse res = ch.readInbound();
DecoderResult dr = res.decoderResult();
assertFalse(dr.isSuccess());
assertTrue(dr.isFailure());
ensureInboundTrafficDiscarded(ch);
}
@Test
public void testResponseWithBadHeader() throws Exception {
EmbeddedChannel ch = new EmbeddedChannel(new HttpResponseDecoder());
ch.writeInbound(Unpooled.copiedBuffer("HTTP/1.0 200 Maybe OK\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("Good_Name: Good Value\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("Bad=Name: Bad Value\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("\r\n", CharsetUtil.UTF_8));
HttpResponse res = ch.readInbound();
DecoderResult dr = res.decoderResult();
assertFalse(dr.isSuccess());
assertTrue(dr.isFailure());
assertEquals("Maybe OK", res.status().reasonPhrase());
assertEquals("Good Value", res.headers().get(of("Good_Name")));
ensureInboundTrafficDiscarded(ch);
}
@Test
public void testBadChunk() throws Exception {
EmbeddedChannel ch = new EmbeddedChannel(new HttpRequestDecoder());
ch.writeInbound(Unpooled.copiedBuffer("GET / HTTP/1.0\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("Transfer-Encoding: chunked\r\n\r\n", CharsetUtil.UTF_8));
ch.writeInbound(Unpooled.copiedBuffer("BAD_LENGTH\r\n", CharsetUtil.UTF_8));
HttpRequest req = ch.readInbound();
assertTrue(req.decoderResult().isSuccess());
LastHttpContent chunk = ch.readInbound();
DecoderResult dr = chunk.decoderResult();
assertFalse(dr.isSuccess());
assertTrue(dr.isFailure());
ensureInboundTrafficDiscarded(ch);
}
private void ensureInboundTrafficDiscarded(EmbeddedChannel ch) {
// Generate a lot of random traffic to ensure that it's discarded silently.
byte[] data = new byte[1048576];
rnd.nextBytes(data);
ByteBuf buf = Unpooled.wrappedBuffer(data);
Source
Frequently Asked Questions
What is the HttpInvalidMessageTest class?
HttpInvalidMessageTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpInvalidMessageTest.java.
Where is HttpInvalidMessageTest defined?
HttpInvalidMessageTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpInvalidMessageTest.java at line 33.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free