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();
Source
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