QuicWritableTest Class — netty Architecture
Architecture documentation for the QuicWritableTest class in QuicWritableTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD fc9631ee_db80_8adf_d64a_56d79928a459["QuicWritableTest"] ac214196_995d_ae80_80e5_71f65055f43c["QuicWritableTest.java"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|defined in| ac214196_995d_ae80_80e5_71f65055f43c ba22eed2_5690_df55_0f36_796f45fdb738["testCorrectlyHandleWritabilityReadRequestedInReadComplete()"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|method| ba22eed2_5690_df55_0f36_796f45fdb738 f023f3e2_ce2a_f343_d584_aa1d9f4d93ec["testCorrectlyHandleWritabilityReadRequestedInRead()"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|method| f023f3e2_ce2a_f343_d584_aa1d9f4d93ec 0c51c71a_ccea_b11c_6bb1_4bc55ad9ae2e["testCorrectlyHandleWritability()"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|method| 0c51c71a_ccea_b11c_6bb1_4bc55ad9ae2e cf1215e8_a6f1_5c7d_7fc8_7ee2f18a90d4["testBytesUntilUnwritable()"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|method| cf1215e8_a6f1_5c7d_7fc8_7ee2f18a90d4 eb3e5605_b19c_e126_0e8a_d4feca0d1a1d["throwIfNotNull()"] fc9631ee_db80_8adf_d64a_56d79928a459 -->|method| eb3e5605_b19c_e126_0e8a_d4feca0d1a1d
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicWritableTest.java lines 41–301
public class QuicWritableTest extends AbstractQuicTest {
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testCorrectlyHandleWritabilityReadRequestedInReadComplete(Executor executor) throws Throwable {
testCorrectlyHandleWritability(executor, true);
}
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testCorrectlyHandleWritabilityReadRequestedInRead(Executor executor) throws Throwable {
testCorrectlyHandleWritability(executor, false);
}
private static void testCorrectlyHandleWritability(Executor executor, boolean readInComplete) throws Throwable {
int bufferSize = 64 * 1024;
Promise<Void> writePromise = ImmediateEventExecutor.INSTANCE.newPromise();
final AtomicReference<Throwable> serverErrorRef = new AtomicReference<>();
final AtomicReference<Throwable> clientErrorRef = new AtomicReference<>();
QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler();
Channel server = QuicTestUtils.newServer(
QuicTestUtils.newQuicServerBuilder(executor).initialMaxStreamsBidirectional(5000),
InsecureQuicTokenHandler.INSTANCE,
serverHandler, new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ByteBuf buffer = (ByteBuf) msg;
buffer.release();
ctx.writeAndFlush(ctx.alloc().buffer(bufferSize).writeZero(bufferSize))
.addListener(new PromiseNotifier<>(writePromise));
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
serverErrorRef.set(cause);
}
@Override
public boolean isSharable() {
return true;
}
});
InetSocketAddress address = (InetSocketAddress) server.localAddress();
Channel channel = QuicTestUtils.newClient(QuicTestUtils.newQuicClientBuilder(executor)
.initialMaxStreamDataBidirectionalLocal(bufferSize / 4));
QuicChannelValidationHandler clientHandler = new QuicChannelValidationHandler();
try {
QuicChannel quicChannel = QuicTestUtils.newQuicChannelBootstrap(channel)
.handler(clientHandler)
.streamHandler(new ChannelInboundHandlerAdapter())
.remoteAddress(address)
.connect()
.get();
QuicStreamChannel stream = quicChannel.createStream(
QuicStreamType.BIDIRECTIONAL, new ChannelInboundHandlerAdapter() {
int bytes;
@Override
public void channelRegistered(ChannelHandlerContext ctx) {
ctx.channel().config().setAutoRead(false);
}
@Override
public void channelActive(ChannelHandlerContext ctx) {
ctx.writeAndFlush(ctx.alloc().buffer(8).writeLong(8));
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (bytes == 0) {
// First read
assertFalse(writePromise.isDone());
}
ByteBuf buffer = (ByteBuf) msg;
bytes += buffer.readableBytes();
buffer.release();
if (bytes == bufferSize) {
ctx.close();
assertTrue(writePromise.isDone());
Source
Frequently Asked Questions
What is the QuicWritableTest class?
QuicWritableTest is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicWritableTest.java.
Where is QuicWritableTest defined?
QuicWritableTest is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicWritableTest.java at line 41.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free