Http3PushStreamTest Class — netty Architecture
Architecture documentation for the Http3PushStreamTest class in Http3PushStreamTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD c9142e7f_8050_3c0d_eeaf_c4c0175b89af["Http3PushStreamTest"] d7438111_b735_1815_cf74_2a0b3c67130c["Http3PushStreamTest.java"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|defined in| d7438111_b735_1815_cf74_2a0b3c67130c 73e4df66_8362_81ed_8adc_d0918302d077["setUp()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 73e4df66_8362_81ed_8adc_d0918302d077 cc1c317d_899e_e137_25d9_7446a1048d17["sendMaxPushId()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| cc1c317d_899e_e137_25d9_7446a1048d17 e9610d76_49ed_122b_2d2c_502a938150d9["tearDown()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| e9610d76_49ed_122b_2d2c_502a938150d9 bc2b69cf_4a2e_02e2_8b42_ab23aadd4534["headersData()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| bc2b69cf_4a2e_02e2_8b42_ab23aadd4534 85f8f9a6_213c_d72e_bb67_c7f81c508dcb["headersDataTrailers()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 85f8f9a6_213c_d72e_bb67_c7f81c508dcb cbf37ada_81cd_cb66_87d1_fc732f650b46["pushPromise()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| cbf37ada_81cd_cb66_87d1_fc732f650b46 2d2f84cb_32f3_7326_9ed2_f541afd2fcfa["invalidPushId()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 2d2f84cb_32f3_7326_9ed2_f541afd2fcfa c1c5ba3d_d9b9_bdbe_1b58_de482403b835["updateMaxPushId()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| c1c5ba3d_d9b9_bdbe_1b58_de482403b835 b66e6737_5bd5_a43a_a185_c4b2f1c65757["testWriteAndReadFrames()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| b66e6737_5bd5_a43a_a185_c4b2f1c65757 8f66e270_3563_8590_fe00_1d051c519372["writeAndReadFrame()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 8f66e270_3563_8590_fe00_1d051c519372 e1ccc8a0_0890_2eda_d8c1_d41cd53f8681["DefaultHttp3DataFrame()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| e1ccc8a0_0890_2eda_d8c1_d41cd53f8681 c5f554a0_3682_33df_b918_401b78ae67bf["EmbeddedQuicStreamChannel()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| c5f554a0_3682_33df_b918_401b78ae67bf 0654ff42_1bd5_af9f_fb17_fdeebda47217["ByteBuf()"] c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 0654ff42_1bd5_af9f_fb17_fdeebda47217
Relationship Graph
Source Code
codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java lines 42–214
public class Http3PushStreamTest {
private Http3ServerConnectionHandler serverConnectionHandler;
private EmbeddedQuicChannel serverChannel;
private Http3ServerPushStreamManager pushStreamManager;
private Http3ClientConnectionHandler clientConnectionHandler;
private EmbeddedQuicChannel clientChannel;
private int maxPushId;
private ChannelHandlerContext serverControlStreamHandlerCtx;
private EmbeddedQuicStreamChannel serverLocalControlStream;
private EmbeddedQuicStreamChannel clientLocalControlStream;
@BeforeEach
public void setUp() throws Exception {
serverConnectionHandler = new Http3ServerConnectionHandler(new ChannelDuplexHandler(), null, null, null, true);
serverChannel = new EmbeddedQuicChannel(true, serverConnectionHandler);
serverLocalControlStream = (EmbeddedQuicStreamChannel) Http3.getLocalControlStream(serverChannel);
assertNotNull(serverLocalControlStream);
serverControlStreamHandlerCtx = mock(ChannelHandlerContext.class);
when(serverControlStreamHandlerCtx.channel()).thenReturn(serverLocalControlStream);
serverConnectionHandler.localControlStreamHandler.channelRead(serverControlStreamHandlerCtx,
new DefaultHttp3SettingsFrame());
pushStreamManager = new Http3ServerPushStreamManager(serverChannel);
clientConnectionHandler = new Http3ClientConnectionHandler(null, null, null, null, true);
clientChannel = new EmbeddedQuicChannel(false, clientConnectionHandler);
clientLocalControlStream = (EmbeddedQuicStreamChannel) Http3.getLocalControlStream(clientChannel);
assertNotNull(clientLocalControlStream);
assertTrue(serverLocalControlStream.releaseOutbound());
assertTrue(clientLocalControlStream.releaseOutbound());
maxPushId = 0; // allow 1 push
sendMaxPushId(maxPushId);
}
private void sendMaxPushId(int maxPushId) throws QpackException {
final DefaultHttp3MaxPushIdFrame maxPushIdFrame = new DefaultHttp3MaxPushIdFrame(maxPushId);
serverConnectionHandler.localControlStreamHandler.channelRead(serverControlStreamHandlerCtx, maxPushIdFrame);
assertTrue(serverChannel.isActive());
clientLocalControlStream.writeAndFlush(maxPushIdFrame).addListener(CLOSE_ON_FAILURE);
assertTrue(clientChannel.isActive());
assertTrue(clientLocalControlStream.releaseOutbound());
}
@AfterEach
public void tearDown() {
assertFalse(serverLocalControlStream.finish());
assertFalse(serverChannel.finish());
assertFalse(clientLocalControlStream.finish());
assertFalse(clientChannel.finish());
}
@Test
public void headersData() throws Exception {
testWriteAndReadFrames(Http3TestUtils.newHeadersFrameWithPseudoHeaders(), newDataFrame());
}
@Test
public void headersDataTrailers() throws Exception {
testWriteAndReadFrames(Http3TestUtils.newHeadersFrameWithPseudoHeaders(), newDataFrame(),
new DefaultHttp3HeadersFrame());
}
@Test
public void pushPromise() throws Exception {
final EmbeddedQuicStreamChannel serverStream = newServerStream();
readStreamHeader(serverStream).release();
try {
assertThrows(Http3Exception.class, () -> serverStream.writeOutbound(new DefaultHttp3PushPromiseFrame(1)));
} finally {
assertFalse(serverStream.finish());
}
}
@Test
public void invalidPushId() throws Exception {
final EmbeddedQuicStreamChannel serverStream =
(EmbeddedQuicStreamChannel) serverChannel.createStream(UNIDIRECTIONAL,
new Http3PushStreamServerInitializer(maxPushId + 1) {
@Override
Source
Frequently Asked Questions
What is the Http3PushStreamTest class?
Http3PushStreamTest is a class in the netty codebase, defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java.
Where is Http3PushStreamTest defined?
Http3PushStreamTest is defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java at line 42.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free