Home / Class/ HttpInvalidMessageTest Class — netty Architecture

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);

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