Home / Class/ HandlerSslTest Class — netty Architecture

HandlerSslTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  7926397b_13a0_4e40_b752_60204eb56e1f["HandlerSslTest"]
  9c121633_9746_1c40_923f_61573b9581e9["HandlerSslTest.java"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|defined in| 9c121633_9746_1c40_923f_61573b9581e9
  d1b4d2ae_eb30_78b8_9c89_acd8d1a158e4["setup()"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|method| d1b4d2ae_eb30_78b8_9c89_acd8d1a158e4
  756f701d_6aa1_6e66_abb7_87a36b0ea149["testSimpleJdkProvider()"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|method| 756f701d_6aa1_6e66_abb7_87a36b0ea149
  e96eb034_5910_32b1_6595_fe2a69fed664["testOpenSslProvider()"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|method| e96eb034_5910_32b1_6595_fe2a69fed664
  3ff16853_d45d_8579_bdfe_da4318b11ea1["mySetupClientHostnameValidation()"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|method| 3ff16853_d45d_8579_bdfe_da4318b11ea1
  996cef39_186c_1375_3fea_0b9359748e42["rethrowIfNotNull()"]
  7926397b_13a0_4e40_b752_60204eb56e1f -->|method| 996cef39_186c_1375_3fea_0b9359748e42

Relationship Graph

Source Code

testsuite-jpms/src/test/java/io/netty/testsuite_jpms/test/HandlerSslTest.java lines 58–233

public class HandlerSslTest {

    private static X509Bundle signedCert;
    private Channel clientChannel;
    private Channel serverChannel;
    private Channel serverConnectedChannel;
    private Throwable clientException;
    private Throwable serverException;
    private final CountDownLatch serverLatch = new CountDownLatch(1);
    private final CountDownLatch clientLatch = new CountDownLatch(1);

    @BeforeAll
    public static void setup() throws Exception {
        signedCert = new CertificateBuilder()
                .subject("cn=localhost")
                .setIsCertificateAuthority(true)
                .buildSelfSigned();
    }

    @Test
    public void testSimpleJdkProvider() throws Exception {
        mySetupClientHostnameValidation(
                SslProvider.JDK,
                false);
        assertTrue(clientLatch.await(10, TimeUnit.SECONDS));

        rethrowIfNotNull(clientException);
        assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
        rethrowIfNotNull(serverException);
    }

    @Test
    public void testOpenSslProvider() throws Exception {
        mySetupClientHostnameValidation(
                SslProvider.OPENSSL,
                false);
        assertTrue(clientLatch.await(10, TimeUnit.SECONDS));

        rethrowIfNotNull(clientException);
        assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
        rethrowIfNotNull(serverException);
    }

    private Future<Void> mySetupClientHostnameValidation(SslProvider sslProvider,
                                                         final boolean failureExpected)
            throws Exception {

        final String expectedHost = "localhost";
        SslContext serverSslCtx = forServer(signedCert.getKeyPair().getPrivate(), signedCert.getCertificatePath())
                .sslProvider(sslProvider)
                .trustManager(InsecureTrustManagerFactory.INSTANCE)
                .ciphers(null, IdentityCipherSuiteFilter.INSTANCE)
                .sessionCacheSize(0)
                .sessionTimeout(0)
                .build();

        SslContext clientSslCtx = forClient()
                .sslProvider(sslProvider)
                .trustManager(signedCert.toTrustManagerFactory())
                .ciphers(null, IdentityCipherSuiteFilter.INSTANCE)
                .sessionCacheSize(0)
                .sessionTimeout(0)
                .build();

        serverConnectedChannel = null;
        ServerBootstrap sb = new ServerBootstrap();
        Bootstrap cb = new Bootstrap();

        sb.group(new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory()));
        sb.channel(NioServerSocketChannel.class);
        sb.childHandler(new ChannelInitializer() {
            @Override
            protected void initChannel(Channel ch) throws Exception {
                ChannelPipeline p = ch.pipeline();

                SslHandler handler = serverSslCtx.newHandler(ch.alloc());
                p.addLast(handler);
                p.addLast(new ChannelInboundHandlerAdapter() {
                    @Override
                    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
                        if (evt == SslHandshakeCompletionEvent.SUCCESS) {

Frequently Asked Questions

What is the HandlerSslTest class?
HandlerSslTest is a class in the netty codebase, defined in testsuite-jpms/src/test/java/io/netty/testsuite_jpms/test/HandlerSslTest.java.
Where is HandlerSslTest defined?
HandlerSslTest is defined in testsuite-jpms/src/test/java/io/netty/testsuite_jpms/test/HandlerSslTest.java at line 58.

Analyze Your Own Codebase

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

Try Supermodel Free