Home / Function/ testTaskAddedAfterShutdownNotAbandoned() — netty Function Reference

testTaskAddedAfterShutdownNotAbandoned() — netty Function Reference

Architecture documentation for the testTaskAddedAfterShutdownNotAbandoned() function in SingleThreadEventExecutorTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  2d7ca5ae_567d_f505_46fa_1f2190eed3e0["testTaskAddedAfterShutdownNotAbandoned()"]
  bbf4ea8d_698f_542a_1559_437b1b237a04["SingleThreadEventExecutorTest"]
  2d7ca5ae_567d_f505_46fa_1f2190eed3e0 -->|defined in| bbf4ea8d_698f_542a_1559_437b1b237a04
  d1474077_6d3a_87c2_2d11_070af739005b["run()"]
  2d7ca5ae_567d_f505_46fa_1f2190eed3e0 -->|calls| d1474077_6d3a_87c2_2d11_070af739005b
  style 2d7ca5ae_567d_f505_46fa_1f2190eed3e0 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

common/src/test/java/io/netty/util/concurrent/SingleThreadEventExecutorTest.java lines 482–549

    @Test
    public void testTaskAddedAfterShutdownNotAbandoned() throws Exception {

        // A queue that doesn't support remove, so tasks once added cannot be rejected anymore
        LinkedBlockingQueue<Runnable> taskQueue = new LinkedBlockingQueue<Runnable>() {
            @Override
            public boolean remove(Object o) {
                throw new UnsupportedOperationException();
            }
        };

        final Runnable dummyTask = new Runnable() {
            @Override
            public void run() {
            }
        };

        final LinkedBlockingQueue<Future<?>> submittedTasks = new LinkedBlockingQueue<Future<?>>();
        final AtomicInteger attempts = new AtomicInteger();
        final AtomicInteger rejects = new AtomicInteger();

        ExecutorService executorService = Executors.newSingleThreadExecutor();
        final SingleThreadEventExecutor executor = new SingleThreadEventExecutor(null, executorService, false,
                taskQueue, RejectedExecutionHandlers.reject()) {
            @Override
            protected void run() {
                while (!confirmShutdown()) {
                    Runnable task = takeTask();
                    if (task != null) {
                        task.run();
                    }
                }
            }

            @Override
            protected boolean confirmShutdown() {
                boolean result = super.confirmShutdown();
                // After shutdown is confirmed, scheduled one more task and record it
                if (result) {
                    attempts.incrementAndGet();
                    try {
                        submittedTasks.add(submit(dummyTask));
                    } catch (RejectedExecutionException e) {
                        // ignore, tasks are either accepted or rejected
                        rejects.incrementAndGet();
                    }
                }
                return result;
            }
        };

        // Start the loop
        executor.submit(dummyTask).sync();

        // Shutdown without any quiet period
        executor.shutdownGracefully(0, 100, TimeUnit.MILLISECONDS).sync();

        // Ensure there are no user-tasks left.
        assertEquals(0, executor.drainTasks());

        // Verify that queue is empty and all attempts either succeeded or were rejected
        assertTrue(taskQueue.isEmpty());
        assertTrue(attempts.get() > 0);
        assertEquals(attempts.get(), submittedTasks.size() + rejects.get());
        for (Future<?> f : submittedTasks) {
            assertTrue(f.isSuccess());
        }
    }

Domain

Subdomains

Calls

Frequently Asked Questions

What does testTaskAddedAfterShutdownNotAbandoned() do?
testTaskAddedAfterShutdownNotAbandoned() is a function in the netty codebase, defined in common/src/test/java/io/netty/util/concurrent/SingleThreadEventExecutorTest.java.
Where is testTaskAddedAfterShutdownNotAbandoned() defined?
testTaskAddedAfterShutdownNotAbandoned() is defined in common/src/test/java/io/netty/util/concurrent/SingleThreadEventExecutorTest.java at line 482.
What does testTaskAddedAfterShutdownNotAbandoned() call?
testTaskAddedAfterShutdownNotAbandoned() calls 1 function(s): run.

Analyze Your Own Codebase

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

Try Supermodel Free