Home / Class/ HttpClientUpgradeHandlerTest Class — netty Architecture

HttpClientUpgradeHandlerTest Class — netty Architecture

Architecture documentation for the HttpClientUpgradeHandlerTest class in HttpClientUpgradeHandlerTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  64e7cef3_ca61_31ce_7834_0d1da2dc4960["HttpClientUpgradeHandlerTest"]
  828bae44_3bfc_04cf_d1ad_43812893780d["HttpClientUpgradeHandlerTest.java"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|defined in| 828bae44_3bfc_04cf_d1ad_43812893780d
  dcffa64c_27eb_265e_8d81_5c460e9d842a["testSuccessfulUpgrade()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| dcffa64c_27eb_265e_8d81_5c460e9d842a
  55961b11_ef97_7b29_241e_fa223d59f74b["testUpgradeRejected()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| 55961b11_ef97_7b29_241e_fa223d59f74b
  3edc383e_4c37_2222_2b44_19e8186d8608["testEarlyBailout()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| 3edc383e_4c37_2222_2b44_19e8186d8608
  0df7552a_c8a5_52a6_0cee_998443fa25ce["dontStripConnectionHeaders()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| 0df7552a_c8a5_52a6_0cee_998443fa25ce
  f74ae65e_72cb_3a55_bcaa_0518274f02fd["testMultipleUpgradeRequestsFail()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| f74ae65e_72cb_3a55_bcaa_0518274f02fd
  a39efc99_c313_d8c8_5c01_14d1598082ff["forwardOnFailure()"]
  64e7cef3_ca61_31ce_7834_0d1da2dc4960 -->|method| a39efc99_c313_d8c8_5c01_14d1598082ff

Relationship Graph

Source Code

codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java lines 36–268

public class HttpClientUpgradeHandlerTest {

    private static final class FakeSourceCodec implements HttpClientUpgradeHandler.SourceCodec {
        @Override
        public void prepareUpgradeFrom(ChannelHandlerContext ctx) {
        }

        @Override
        public void upgradeFrom(ChannelHandlerContext ctx) {
        }
    }

    private static final class FakeUpgradeCodec implements HttpClientUpgradeHandler.UpgradeCodec {
        @Override
        public CharSequence protocol() {
            return "fancyhttp";
        }

        @Override
        public Collection<CharSequence> setUpgradeHeaders(ChannelHandlerContext ctx, HttpRequest upgradeRequest) {
            return Collections.emptyList();
        }

        @Override
        public void upgradeTo(ChannelHandlerContext ctx, FullHttpResponse upgradeResponse) throws Exception {
        }
    }

    private static final class UserEventCatcher extends ChannelInboundHandlerAdapter {
        private Object evt;

        public Object getUserEvent() {
            return evt;
        }

        @Override
        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
            this.evt = evt;
        }
    }

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

Frequently Asked Questions

What is the HttpClientUpgradeHandlerTest class?
HttpClientUpgradeHandlerTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java.
Where is HttpClientUpgradeHandlerTest defined?
HttpClientUpgradeHandlerTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpClientUpgradeHandlerTest.java at line 36.

Analyze Your Own Codebase

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

Try Supermodel Free