testConcurrentAddRemove() — netty Function Reference
Architecture documentation for the testConcurrentAddRemove() function in LocalTransportThreadModelTest3.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 364f868b_2802_fe3b_5533_83572757fe40["testConcurrentAddRemove()"] f86ec9f6_ad3f_1246_2bcb_3e0c74480849["LocalTransportThreadModelTest3"] 364f868b_2802_fe3b_5533_83572757fe40 -->|defined in| f86ec9f6_ad3f_1246_2bcb_3e0c74480849 b0cc291c_461c_e05c_f2bf_3ff94d6469ff["testConcurrentAddRemoveInboundEvents()"] b0cc291c_461c_e05c_f2bf_3ff94d6469ff -->|calls| 364f868b_2802_fe3b_5533_83572757fe40 d7140350_8361_fc0e_c145_b07f4959808a["testConcurrentAddRemoveOutboundEvents()"] d7140350_8361_fc0e_c145_b07f4959808a -->|calls| 364f868b_2802_fe3b_5533_83572757fe40 8af1d2e1_a016_ae28_75f4_fba79d5b6081["EventRecorder()"] 364f868b_2802_fe3b_5533_83572757fe40 -->|calls| 8af1d2e1_a016_ae28_75f4_fba79d5b6081 3040527d_343e_e75c_3640_cf84c1de7f83["events()"] 364f868b_2802_fe3b_5533_83572757fe40 -->|calls| 3040527d_343e_e75c_3640_cf84c1de7f83 3e7e70cd_b9a9_6214_db90_2c2453ec3ae0["write()"] 364f868b_2802_fe3b_5533_83572757fe40 -->|calls| 3e7e70cd_b9a9_6214_db90_2c2453ec3ae0 04057a49_40b7_855f_2a43_696c78303b47["read()"] 364f868b_2802_fe3b_5533_83572757fe40 -->|calls| 04057a49_40b7_855f_2a43_696c78303b47 style 364f868b_2802_fe3b_5533_83572757fe40 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest3.java lines 127–243
private static void testConcurrentAddRemove(boolean inbound) throws Exception {
EventLoopGroup l = new MultiThreadIoEventLoopGroup(
4, new DefaultThreadFactory("l"), LocalIoHandler.newFactory());
EventExecutorGroup e1 = new DefaultEventExecutorGroup(4, new DefaultThreadFactory("e1"));
EventExecutorGroup e2 = new DefaultEventExecutorGroup(4, new DefaultThreadFactory("e2"));
EventExecutorGroup e3 = new DefaultEventExecutorGroup(4, new DefaultThreadFactory("e3"));
EventExecutorGroup e4 = new DefaultEventExecutorGroup(4, new DefaultThreadFactory("e4"));
EventExecutorGroup e5 = new DefaultEventExecutorGroup(4, new DefaultThreadFactory("e5"));
final EventExecutorGroup[] groups = {e1, e2, e3, e4, e5};
try {
Deque<EventType> events = new ConcurrentLinkedDeque<EventType>();
final EventForwarder h1 = new EventForwarder();
final EventForwarder h2 = new EventForwarder();
final EventForwarder h3 = new EventForwarder();
final EventForwarder h4 = new EventForwarder();
final EventForwarder h5 = new EventForwarder();
final EventRecorder h6 = new EventRecorder(events, inbound);
final Channel ch = new LocalChannel();
if (!inbound) {
ch.config().setAutoRead(false);
}
ch.pipeline().addLast(e1, h1)
.addLast(e1, h2)
.addLast(e1, h3)
.addLast(e1, h4)
.addLast(e1, h5)
.addLast(e1, "recorder", h6);
l.register(ch).sync().channel().connect(localAddr).sync();
final LinkedList<EventType> expectedEvents = events(inbound, 8192);
Throwable cause = new Throwable();
Thread pipelineModifier = new Thread(new Runnable() {
@Override
public void run() {
Random random = new Random();
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
return;
}
if (!ch.isRegistered()) {
continue;
}
//EventForwardHandler forwardHandler = forwarders[random.nextInt(forwarders.length)];
ChannelHandler handler = ch.pipeline().removeFirst();
ch.pipeline().addBefore(groups[random.nextInt(groups.length)], "recorder",
UUID.randomUUID().toString(), handler);
}
}
});
pipelineModifier.setDaemon(true);
pipelineModifier.start();
for (EventType event: expectedEvents) {
switch (event) {
case EXCEPTION_CAUGHT:
ch.pipeline().fireExceptionCaught(cause);
break;
case MESSAGE_RECEIVED:
ch.pipeline().fireChannelRead("");
break;
case MESSAGE_RECEIVED_LAST:
ch.pipeline().fireChannelReadComplete();
break;
case USER_EVENT:
ch.pipeline().fireUserEventTriggered("");
break;
case WRITE:
ch.pipeline().write("");
break;
case READ:
ch.pipeline().read();
break;
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does testConcurrentAddRemove() do?
testConcurrentAddRemove() is a function in the netty codebase, defined in transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest3.java.
Where is testConcurrentAddRemove() defined?
testConcurrentAddRemove() is defined in transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest3.java at line 127.
What does testConcurrentAddRemove() call?
testConcurrentAddRemove() calls 4 function(s): EventRecorder, events, read, write.
What calls testConcurrentAddRemove()?
testConcurrentAddRemove() is called by 2 function(s): testConcurrentAddRemoveInboundEvents, testConcurrentAddRemoveOutboundEvents.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free