Home / Class/ QuicCodecBuilderTest Class — netty Architecture

QuicCodecBuilderTest Class — netty Architecture

Architecture documentation for the QuicCodecBuilderTest class in QuicCodecBuilderTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  416e32e4_dbcd_8989_54b4_0cb0b8589250["QuicCodecBuilderTest"]
  b1f3dbc4_687e_7df5_da20_dd23837ba9b3["QuicCodecBuilderTest.java"]
  416e32e4_dbcd_8989_54b4_0cb0b8589250 -->|defined in| b1f3dbc4_687e_7df5_da20_dd23837ba9b3
  9ef9faf3_0496_77b6_4a52_9d8f9c0b2949["testCopyConstructor()"]
  416e32e4_dbcd_8989_54b4_0cb0b8589250 -->|method| 9ef9faf3_0496_77b6_4a52_9d8f9c0b2949
  70e8a170_8afb_72e2_080a_ea1e09c2b511["init()"]
  416e32e4_dbcd_8989_54b4_0cb0b8589250 -->|method| 70e8a170_8afb_72e2_080a_ea1e09c2b511
  7dc1fcbb_f0df_7bcc_308e_c16a55694d91["modifyField()"]
  416e32e4_dbcd_8989_54b4_0cb0b8589250 -->|method| 7dc1fcbb_f0df_7bcc_308e_c16a55694d91

Relationship Graph

Source Code

codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicCodecBuilderTest.java lines 28–100

class QuicCodecBuilderTest {

    @Test
    void testCopyConstructor() throws IllegalAccessException {
        TestQuicCodecBuilder original = new TestQuicCodecBuilder();
        init(original);
        TestQuicCodecBuilder copy = new TestQuicCodecBuilder(original);
        assertThat(copy).usingRecursiveComparison().isEqualTo(original);
    }

    private static void init(TestQuicCodecBuilder builder) throws IllegalAccessException {
        Field[] fields = builder.getClass().getSuperclass().getDeclaredFields();
        for (Field field : fields) {
            modifyField(builder, field);
        }
    }

    private static void modifyField(TestQuicCodecBuilder builder, Field field) throws IllegalAccessException {
        field.setAccessible(true);
        Class<?> clazz = field.getType();
        if (Boolean.class == clazz) {
            field.set(builder, Boolean.TRUE);
        } else if (Integer.class == clazz) {
            field.set(builder, Integer.MIN_VALUE);
        } else if (Long.class == clazz) {
            field.set(builder, Long.MIN_VALUE);
        } else if (QuicCongestionControlAlgorithm.class == clazz) {
            field.set(builder, QuicCongestionControlAlgorithm.CUBIC);
        } else if (FlushStrategy.class == clazz) {
            field.set(builder, FlushStrategy.afterNumBytes(10));
        } else if (Function.class == clazz) {
            field.set(builder, Function.identity());
        } else if (boolean.class == clazz) {
            field.setBoolean(builder, true);
        } else if (int.class == clazz) {
            field.setInt(builder, -1);
        } else if (byte[].class == clazz) {
            field.set(builder, new byte[16]);
        } else if (Executor.class == clazz) {
            field.set(builder, ImmediateExecutor.INSTANCE);
        } else {
            throw new IllegalArgumentException("Unknown field type " + clazz);
        }
    }

    private static final class TestQuicCodecBuilder extends QuicCodecBuilder<TestQuicCodecBuilder> {

        TestQuicCodecBuilder() {
            super(true);
        }

        TestQuicCodecBuilder(TestQuicCodecBuilder builder) {
            super(builder);
        }

        @Override
        public TestQuicCodecBuilder clone() {
            // no-op
            return null;
        }

        @Override
        protected ChannelHandler build(
                QuicheConfig config,
                Function<QuicChannel, ? extends QuicSslEngine> sslContextProvider,
                Executor sslTaskExecutor,
                int localConnIdLength,
                FlushStrategy flushStrategy) {
            // no-op
            return null;
        }
    }
}

Frequently Asked Questions

What is the QuicCodecBuilderTest class?
QuicCodecBuilderTest is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicCodecBuilderTest.java.
Where is QuicCodecBuilderTest defined?
QuicCodecBuilderTest is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicCodecBuilderTest.java at line 28.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free