AbstractSocketReuseFdTest Class — netty Architecture
Architecture documentation for the AbstractSocketReuseFdTest class in AbstractSocketReuseFdTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD ef82a39a_453d_e354_874d_2b0f5e0a02d5["AbstractSocketReuseFdTest"] 27781ab1_b241_2e7d_8861_817581c95ca8["AbstractSocketReuseFdTest.java"] ef82a39a_453d_e354_874d_2b0f5e0a02d5 -->|defined in| 27781ab1_b241_2e7d_8861_817581c95ca8 7f75f12e_642a_646c_57f5_e0b42233f083["SocketAddress()"] ef82a39a_453d_e354_874d_2b0f5e0a02d5 -->|method| 7f75f12e_642a_646c_57f5_e0b42233f083 f42b4f73_4a83_d229_a5fb_6a177a77738c["newFactories()"] ef82a39a_453d_e354_874d_2b0f5e0a02d5 -->|method| f42b4f73_4a83_d229_a5fb_6a177a77738c 39915c32_f6b3_9789_d46d_4adb17bdba3a["testReuseFd()"] ef82a39a_453d_e354_874d_2b0f5e0a02d5 -->|method| 39915c32_f6b3_9789_d46d_4adb17bdba3a
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/socket/AbstractSocketReuseFdTest.java lines 44–186
public abstract class AbstractSocketReuseFdTest extends AbstractSocketTest {
@Override
protected abstract SocketAddress newSocketAddress();
@Override
protected abstract List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories();
@Test
@Timeout(value = 60000, unit = TimeUnit.MILLISECONDS)
public void testReuseFd(TestInfo testInfo) throws Throwable {
run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
@Override
public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
testReuseFd(serverBootstrap, bootstrap);
}
});
}
public void testReuseFd(ServerBootstrap sb, Bootstrap cb) throws Throwable {
sb.childOption(ChannelOption.AUTO_READ, true);
cb.option(ChannelOption.AUTO_READ, true);
// Use a number which will typically not exceed /proc/sys/net/core/somaxconn (which is 128 on linux by default
// often).
int numChannels = 100;
final AtomicReference<Throwable> globalException = new AtomicReference<Throwable>();
final AtomicInteger serverRemaining = new AtomicInteger(numChannels);
final AtomicInteger clientRemaining = new AtomicInteger(numChannels);
final Promise<Void> serverDonePromise = ImmediateEventExecutor.INSTANCE.newPromise();
final Promise<Void> clientDonePromise = ImmediateEventExecutor.INSTANCE.newPromise();
sb.childHandler(new ChannelInitializer<Channel>() {
@Override
public void initChannel(Channel sch) {
ReuseFdHandler sh = new ReuseFdHandler(
false,
globalException,
serverRemaining,
serverDonePromise);
sch.pipeline().addLast("handler", sh);
}
});
cb.handler(new ChannelInitializer<Channel>() {
@Override
public void initChannel(Channel sch) {
ReuseFdHandler ch = new ReuseFdHandler(
true,
globalException,
clientRemaining,
clientDonePromise);
sch.pipeline().addLast("handler", ch);
}
});
ChannelFutureListener listener = future -> {
if (!future.isSuccess()) {
clientDonePromise.tryFailure(future.cause());
}
};
Channel sc = sb.bind().sync().channel();
for (int i = 0; i < numChannels; i++) {
cb.connect(sc.localAddress()).addListener(listener);
}
clientDonePromise.sync();
serverDonePromise.sync();
sc.close().sync();
if (globalException.get() != null && !(globalException.get() instanceof IOException)) {
throw globalException.get();
}
}
static class ReuseFdHandler extends ChannelInboundHandlerAdapter {
private static final String EXPECTED_PAYLOAD = "payload";
private final Promise<Void> donePromise;
private final AtomicInteger remaining;
private final boolean client;
Defined In
Source
Frequently Asked Questions
What is the AbstractSocketReuseFdTest class?
AbstractSocketReuseFdTest is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/AbstractSocketReuseFdTest.java.
Where is AbstractSocketReuseFdTest defined?
AbstractSocketReuseFdTest is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/AbstractSocketReuseFdTest.java at line 44.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free