MessageAggregatorTest Class — netty Architecture
Architecture documentation for the MessageAggregatorTest class in MessageAggregatorTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD bc4d585e_177f_3839_a8b4_bd1e1daabdff["MessageAggregatorTest"] 47ce9a5c_f145_4bb9_058a_2bd376c6f8aa["MessageAggregatorTest.java"] bc4d585e_177f_3839_a8b4_bd1e1daabdff -->|defined in| 47ce9a5c_f145_4bb9_058a_2bd376c6f8aa e402e85a_9d96_65bf_a8c9_822429eecaca["ByteBufHolder()"] bc4d585e_177f_3839_a8b4_bd1e1daabdff -->|method| e402e85a_9d96_65bf_a8c9_822429eecaca ae1fef7f_bd3e_d252_c9ee_681ba697560b["testReadFlowManagement()"] bc4d585e_177f_3839_a8b4_bd1e1daabdff -->|method| ae1fef7f_bd3e_d252_c9ee_681ba697560b adbc63eb_c346_8c90_2bb6_a167bc89fec1["testCloseWhileAggregating()"] bc4d585e_177f_3839_a8b4_bd1e1daabdff -->|method| adbc63eb_c346_8c90_2bb6_a167bc89fec1
Relationship Graph
Source Code
codec-base/src/test/java/io/netty/handler/codec/MessageAggregatorTest.java lines 37–137
public class MessageAggregatorTest {
private static final class ReadCounter extends ChannelOutboundHandlerAdapter {
int value;
@Override
public void read(ChannelHandlerContext ctx) throws Exception {
value++;
ctx.read();
}
}
abstract static class MockMessageAggregator
extends MessageAggregator<ByteBufHolder, ByteBufHolder, ByteBufHolder, ByteBufHolder> {
protected MockMessageAggregator() {
super(1024);
}
@Override
protected ByteBufHolder beginAggregation(ByteBufHolder start, ByteBuf content) throws Exception {
return start.replace(content);
}
}
private static ByteBufHolder message(String string) {
return new DefaultByteBufHolder(
Unpooled.copiedBuffer(string, CharsetUtil.US_ASCII));
}
@Test
public void testReadFlowManagement() throws Exception {
ReadCounter counter = new ReadCounter();
ByteBufHolder first = message("first");
ByteBufHolder chunk = message("chunk");
ByteBufHolder last = message("last");
MockMessageAggregator agg = spy(MockMessageAggregator.class);
when(agg.isStartMessage(first)).thenReturn(true);
when(agg.isContentMessage(chunk)).thenReturn(true);
when(agg.isContentMessage(last)).thenReturn(true);
when(agg.isLastContentMessage(last)).thenReturn(true);
EmbeddedChannel embedded = new EmbeddedChannel(counter, agg);
embedded.config().setAutoRead(false);
assertFalse(embedded.writeInbound(first));
assertFalse(embedded.writeInbound(chunk));
assertTrue(embedded.writeInbound(last));
assertEquals(3, counter.value); // 2 reads issued from MockMessageAggregator
// 1 read issued from EmbeddedChannel constructor
ByteBufHolder all = new DefaultByteBufHolder(Unpooled.wrappedBuffer(
first.content().retain(), chunk.content().retain(), last.content().retain()));
ByteBufHolder out = embedded.readInbound();
assertEquals(all, out);
assertTrue(all.release() && out.release());
assertFalse(embedded.finish());
}
@Test
public void testCloseWhileAggregating() throws Exception {
ReadCounter counter = new ReadCounter();
ByteBufHolder first = new TestMessage(Unpooled.copiedBuffer("first", CharsetUtil.US_ASCII));
MockMessageAggregator agg = spy(MockMessageAggregator.class);
when(agg.isStartMessage(first)).thenReturn(true);
when(agg.isLastContentMessage(first)).thenReturn(false);
final EmbeddedChannel embedded = new EmbeddedChannel(counter, agg);
embedded.config().setAutoRead(false);
assertFalse(embedded.writeInbound(first));
assertEquals(2, counter.value);
assertThrows(PrematureChannelClosureException.class, new Executable() {
@Override
public void execute() {
embedded.finish();
}
Source
Frequently Asked Questions
What is the MessageAggregatorTest class?
MessageAggregatorTest is a class in the netty codebase, defined in codec-base/src/test/java/io/netty/handler/codec/MessageAggregatorTest.java.
Where is MessageAggregatorTest defined?
MessageAggregatorTest is defined in codec-base/src/test/java/io/netty/handler/codec/MessageAggregatorTest.java at line 37.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free