Home / Class/ SocketFixedLengthEchoTest Class — netty Architecture

SocketFixedLengthEchoTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  7531b4be_9752_efc3_be5e_e3f144817b9b["SocketFixedLengthEchoTest"]
  09f682ec_9784_e533_2448_adc18a769695["SocketFixedLengthEchoTest.java"]
  7531b4be_9752_efc3_be5e_e3f144817b9b -->|defined in| 09f682ec_9784_e533_2448_adc18a769695
  a9c74c52_1e51_df07_fa54_a8311adda392["testFixedLengthEcho()"]
  7531b4be_9752_efc3_be5e_e3f144817b9b -->|method| a9c74c52_1e51_df07_fa54_a8311adda392
  fceb1368_fa17_a6a0_fc49_2489b8f4289f["testFixedLengthEchoNotAutoRead()"]
  7531b4be_9752_efc3_be5e_e3f144817b9b -->|method| fceb1368_fa17_a6a0_fc49_2489b8f4289f

Relationship Graph

Source Code

testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketFixedLengthEchoTest.java lines 37–201

public class SocketFixedLengthEchoTest extends AbstractSocketTest {

    private static final Random random = new Random();
    static final byte[] data = new byte[1048576];

    static {
        random.nextBytes(data);
    }

    @Test
    public void testFixedLengthEcho(TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testFixedLengthEcho(serverBootstrap, bootstrap);
            }
        });
    }

    @Test
    public void testFixedLengthEchoNotAutoRead(TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testFixedLengthEchoNotAutoRead(serverBootstrap, bootstrap);
            }
        });
    }

    public void testFixedLengthEcho(ServerBootstrap sb, Bootstrap cb) throws Throwable {
        testFixedLengthEcho(sb, cb, true);
    }

    public void testFixedLengthEchoNotAutoRead(ServerBootstrap sb, Bootstrap cb) throws Throwable {
        testFixedLengthEcho(sb, cb, false);
    }

    private static void testFixedLengthEcho(ServerBootstrap sb, Bootstrap cb, boolean autoRead) throws Throwable {
        final EchoHandler sh = new EchoHandler(autoRead);
        final EchoHandler ch = new EchoHandler(autoRead);

        sb.childOption(ChannelOption.AUTO_READ, autoRead);
        sb.childHandler(new ChannelInitializer<Channel>() {
            @Override
            public void initChannel(Channel sch) throws Exception {
                sch.pipeline().addLast("decoder", new FixedLengthFrameDecoder(1024));
                sch.pipeline().addAfter("decoder", "handler", sh);
            }
        });

        cb.option(ChannelOption.AUTO_READ, autoRead);
        cb.handler(new ChannelInitializer<Channel>() {
            @Override
            public void initChannel(Channel sch) throws Exception {
                sch.pipeline().addLast("decoder", new FixedLengthFrameDecoder(1024));
                sch.pipeline().addAfter("decoder", "handler", ch);
            }
        });

        Channel sc = sb.bind().sync().channel();
        Channel cc = cb.connect(sc.localAddress()).sync().channel();
        for (int i = 0; i < data.length;) {
            int length = Math.min(random.nextInt(1024 * 3), data.length - i);
            cc.writeAndFlush(randomBufferType(cc.alloc(), data, i, length));
            i += length;
        }

        while (ch.counter < data.length) {
            if (sh.exception.get() != null) {
                break;
            }
            if (ch.exception.get() != null) {
                break;
            }

            Thread.sleep(50);
        }

        while (sh.counter < data.length) {
            if (sh.exception.get() != null) {
                break;

Frequently Asked Questions

What is the SocketFixedLengthEchoTest class?
SocketFixedLengthEchoTest is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketFixedLengthEchoTest.java.
Where is SocketFixedLengthEchoTest defined?
SocketFixedLengthEchoTest is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketFixedLengthEchoTest.java at line 37.

Analyze Your Own Codebase

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

Try Supermodel Free