QuicStreamHalfClosureTest Class — netty Architecture
Architecture documentation for the QuicStreamHalfClosureTest class in QuicStreamHalfClosureTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 74da7f13_e648_eea1_8a41_2ba6ed95fec0["QuicStreamHalfClosureTest"] ca5f6d82_99cb_9d45_006a_7771dc542641["QuicStreamHalfClosureTest.java"] 74da7f13_e648_eea1_8a41_2ba6ed95fec0 -->|defined in| ca5f6d82_99cb_9d45_006a_7771dc542641 b8ad16f2_1f0b_aefe_2c5a_eba661ce1456["testCloseHalfClosureUnidirectional()"] 74da7f13_e648_eea1_8a41_2ba6ed95fec0 -->|method| b8ad16f2_1f0b_aefe_2c5a_eba661ce1456 e3af2626_1242_071e_e31a_b250747d593a["testCloseHalfClosureBidirectional()"] 74da7f13_e648_eea1_8a41_2ba6ed95fec0 -->|method| e3af2626_1242_071e_e31a_b250747d593a a3bd69f5_7513_bb37_ef4b_8eebd8266f8e["testCloseHalfClosure()"] 74da7f13_e648_eea1_8a41_2ba6ed95fec0 -->|method| a3bd69f5_7513_bb37_ef4b_8eebd8266f8e
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java lines 36–156
public class QuicStreamHalfClosureTest 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(ChannelFutureListener.CLOSE);
}
});
}
}
private static final class StreamHandler extends ChannelInboundHandlerAdapter {
private final BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();
@Override
public void channelRegistered(ChannelHandlerContext ctx) {
queue.add(0);
}
@Override
public void channelInactive(ChannelHandlerContext ctx) {
queue.add(5);
// Close the QUIC channel as well.
ctx.channel().parent().close();
}
@Override
Defined In
Source
Frequently Asked Questions
What is the QuicStreamHalfClosureTest class?
QuicStreamHalfClosureTest is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java.
Where is QuicStreamHalfClosureTest defined?
QuicStreamHalfClosureTest is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java at line 36.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free