Home / Function/ testWriteTaskRejected() — netty Function Reference

testWriteTaskRejected() — netty Function Reference

Architecture documentation for the testWriteTaskRejected() function in ChannelOutboundBufferTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  e8421144_91d1_9ad4_6af2_9edbae1ce8ae["testWriteTaskRejected()"]
  06eb8f18_da0c_40bf_fb14_47e2c94a6923["ChannelOutboundBufferTest"]
  e8421144_91d1_9ad4_6af2_9edbae1ce8ae -->|defined in| 06eb8f18_da0c_40bf_fb14_47e2c94a6923
  00d35efd_91f9_9891_6cdb_8a43498309e6["safeClose()"]
  e8421144_91d1_9ad4_6af2_9edbae1ce8ae -->|calls| 00d35efd_91f9_9891_6cdb_8a43498309e6
  style e8421144_91d1_9ad4_6af2_9edbae1ce8ae fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport/src/test/java/io/netty/channel/ChannelOutboundBufferTest.java lines 430–526

    @Test
    @Timeout(value = 5000, unit = TimeUnit.MILLISECONDS)
    public void testWriteTaskRejected() throws Exception {
        final SingleThreadEventExecutor executor = new SingleThreadEventExecutor(
                null, new DefaultThreadFactory("executorPool"),
                true, 1, RejectedExecutionHandlers.reject()) {
            @Override
            protected void run() {
                do {
                    Runnable task = takeTask();
                    if (task != null) {
                        task.run();
                        updateLastExecutionTime();
                    }
                } while (!confirmShutdown());
            }

            @Override
            protected Queue<Runnable> newTaskQueue(int maxPendingTasks) {
                return super.newTaskQueue(1);
            }
        };
        final CountDownLatch handlerAddedLatch = new CountDownLatch(1);
        final CountDownLatch handlerRemovedLatch = new CountDownLatch(1);
        EmbeddedChannel ch = new EmbeddedChannel();
        ch.pipeline().addLast(executor, "handler", new ChannelOutboundHandlerAdapter() {
            @Override
            public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
                promise.setFailure(new AssertionError("Should not be called"));
            }

            @Override
            public void handlerAdded(ChannelHandlerContext ctx) {
                handlerAddedLatch.countDown();
            }

            @Override
            public void handlerRemoved(ChannelHandlerContext ctx) {
                handlerRemovedLatch.countDown();
            }
        });

        // Lets wait until we are sure the handler was added.
        handlerAddedLatch.await();

        final CountDownLatch executeLatch = new CountDownLatch(1);
        final CountDownLatch runLatch = new CountDownLatch(1);
        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    runLatch.countDown();
                    executeLatch.await();
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });

        runLatch.await();

        executor.execute(new Runnable() {
            @Override
            public void run() {
                // Will not be executed but ensure the pending count is 1.
            }
        });

        assertEquals(1, executor.pendingTasks());
        assertEquals(0, ch.unsafe().outboundBuffer().totalPendingWriteBytes());

        ByteBuf buffer = buffer(128).writeZero(128);
        ChannelFuture future = ch.write(buffer);
        ch.runPendingTasks();

        assertTrue(future.cause() instanceof RejectedExecutionException);
        assertEquals(0, buffer.refCnt());

        // In case of rejected task we should not have anything pending.
        assertEquals(0, ch.unsafe().outboundBuffer().totalPendingWriteBytes());
        executeLatch.countDown();

Domain

Subdomains

Calls

Frequently Asked Questions

What does testWriteTaskRejected() do?
testWriteTaskRejected() is a function in the netty codebase, defined in transport/src/test/java/io/netty/channel/ChannelOutboundBufferTest.java.
Where is testWriteTaskRejected() defined?
testWriteTaskRejected() is defined in transport/src/test/java/io/netty/channel/ChannelOutboundBufferTest.java at line 430.
What does testWriteTaskRejected() call?
testWriteTaskRejected() calls 1 function(s): safeClose.

Analyze Your Own Codebase

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

Try Supermodel Free