Home / Class/ MultiThreadIoEventLoopGroupTest Class — netty Architecture

MultiThreadIoEventLoopGroupTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  b4c07204_4723_7056_4606_4ede1e592317["MultiThreadIoEventLoopGroupTest"]
  e0d4d133_322e_1155_8441_23fad36b03b0["MultiThreadIoEventLoopGroupTest.java"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|defined in| e0d4d133_322e_1155_8441_23fad36b03b0
  9dc088c7_b110_3105_08f2_60a9b86cd695["testScalingWithIoRegistrationLifecycle()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| 9dc088c7_b110_3105_08f2_60a9b86cd695
  e7d55bd2_9308_0bb3_c01a_5eb1fee6b142["testShouldNotSuspendExecutorWithActiveRegistration()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| e7d55bd2_9308_0bb3_c01a_5eb1fee6b142
  45e835b7_601b_955d_a619_3fc8956adbbc["startAllExecutors()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| 45e835b7_601b_955d_a619_3fc8956adbbc
  7f3d45f6_1f4d_1a16_9fd4_70c9200affc0["countActiveExecutors()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| 7f3d45f6_1f4d_1a16_9fd4_70c9200affc0
  b74dd729_3f39_9bd3_d59a_a603dd2a7418["EventExecutor()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| b74dd729_3f39_9bd3_d59a_a603dd2a7418
  5adea2a2_060c_b4a5_62c9_a2b2c4c16c53["waitForSuspension()"]
  b4c07204_4723_7056_4606_4ede1e592317 -->|method| 5adea2a2_060c_b4a5_62c9_a2b2c4c16c53

Relationship Graph

Source Code

transport/src/test/java/io/netty/channel/MultiThreadIoEventLoopGroupTest.java lines 37–250

public class MultiThreadIoEventLoopGroupTest {

    private static class TestIoHandle implements IoHandle {
        @Override
        public void handle(IoRegistration registration, IoEvent readyOps) {
        }

        @Override
        public void close() {
        }
    }

    private static class TestIoHandlerFactory implements IoHandlerFactory {
        @Override
        public IoHandler newHandler(ThreadAwareExecutor ioExecutor) {
            return new IoHandler() {
                @Override public int run(IoHandlerContext context) {
                    return 0;
                }

                @Override public void wakeup() {
                }

                @Override
                public IoRegistration register(IoHandle handle) {
                    return new IoRegistration() {
                        private final AtomicBoolean valid = new AtomicBoolean(true);
                        @Override public <T> T attachment() {
                            return (T) handle;
                        }
                        @Override public long submit(IoOps ops) {
                            return 0;
                        }
                        @Override public boolean isValid() {
                            return valid.get();
                        }
                        @Override public boolean cancel() {
                            return valid.compareAndSet(true, false);
                        }
                    };
                }
                @Override public boolean isCompatible(Class<? extends IoHandle> handleType) {
                    return true;
                }
            };
        }

        @Override
        public boolean isChangingThreadSupported() {
            return true;
        }
    }

    private static class TestableIoEventLoop extends SingleThreadIoEventLoop {
        private final AtomicBoolean simulateWorkload = new AtomicBoolean(false);

        TestableIoEventLoop(IoEventLoopGroup parent, Executor executor, IoHandlerFactory ioHandlerFactory) {
            super(parent, executor, ioHandlerFactory);
        }

        public void setSimulateWorkload(boolean active) {
            simulateWorkload.set(active);
            if (active) {
                execute(() -> { /* NO-OP */ });
            }
        }

        @Override
        protected void run() {
            do {
                if (simulateWorkload.get()) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        Thread.currentThread().interrupt();
                    }
                    reportActiveIoTime(TimeUnit.MILLISECONDS.toNanos(100));
                } else {
                    Runnable task = takeTask();
                    if (task != null) {
                        safeExecute(task);

Frequently Asked Questions

What is the MultiThreadIoEventLoopGroupTest class?
MultiThreadIoEventLoopGroupTest is a class in the netty codebase, defined in transport/src/test/java/io/netty/channel/MultiThreadIoEventLoopGroupTest.java.
Where is MultiThreadIoEventLoopGroupTest defined?
MultiThreadIoEventLoopGroupTest is defined in transport/src/test/java/io/netty/channel/MultiThreadIoEventLoopGroupTest.java at line 37.

Analyze Your Own Codebase

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

Try Supermodel Free