Home / Class/ CleartextHttp2ServerUpgradeHandlerTest Class — netty Architecture

CleartextHttp2ServerUpgradeHandlerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  24405e75_fc53_b81a_62ef_04cb80649864["CleartextHttp2ServerUpgradeHandlerTest"]
  b4542258_c085_9803_406d_80bfe4cd9da2["CleartextHttp2ServerUpgradeHandlerTest.java"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|defined in| b4542258_c085_9803_406d_80bfe4cd9da2
  0d4ba23e_9249_2941_979a_64a6d32d3fff["setUpServerChannel()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| 0d4ba23e_9249_2941_979a_64a6d32d3fff
  e86a96c6_382c_2507_bdb6_988aecda60d9["tearDown()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| e86a96c6_382c_2507_bdb6_988aecda60d9
  e0e2ac43_94b0_c7ca_8d92_1e2ee97a611b["priorKnowledge()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| e0e2ac43_94b0_c7ca_8d92_1e2ee97a611b
  0bcb6d6f_a2e2_542d_3c02_f3ea20ae5faf["upgrade()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| 0bcb6d6f_a2e2_542d_3c02_f3ea20ae5faf
  65492212_ad30_7906_f9d3_92cb250418f5["upgradeWithMultipleConnectionHeaders()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| 65492212_ad30_7906_f9d3_92cb250418f5
  f846613a_c04f_1ec2_80cc_d7082d92ef92["requiredHeadersInSeparateConnectionHeaders()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| f846613a_c04f_1ec2_80cc_d7082d92ef92
  aa6eb3a6_753d_44bf_3286_41de56114e9e["priorKnowledgeInFragments()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| aa6eb3a6_753d_44bf_3286_41de56114e9e
  1e9fd380_a7e6_736a_4336_76fb6cf2543b["downgrade()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| 1e9fd380_a7e6_736a_4336_76fb6cf2543b
  b2e7c0c6_b199_c5dc_3810_14ba7ae89c85["usedHttp2MultiplexCodec()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| b2e7c0c6_b199_c5dc_3810_14ba7ae89c85
  f4fa60bd_cd8e_ed3e_4175_4d6e3a106003["ByteBuf()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| f4fa60bd_cd8e_ed3e_4175_4d6e3a106003
  43e58436_ee0a_6ccf_310f_1fae06b66417["Http2Settings()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| 43e58436_ee0a_6ccf_310f_1fae06b66417
  f392444a_9fec_021c_0d7d_3cb6056aa954["validateClearTextUpgrade()"]
  24405e75_fc53_b81a_62ef_04cb80649864 -->|method| f392444a_9fec_021c_0d7d_3cb6056aa954

Relationship Graph

Source Code

codec-http2/src/test/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandlerTest.java lines 58–291

public class CleartextHttp2ServerUpgradeHandlerTest {
    private EmbeddedChannel channel;

    private Http2FrameListener frameListener;

    private Http2ConnectionHandler http2ConnectionHandler;

    private List<Object> userEvents;

    private void setUpServerChannel() {
        frameListener = mock(Http2FrameListener.class);

        http2ConnectionHandler = new Http2ConnectionHandlerBuilder()
                .frameListener(frameListener).build();

        UpgradeCodecFactory upgradeCodecFactory = new UpgradeCodecFactory() {
            @Override
            public UpgradeCodec newUpgradeCodec(CharSequence protocol) {
                return new Http2ServerUpgradeCodec(http2ConnectionHandler);
            }
        };

        userEvents = new ArrayList<Object>();

        HttpServerCodec httpServerCodec = new HttpServerCodec();
        HttpServerUpgradeHandler upgradeHandler = new HttpServerUpgradeHandler(httpServerCodec, upgradeCodecFactory);

        CleartextHttp2ServerUpgradeHandler handler = new CleartextHttp2ServerUpgradeHandler(
                httpServerCodec, upgradeHandler, http2ConnectionHandler);
        channel = new EmbeddedChannel(handler, new ChannelInboundHandlerAdapter() {
            @Override
            public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
                userEvents.add(evt);
            }
        });
    }

    @AfterEach
    public void tearDown() throws Exception {
        channel.finishAndReleaseAll();
    }

    @Test
    public void priorKnowledge() throws Exception {
        setUpServerChannel();

        channel.writeInbound(Http2CodecUtil.connectionPrefaceBuf());

        ByteBuf settingsFrame = settingsFrameBuf();

        assertFalse(channel.writeInbound(settingsFrame));

        assertEquals(1, userEvents.size());
        assertTrue(userEvents.get(0) instanceof PriorKnowledgeUpgradeEvent);

        assertEquals(100, http2ConnectionHandler.connection().local().maxActiveStreams());
        assertEquals(65535, http2ConnectionHandler.connection().local().flowController().initialWindowSize());

        verify(frameListener).onSettingsRead(
                any(ChannelHandlerContext.class), eq(expectedSettings()));
    }

    @Test
    public void upgrade() throws Exception {
        String upgradeString = "GET / HTTP/1.1\r\n" +
                "Host: example.com\r\n" +
                "Connection: Upgrade, HTTP2-Settings\r\n" +
                "Upgrade: h2c\r\n" +
                "HTTP2-Settings: AAMAAABkAAQAAP__\r\n\r\n";
        validateClearTextUpgrade(upgradeString);
    }

    @Test
    public void upgradeWithMultipleConnectionHeaders() {
        String upgradeString = "GET / HTTP/1.1\r\n" +
                "Host: example.com\r\n" +
                "Connection: keep-alive\r\n" +
                "Connection: Upgrade, HTTP2-Settings\r\n" +
                "Upgrade: h2c\r\n" +
                "HTTP2-Settings: AAMAAABkAAQAAP__\r\n\r\n";
        validateClearTextUpgrade(upgradeString);

Frequently Asked Questions

What is the CleartextHttp2ServerUpgradeHandlerTest class?
CleartextHttp2ServerUpgradeHandlerTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandlerTest.java.
Where is CleartextHttp2ServerUpgradeHandlerTest defined?
CleartextHttp2ServerUpgradeHandlerTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/CleartextHttp2ServerUpgradeHandlerTest.java at line 58.

Analyze Your Own Codebase

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

Try Supermodel Free