Home / Function/ testWriteInWritePromiseCompletePreservesOrder() — netty Function Reference

testWriteInWritePromiseCompletePreservesOrder() — netty Function Reference

Architecture documentation for the testWriteInWritePromiseCompletePreservesOrder() function in LocalChannelTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2253f4d1_60c4_c68f_5e74_52790064aace["testWriteInWritePromiseCompletePreservesOrder()"]
  d7e5442a_9b99_814d_2bd6_0be57237db65["LocalChannelTest"]
  2253f4d1_60c4_c68f_5e74_52790064aace -->|defined in| d7e5442a_9b99_814d_2bd6_0be57237db65
  d3c8aa54_ac5d_6944_e789_c2c22ce16089["closeChannel()"]
  2253f4d1_60c4_c68f_5e74_52790064aace -->|calls| d3c8aa54_ac5d_6944_e789_c2c22ce16089
  c89c9d89_4030_c998_7504_cb2fa2ef2bc8["channelRead()"]
  2253f4d1_60c4_c68f_5e74_52790064aace -->|calls| c89c9d89_4030_c998_7504_cb2fa2ef2bc8
  style 2253f4d1_60c4_c68f_5e74_52790064aace fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport/src/test/java/io/netty/channel/local/LocalChannelTest.java lines 461–531

    @Test
    public void testWriteInWritePromiseCompletePreservesOrder() throws InterruptedException {
        Bootstrap cb = new Bootstrap();
        ServerBootstrap sb = new ServerBootstrap();
        final CountDownLatch messageLatch = new CountDownLatch(2);
        final ByteBuf data = Unpooled.buffer();
        final ByteBuf data2 = Unpooled.buffer();
        data.writeInt(Integer.BYTES).writeInt(2);
        data2.writeInt(Integer.BYTES).writeInt(1);

        try {
            cb.group(group1)
            .channel(LocalChannel.class)
            .handler(new TestHandler());

            sb.group(group2)
            .channel(LocalServerChannel.class)
            .childHandler(new ChannelInboundHandlerAdapter() {
                @Override
                public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
                    if (msg instanceof ByteBuf) {
                        ByteBuf buf = (ByteBuf) msg;
                        while (buf.isReadable()) {
                            int size = buf.readInt();
                            ByteBuf slice = buf.readRetainedSlice(size);
                            try {
                                if (slice.readInt() == messageLatch.getCount()) {
                                    messageLatch.countDown();
                                }
                            } finally {
                                slice.release();
                            }
                        }
                        buf.release();
                    } else {
                        super.channelRead(ctx, msg);
                    }
                }
            });

            Channel sc = null;
            Channel cc = null;
            try {
                // Start server
                sc = sb.bind(TEST_ADDRESS).syncUninterruptibly().channel();

                // Connect to the server
                cc = cb.connect(sc.localAddress()).syncUninterruptibly().channel();

                final Channel ccCpy = cc;
                // Make sure a write operation is executed in the eventloop
                cc.pipeline().lastContext().executor().execute(new Runnable() {
                    @Override
                    public void run() {
                        ChannelPromise promise = ccCpy.newPromise();
                        promise.addListener(future ->
                                ccCpy.writeAndFlush(data2.retainedDuplicate(), ccCpy.newPromise()));
                        ccCpy.writeAndFlush(data.retainedDuplicate(), promise);
                    }
                });

                assertTrue(messageLatch.await(5, SECONDS));
            } finally {
                closeChannel(cc);
                closeChannel(sc);
            }
        } finally {
            data.release();
            data2.release();
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does testWriteInWritePromiseCompletePreservesOrder() do?
testWriteInWritePromiseCompletePreservesOrder() is a function in the netty codebase, defined in transport/src/test/java/io/netty/channel/local/LocalChannelTest.java.
Where is testWriteInWritePromiseCompletePreservesOrder() defined?
testWriteInWritePromiseCompletePreservesOrder() is defined in transport/src/test/java/io/netty/channel/local/LocalChannelTest.java at line 461.
What does testWriteInWritePromiseCompletePreservesOrder() call?
testWriteInWritePromiseCompletePreservesOrder() calls 2 function(s): channelRead, closeChannel.

Analyze Your Own Codebase

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

Try Supermodel Free