Home / Function/ testSuccessfulUpgrade() — netty Function Reference

testSuccessfulUpgrade() — netty Function Reference

Architecture documentation for the testSuccessfulUpgrade() function in HttpClientUpgradeHandlerTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  dcffa64c_27eb_265e_8d81_5c460e9d842a["testSuccessfulUpgrade()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960["HttpClientUpgradeHandlerTest"]
  dcffa64c_27eb_265e_8d81_5c460e9d842a -->|defined in| 64e7cef3_ca61_31ce_7834_0d1da2dc4960
  8583d0e4_1a3e_dc52_4bb2_ca48f6d5bbad["userEventTriggered()"]
  dcffa64c_27eb_265e_8d81_5c460e9d842a -->|calls| 8583d0e4_1a3e_dc52_4bb2_ca48f6d5bbad
  style dcffa64c_27eb_265e_8d81_5c460e9d842a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java lines 77–128

    @Test
    public void testSuccessfulUpgrade() {
        HttpClientUpgradeHandler.SourceCodec sourceCodec = new FakeSourceCodec();
        HttpClientUpgradeHandler.UpgradeCodec upgradeCodec = new FakeUpgradeCodec();
        HttpClientUpgradeHandler handler = new HttpClientUpgradeHandler(sourceCodec, upgradeCodec, 1024);
        UserEventCatcher catcher = new UserEventCatcher();
        EmbeddedChannel channel = new EmbeddedChannel(catcher);
        final HttpRequest afterUpgradeMessage =
                new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "netty.io");
        final ChannelPromise promise = channel.newPromise();
        channel.pipeline().addFirst(new ChannelInboundHandlerAdapter() {
            @Override
            public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
                if (evt == HttpClientUpgradeHandler.UpgradeEvent.UPGRADE_SUCCESSFUL) {
                    ctx.writeAndFlush(afterUpgradeMessage, promise);
                }
                super.userEventTriggered(ctx, evt);
            }
        });

        channel.pipeline().addFirst("upgrade", handler);

        assertTrue(
            channel.writeOutbound(new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "netty.io")));
        FullHttpRequest request = channel.readOutbound();

        assertEquals(2, request.headers().size());
        assertTrue(request.headers().contains(HttpHeaderNames.UPGRADE, "fancyhttp", false));
        assertTrue(request.headers().contains("connection", "upgrade", false));
        assertTrue(request.release());
        assertEquals(HttpClientUpgradeHandler.UpgradeEvent.UPGRADE_ISSUED, catcher.getUserEvent());

        HttpResponse upgradeResponse =
            new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.SWITCHING_PROTOCOLS);

        upgradeResponse.headers().add(HttpHeaderNames.UPGRADE, "fancyhttp");
        assertFalse(channel.writeInbound(upgradeResponse));
        assertFalse(channel.writeInbound(LastHttpContent.EMPTY_LAST_CONTENT));

        assertEquals(HttpClientUpgradeHandler.UpgradeEvent.UPGRADE_SUCCESSFUL, catcher.getUserEvent());
        assertNull(channel.pipeline().get("upgrade"));

        assertTrue(channel.writeInbound(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK)));
        FullHttpResponse response = channel.readInbound();
        assertEquals(HttpResponseStatus.OK, response.status());
        assertTrue(response.release());

        assertTrue(promise.isSuccess());
        assertEquals(afterUpgradeMessage, channel.readOutbound());

        assertFalse(channel.finish());
    }

Domain

Subdomains

Frequently Asked Questions

What does testSuccessfulUpgrade() do?
testSuccessfulUpgrade() is a function in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java.
Where is testSuccessfulUpgrade() defined?
testSuccessfulUpgrade() is defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java at line 77.
What does testSuccessfulUpgrade() call?
testSuccessfulUpgrade() calls 1 function(s): userEventTriggered.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free