QuicStreamFrameTest Class — netty Architecture
Architecture documentation for the QuicStreamFrameTest class in QuicStreamFrameTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1b8808c2_77d6_7455_836f_569e62842ec3["QuicStreamFrameTest"] 893fba38_068a_e633_3ac3_b01e62e27f16["QuicStreamFrameTest.java"] 1b8808c2_77d6_7455_836f_569e62842ec3 -->|defined in| 893fba38_068a_e633_3ac3_b01e62e27f16 8a583cf1_c208_9baa_4bb7_47217be4f8c2["testCloseHalfClosureUnidirectional()"] 1b8808c2_77d6_7455_836f_569e62842ec3 -->|method| 8a583cf1_c208_9baa_4bb7_47217be4f8c2 f71723e7_7ec9_fba3_9516_bfe00b12a9ec["testCloseHalfClosureBidirectional()"] 1b8808c2_77d6_7455_836f_569e62842ec3 -->|method| f71723e7_7ec9_fba3_9516_bfe00b12a9ec f94a8858_193b_14f6_d8b0_3e3fd07aa73d["testCloseHalfClosure()"] 1b8808c2_77d6_7455_836f_569e62842ec3 -->|method| f94a8858_193b_14f6_d8b0_3e3fd07aa73d
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamFrameTest.java lines 34–144
public class QuicStreamFrameTest extends AbstractQuicTest {
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testCloseHalfClosureUnidirectional(Executor executor) throws Throwable {
testCloseHalfClosure(executor, QuicStreamType.UNIDIRECTIONAL);
}
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testCloseHalfClosureBidirectional(Executor executor) throws Throwable {
testCloseHalfClosure(executor, QuicStreamType.BIDIRECTIONAL);
}
private static void testCloseHalfClosure(Executor executor, QuicStreamType type) throws Throwable {
Channel server = null;
Channel channel = null;
QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler();
QuicChannelValidationHandler clientHandler = new StreamCreationHandler(type);
try {
StreamHandler handler = new StreamHandler();
server = QuicTestUtils.newServer(executor, serverHandler, handler);
channel = QuicTestUtils.newClient(executor);
QuicChannel quicChannel = QuicTestUtils.newQuicChannelBootstrap(channel)
.handler(clientHandler)
.streamHandler(new ChannelInboundHandlerAdapter())
.remoteAddress(server.localAddress())
.connect()
.get();
handler.assertSequence();
quicChannel.closeFuture().sync();
serverHandler.assertState();
clientHandler.assertState();
} finally {
QuicTestUtils.closeIfNotNull(channel);
QuicTestUtils.closeIfNotNull(server);
shutdown(executor);
}
}
private static final class StreamCreationHandler extends QuicChannelValidationHandler {
private final QuicStreamType type;
StreamCreationHandler(QuicStreamType type) {
this.type = type;
}
@Override
public void channelActive(ChannelHandlerContext ctx) {
super.channelActive(ctx);
QuicChannel channel = (QuicChannel) ctx.channel();
channel.createStream(type, new ChannelInboundHandlerAdapter() {
@Override
public void channelActive(ChannelHandlerContext ctx) {
// Do the write and close the channel
ctx.writeAndFlush(Unpooled.buffer().writeZero(8))
.addListener(QuicStreamChannel.SHUTDOWN_OUTPUT);
}
});
}
}
private static final class StreamHandler extends ChannelInboundHandlerAdapter {
private final BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();
@Override
public void channelRegistered(ChannelHandlerContext ctx) {
ctx.channel().config().setOption(QuicChannelOption.READ_FRAMES, true);
queue.add(0);
}
@Override
public void channelInactive(ChannelHandlerContext ctx) {
queue.add(3);
// Close the QUIC channel as well.
ctx.channel().parent().close();
}
Source
Frequently Asked Questions
What is the QuicStreamFrameTest class?
QuicStreamFrameTest is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamFrameTest.java.
Where is QuicStreamFrameTest defined?
QuicStreamFrameTest is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamFrameTest.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free