Home / Class/ SocketSslGreetingTest Class — netty Architecture

SocketSslGreetingTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  0d8d21bd_73fc_7280_239e_74797713c184["SocketSslGreetingTest"]
  4fe0c873_7a28_068c_869b_b9cc2be31bae["SocketSslGreetingTest.java"]
  0d8d21bd_73fc_7280_239e_74797713c184 -->|defined in| 4fe0c873_7a28_068c_869b_b9cc2be31bae
  3e3065e0_f447_7086_5d10_a7d45e42236d["data()"]
  0d8d21bd_73fc_7280_239e_74797713c184 -->|method| 3e3065e0_f447_7086_5d10_a7d45e42236d
  24481ba5_daec_477c_4df1_62b898ae6dae["SslHandler()"]
  0d8d21bd_73fc_7280_239e_74797713c184 -->|method| 24481ba5_daec_477c_4df1_62b898ae6dae
  e5d1f7d6_7e4a_fa20_4d73_2f109d65fc7b["testSslGreeting()"]
  0d8d21bd_73fc_7280_239e_74797713c184 -->|method| e5d1f7d6_7e4a_fa20_4d73_2f109d65fc7b

Relationship Graph

Source Code

testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketSslGreetingTest.java lines 64–279

public class SocketSslGreetingTest extends AbstractSocketTest {

    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SocketSslGreetingTest.class);

    private static final LogLevel LOG_LEVEL = LogLevel.TRACE;
    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);
        }
    }

    public static Collection<Object[]> data() throws Exception {
        List<SslContext> serverContexts = new ArrayList<SslContext>();
        serverContexts.add(SslContextBuilder.forServer(CERT_FILE, KEY_FILE).sslProvider(SslProvider.JDK).build());

        List<SslContext> clientContexts = new ArrayList<SslContext>();
        clientContexts.add(SslContextBuilder.forClient().sslProvider(SslProvider.JDK)
                .endpointIdentificationAlgorithm(null).trustManager(CERT_FILE).build());

        boolean hasOpenSsl = OpenSsl.isAvailable();
        if (hasOpenSsl) {
            serverContexts.add(SslContextBuilder.forServer(CERT_FILE, KEY_FILE)
                                                .sslProvider(SslProvider.OPENSSL).build());
            clientContexts.add(SslContextBuilder.forClient().sslProvider(SslProvider.OPENSSL)
                                                .endpointIdentificationAlgorithm(null)
                                                .trustManager(CERT_FILE).build());
        } 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) {
                params.add(new Object[] { sc, cc, true });
                params.add(new Object[] { sc, cc, false });
            }
        }
        return params;
    }

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

    // Test for https://github.com/netty/netty/pull/2437
    @ParameterizedTest(name = "{index}: serverEngine = {0}, clientEngine = {1}, delegate = {2}")
    @MethodSource("data")
    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
    public void testSslGreeting(final SslContext serverCtx, final SslContext clientCtx, final boolean delegate,
                                TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testSslGreeting(sb, cb, serverCtx, clientCtx, delegate);
            }
        });
    }

    public void testSslGreeting(ServerBootstrap sb, Bootstrap cb, final SslContext serverCtx,
                                final SslContext clientCtx, boolean delegate) throws Throwable {
        final ServerHandler sh = new ServerHandler();
        final ClientHandler ch = new ClientHandler();

        final ExecutorService executorService = delegate ? Executors.newCachedThreadPool() : null;
        try {
            sb.childHandler(new ChannelInitializer<Channel>() {
                @Override

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free