HttpObjectAggregatorTest Class — netty Architecture
Architecture documentation for the HttpObjectAggregatorTest class in HttpObjectAggregatorTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 32ca569a_2b67_1114_bbc8_cbf703c91b95["HttpObjectAggregatorTest"] 94b2d75a_c325_1868_32e3_692b8b667460["HttpObjectAggregatorTest.java"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|defined in| 94b2d75a_c325_1868_32e3_692b8b667460 84ea6286_ce88_84cf_2f0e_d7add8f4a4d9["testAggregate()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 84ea6286_ce88_84cf_2f0e_d7add8f4a4d9 289e67e4_9cfc_4a06_6bad_12c03f6651f2["checkContentBuffer()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 289e67e4_9cfc_4a06_6bad_12c03f6651f2 87e256f9_170c_799e_8d36_6963bfef5eb1["testAggregateWithTrailer()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 87e256f9_170c_799e_8d36_6963bfef5eb1 77091911_9ba2_becf_e89f_0fa1b61b0e23["testOversizedRequest()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 77091911_9ba2_becf_e89f_0fa1b61b0e23 fd9d88d3_6871_fab2_bb3f_a3da53993413["testOversizedRequestWithContentLengthAndDecoder()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| fd9d88d3_6871_fab2_bb3f_a3da53993413 74fa9a9e_5547_481f_cc41_e227342addd5["testOversizedRequestWithoutKeepAlive()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 74fa9a9e_5547_481f_cc41_e227342addd5 e23ca9e3_8fa9_d29f_1c74_6f186c512d14["testOversizedRequestWithContentLength()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| e23ca9e3_8fa9_d29f_1c74_6f186c512d14 3844a065_7276_ef08_d306_ec1b2cc87bed["checkOversizedRequest()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 3844a065_7276_ef08_d306_ec1b2cc87bed 6b3c607b_13cb_135d_4e47_27768799031e["serverShouldCloseConnection()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 6b3c607b_13cb_135d_4e47_27768799031e 5b4416f5_175e_1c4d_3014_ed7bd5269f81["testOversizedResponse()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 5b4416f5_175e_1c4d_3014_ed7bd5269f81 0cb88b3f_cdbe_2024_c05c_3dd1a62f5b3b["testInvalidConstructorUsage()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 0cb88b3f_cdbe_2024_c05c_3dd1a62f5b3b e385de3d_e71f_1bf7_d37a_8cc707815bc6["testInvalidMaxCumulationBufferComponents()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| e385de3d_e71f_1bf7_d37a_8cc707815bc6 4d2bb319_2794_8c4d_2cc6_d679f29a4ca9["testSetMaxCumulationBufferComponentsAfterInit()"] 32ca569a_2b67_1114_bbc8_cbf703c91b95 -->|method| 4d2bb319_2794_8c4d_2cc6_d679f29a4ca9
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/HttpObjectAggregatorTest.java lines 47–771
public class HttpObjectAggregatorTest {
@Test
public void testAggregate() {
HttpObjectAggregator aggr = new HttpObjectAggregator(1024 * 1024);
EmbeddedChannel embedder = new EmbeddedChannel(aggr);
HttpRequest message = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "http://localhost");
message.headers().set(of("X-Test"), true);
HttpContent chunk1 = new DefaultHttpContent(Unpooled.copiedBuffer("test", CharsetUtil.US_ASCII));
HttpContent chunk2 = new DefaultHttpContent(Unpooled.copiedBuffer("test2", CharsetUtil.US_ASCII));
HttpContent chunk3 = new DefaultLastHttpContent(Unpooled.EMPTY_BUFFER);
assertFalse(embedder.writeInbound(message));
assertFalse(embedder.writeInbound(chunk1));
assertFalse(embedder.writeInbound(chunk2));
// this should trigger a channelRead event so return true
assertTrue(embedder.writeInbound(chunk3));
assertTrue(embedder.finish());
FullHttpRequest aggregatedMessage = embedder.readInbound();
assertNotNull(aggregatedMessage);
assertEquals(chunk1.content().readableBytes() + chunk2.content().readableBytes(),
HttpUtil.getContentLength(aggregatedMessage));
assertEquals(Boolean.TRUE.toString(), aggregatedMessage.headers().get(of("X-Test")));
checkContentBuffer(aggregatedMessage);
assertNull(embedder.readInbound());
}
private static void checkContentBuffer(FullHttpRequest aggregatedMessage) {
CompositeByteBuf buffer = (CompositeByteBuf) aggregatedMessage.content();
assertEquals(2, buffer.numComponents());
List<ByteBuf> buffers = buffer.decompose(0, buffer.capacity());
assertEquals(2, buffers.size());
for (ByteBuf buf: buffers) {
// This should be false as we decompose the buffer before to not have deep hierarchy
assertFalse(buf instanceof CompositeByteBuf);
}
aggregatedMessage.release();
}
@Test
public void testAggregateWithTrailer() {
HttpObjectAggregator aggr = new HttpObjectAggregator(1024 * 1024);
EmbeddedChannel embedder = new EmbeddedChannel(aggr);
HttpRequest message = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "http://localhost");
message.headers().set(of("X-Test"), true);
HttpUtil.setTransferEncodingChunked(message, true);
HttpContent chunk1 = new DefaultHttpContent(Unpooled.copiedBuffer("test", CharsetUtil.US_ASCII));
HttpContent chunk2 = new DefaultHttpContent(Unpooled.copiedBuffer("test2", CharsetUtil.US_ASCII));
LastHttpContent trailer = new DefaultLastHttpContent();
trailer.trailingHeaders().set(of("X-Trailer"), true);
assertFalse(embedder.writeInbound(message));
assertFalse(embedder.writeInbound(chunk1));
assertFalse(embedder.writeInbound(chunk2));
// this should trigger a channelRead event so return true
assertTrue(embedder.writeInbound(trailer));
assertTrue(embedder.finish());
FullHttpRequest aggregatedMessage = embedder.readInbound();
assertNotNull(aggregatedMessage);
assertEquals(chunk1.content().readableBytes() + chunk2.content().readableBytes(),
HttpUtil.getContentLength(aggregatedMessage));
assertEquals(Boolean.TRUE.toString(), aggregatedMessage.headers().get(of("X-Test")));
assertEquals(Boolean.TRUE.toString(), aggregatedMessage.trailingHeaders().get(of("X-Trailer")));
checkContentBuffer(aggregatedMessage);
assertNull(embedder.readInbound());
}
@Test
public void testOversizedRequest() {
final EmbeddedChannel embedder = new EmbeddedChannel(new HttpObjectAggregator(4));
HttpRequest message = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.PUT, "http://localhost");
HttpContent chunk1 = new DefaultHttpContent(Unpooled.copiedBuffer("test", CharsetUtil.US_ASCII));
HttpContent chunk2 = new DefaultHttpContent(Unpooled.copiedBuffer("test2", CharsetUtil.US_ASCII));
final HttpContent chunk3 = LastHttpContent.EMPTY_LAST_CONTENT;
assertFalse(embedder.writeInbound(message));
assertFalse(embedder.writeInbound(chunk1));
Source
Frequently Asked Questions
What is the HttpObjectAggregatorTest class?
HttpObjectAggregatorTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpObjectAggregatorTest.java.
Where is HttpObjectAggregatorTest defined?
HttpObjectAggregatorTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/HttpObjectAggregatorTest.java at line 47.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free