Home / Function/ testStreamLimitEnforcedWhenCreatingViaServer() — netty Function Reference

testStreamLimitEnforcedWhenCreatingViaServer() — netty Function Reference

Architecture documentation for the testStreamLimitEnforcedWhenCreatingViaServer() function in QuicStreamLimitTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  62d51dbc_607c_6f07_5f31_26f609c0169b["testStreamLimitEnforcedWhenCreatingViaServer()"]
  e7f62e39_432b_500c_cf3e_39f7c392f237["QuicStreamLimitTest"]
  62d51dbc_607c_6f07_5f31_26f609c0169b -->|defined in| e7f62e39_432b_500c_cf3e_39f7c392f237
  c5261b56_975e_d40e_3236_bfa8bc77897e["testStreamLimitEnforcedWhenCreatingViaServerBidirectional()"]
  c5261b56_975e_d40e_3236_bfa8bc77897e -->|calls| 62d51dbc_607c_6f07_5f31_26f609c0169b
  b58ca41c_1155_4d92_89cc_c7f69fbe601f["testStreamLimitEnforcedWhenCreatingViaServerUnidirectional()"]
  b58ca41c_1155_4d92_89cc_c7f69fbe601f -->|calls| 62d51dbc_607c_6f07_5f31_26f609c0169b
  style 62d51dbc_607c_6f07_5f31_26f609c0169b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamLimitTest.java lines 134–193

    private static void testStreamLimitEnforcedWhenCreatingViaServer(Executor executor, QuicStreamType type)
            throws Throwable {
        Promise<Void> streamPromise = ImmediateEventExecutor.INSTANCE.newPromise();
        Promise<Throwable> stream2Promise = ImmediateEventExecutor.INSTANCE.newPromise();
        QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler() {
            @Override
            public void channelActive(ChannelHandlerContext ctx) {
                super.channelActive(ctx);
                QuicChannel channel = (QuicChannel) ctx.channel();
                channel.createStream(type, new ChannelInboundHandlerAdapter())
                        .addListener((Future<QuicStreamChannel> future) -> {
                            if (future.isSuccess()) {
                                QuicStreamChannel stream = future.getNow();
                                streamPromise.setSuccess(null);
                                channel.createStream(type, new ChannelInboundHandlerAdapter())
                                        .addListener((Future<QuicStreamChannel> f) -> {
                                            stream.close();
                                            stream2Promise.setSuccess(f.cause());
                                        });
                            } else {
                                streamPromise.setFailure(future.cause());
                            }
                        });
            }
        };
        Channel server = QuicTestUtils.newServer(
                QuicTestUtils.newQuicServerBuilder(executor),
                InsecureQuicTokenHandler.INSTANCE,
                serverHandler, new ChannelInboundHandlerAdapter() {
                    @Override
                    public boolean isSharable() {
                        return true;
                    }
                });
        InetSocketAddress address = (InetSocketAddress) server.localAddress();
        Channel channel = QuicTestUtils.newClient(QuicTestUtils.newQuicClientBuilder(executor)
                .initialMaxStreamsBidirectional(1).initialMaxStreamsUnidirectional(1));

        QuicChannelValidationHandler clientHandler = new QuicChannelValidationHandler();
        try {
            QuicChannel quicChannel = QuicTestUtils.newQuicChannelBootstrap(channel)
                    .handler(clientHandler)
                    .streamHandler(new ChannelInboundHandlerAdapter())
                    .remoteAddress(address)
                    .connect().get();
            streamPromise.sync();
            // Second stream creation should fail.
            assertInstanceOf(QuicException.class, stream2Promise.get());
            quicChannel.close().sync();

            serverHandler.assertState();
            clientHandler.assertState();
        } finally {
            server.close().sync();
            // Close the parent Datagram channel as well.
            channel.close().sync();

            shutdown(executor);
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does testStreamLimitEnforcedWhenCreatingViaServer() do?
testStreamLimitEnforcedWhenCreatingViaServer() is a function in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamLimitTest.java.
Where is testStreamLimitEnforcedWhenCreatingViaServer() defined?
testStreamLimitEnforcedWhenCreatingViaServer() is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamLimitTest.java at line 134.
What calls testStreamLimitEnforcedWhenCreatingViaServer()?
testStreamLimitEnforcedWhenCreatingViaServer() is called by 2 function(s): testStreamLimitEnforcedWhenCreatingViaServerBidirectional, testStreamLimitEnforcedWhenCreatingViaServerUnidirectional.

Analyze Your Own Codebase

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

Try Supermodel Free