Home / Class/ SocketSslClientRenegotiateTest Class — netty Architecture

SocketSslClientRenegotiateTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  7705e7ae_e3a1_f466_3809_922b706a3f4f["SocketSslClientRenegotiateTest"]
  500bc459_e062_3134_53ae_67c8ad4b6bba["SocketSslClientRenegotiateTest.java"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|defined in| 500bc459_e062_3134_53ae_67c8ad4b6bba
  7f566563_59b0_b6e3_785b_3ff6b58d0b4d["openSslNotAvailable()"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|method| 7f566563_59b0_b6e3_785b_3ff6b58d0b4d
  873da6a4_560c_bfeb_3703_115a50d441c2["data()"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|method| 873da6a4_560c_bfeb_3703_115a50d441c2
  bcbd04f8_1173_db09_d4b6_aa4078cb4925["testSslRenegotiationRejected()"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|method| bcbd04f8_1173_db09_d4b6_aa4078cb4925
  69955c8a_22d3_f97e_4ec3_1c0c3ef5520e["SslHandler()"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|method| 69955c8a_22d3_f97e_4ec3_1c0c3ef5520e
  11e8b493_20bc_c0cc_00a3_e69d2cfb7c7a["reset()"]
  7705e7ae_e3a1_f466_3809_922b706a3f4f -->|method| 11e8b493_20bc_c0cc_00a3_e69d2cfb7c7a

Relationship Graph

Source Code

testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslClientRenegotiateTest.java lines 63–268

public class SocketSslClientRenegotiateTest extends AbstractSocketTest {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(
            SocketSslClientRenegotiateTest.class);
    private static final File CERT_FILE;
    private static final File KEY_FILE;

    static {
        try {
            X509Bundle cert = new CertificateBuilder()
                    .subject("cn=localhost")
                    .setIsCertificateAuthority(true)
                    .buildSelfSigned();
            CERT_FILE = cert.toTempCertChainPem();
            KEY_FILE = cert.toTempPrivateKeyPem();
        } catch (Exception e) {
            throw new ExceptionInInitializerError(e);
        }
    }

    private static boolean openSslNotAvailable() {
        return !OpenSsl.isAvailable();
    }

    public static Collection<Object[]> data() throws Exception {
        List<SslContext> serverContexts = new ArrayList<SslContext>();
        List<SslContext> clientContexts = new ArrayList<SslContext>();
        clientContexts.add(new JdkSslClientContext(CERT_FILE));

        boolean hasOpenSsl = OpenSsl.isAvailable();
        if (hasOpenSsl) {
            OpenSslServerContext context = new OpenSslServerContext(CERT_FILE, KEY_FILE);
            serverContexts.add(context);
        } else {
            logger.warn("OpenSSL is unavailable and thus will not be tested.", OpenSsl.unavailabilityCause());
        }

        List<Object[]> params = new ArrayList<Object[]>();
        for (SslContext sc: serverContexts) {
            for (SslContext cc: clientContexts) {
                for (int i = 0; i < 32; i++) {
                    params.add(new Object[] { sc, cc, true});
                    params.add(new Object[] { sc, cc, false});
                }
            }
        }

        return params;
    }

    private final AtomicReference<Throwable> clientException = new AtomicReference<Throwable>();
    private final AtomicReference<Throwable> serverException = new AtomicReference<Throwable>();

    private volatile Channel clientChannel;
    private volatile Channel serverChannel;

    private volatile SslHandler clientSslHandler;
    private volatile SslHandler serverSslHandler;

    private final TestHandler clientHandler = new TestHandler(clientException);

    private final TestHandler serverHandler = new TestHandler(serverException);

    @DisabledIf("openSslNotAvailable")
    @ParameterizedTest(name = "{index}: serverEngine = {0}, clientEngine = {1}, delegate = {2}")
    @MethodSource("data")
    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
    public void testSslRenegotiationRejected(final SslContext serverCtx, final SslContext clientCtx,
                                             final boolean delegate, TestInfo testInfo) throws Throwable {
        assumeTrue(OpenSsl.isRenegotiationSupported());
        assumeTrue(OpenSsl.isAvailable());
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testSslRenegotiationRejected(sb, cb, serverCtx, clientCtx, delegate);
            }
        });
    }

    private static SslHandler newSslHandler(SslContext sslCtx, ByteBufAllocator allocator, Executor executor) {
        if (executor == null) {
            return sslCtx.newHandler(allocator);

Frequently Asked Questions

What is the SocketSslClientRenegotiateTest class?
SocketSslClientRenegotiateTest is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslClientRenegotiateTest.java.
Where is SocketSslClientRenegotiateTest defined?
SocketSslClientRenegotiateTest is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslClientRenegotiateTest.java at line 63.

Analyze Your Own Codebase

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

Try Supermodel Free