Home / Class/ SocketStringEchoTest Class — netty Architecture

SocketStringEchoTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  130a2011_fe10_5ab5_ce82_632504cfd606["SocketStringEchoTest"]
  df86325f_4f17_aff7_6451_5bba846cc2b4["SocketStringEchoTest.java"]
  130a2011_fe10_5ab5_ce82_632504cfd606 -->|defined in| df86325f_4f17_aff7_6451_5bba846cc2b4
  218ac412_6cde_a317_f690_1cf494737a0d["testStringEcho()"]
  130a2011_fe10_5ab5_ce82_632504cfd606 -->|method| 218ac412_6cde_a317_f690_1cf494737a0d
  de2cf2cd_e7ab_0f3f_d186_a0b96c9ae78a["testStringEchoNotAutoRead()"]
  130a2011_fe10_5ab5_ce82_632504cfd606 -->|method| de2cf2cd_e7ab_0f3f_d186_a0b96c9ae78a

Relationship Graph

Source Code

testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketStringEchoTest.java lines 41–210

public class SocketStringEchoTest extends AbstractSocketTest {

    static final Random random = new Random(3);
    static final String[] data = new String[1024];

    static {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < data.length; i ++) {
            sb.setLength(0);
            int eLen = random.nextInt(512);
            int j = 1;
            while (sb.length() < eLen) {
                sb.append(String.format("%03X/%x.", i, j++));
            }
            if (sb.length() > eLen) {
                sb.setLength(eLen);
            }
            data[i] = sb.toString();
        }
    }

    @Test
    @Timeout(value = 60000, unit = TimeUnit.MILLISECONDS)
    public void testStringEcho(TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testStringEcho(serverBootstrap, bootstrap);
            }
        });
    }

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

    @Test
    @Timeout(value = 60000, unit = TimeUnit.MILLISECONDS)
    public void testStringEchoNotAutoRead(TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testStringEchoNotAutoRead(serverBootstrap, bootstrap);
            }
        });
    }

    public void testStringEchoNotAutoRead(ServerBootstrap sb, Bootstrap cb) throws Throwable {
        testStringEcho(sb, cb, false);
    }

    private static void testStringEcho(ServerBootstrap sb, Bootstrap cb, boolean autoRead) throws Throwable {
        sb.childOption(ChannelOption.AUTO_READ, autoRead);
        cb.option(ChannelOption.AUTO_READ, autoRead);

        Promise<Void> serverDonePromise = ImmediateEventExecutor.INSTANCE.newPromise();
        Promise<Void> clientDonePromise = ImmediateEventExecutor.INSTANCE.newPromise();
        final StringEchoHandler sh = new StringEchoHandler(autoRead, serverDonePromise);
        final StringEchoHandler ch = new StringEchoHandler(autoRead, clientDonePromise);

        sb.childHandler(new ChannelInitializer<Channel>() {
            @Override
            public void initChannel(Channel sch) throws Exception {
                sch.pipeline().addLast("framer", new DelimiterBasedFrameDecoder(512, Delimiters.lineDelimiter()));
                sch.pipeline().addLast("decoder", new StringDecoder(CharsetUtil.ISO_8859_1));
                sch.pipeline().addBefore("decoder", "encoder", new StringEncoder(CharsetUtil.ISO_8859_1));
                sch.pipeline().addAfter("decoder", "handler", sh);
            }
        });

        cb.handler(new ChannelInitializer<Channel>() {
            @Override
            public void initChannel(Channel sch) throws Exception {
                sch.pipeline().addLast("framer", new DelimiterBasedFrameDecoder(512, Delimiters.lineDelimiter()));
                sch.pipeline().addLast("decoder", new StringDecoder(CharsetUtil.ISO_8859_1));
                sch.pipeline().addBefore("decoder", "encoder", new StringEncoder(CharsetUtil.ISO_8859_1));
                sch.pipeline().addAfter("decoder", "handler", ch);
            }
        });

        Channel sc = sb.bind().sync().channel();

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free