Home / Class/ AbstractSslHandlerBenchmark Class — netty Architecture

AbstractSslHandlerBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  af13e1ad_19d3_6266_db4e_36c57d148c92["AbstractSslHandlerBenchmark"]
  0229f7eb_0c18_7fcb_97be_20e80f2f8b36["AbstractSslHandlerBenchmark.java"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|defined in| 0229f7eb_0c18_7fcb_97be_20e80f2f8b36
  eddbd48e_c8ed_2c59_2998_f474ee644cb3["initSslHandlers()"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|method| eddbd48e_c8ed_2c59_2998_f474ee644cb3
  1cf86807_f056_4c9e_1d1a_fdbf7e1e52df["destroySslHandlers()"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|method| 1cf86807_f056_4c9e_1d1a_fdbf7e1e52df
  4894c167_1d6b_0d7e_6d00_9efcfe204744["doHandshake()"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|method| 4894c167_1d6b_0d7e_6d00_9efcfe204744
  f15cede9_8c01_b953_0768_b354de672ac5["SslHandler()"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|method| f15cede9_8c01_b953_0768_b354de672ac5
  7a8c4aaa_959a_592d_813a_d7e00b557b6b["handleUnexpectedException()"]
  af13e1ad_19d3_6266_db4e_36c57d148c92 -->|method| 7a8c4aaa_959a_592d_813a_d7e00b557b6b

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslHandlerBenchmark.java lines 38–182

public class AbstractSslHandlerBenchmark extends AbstractMicrobenchmark {
    private static final String PROTOCOL_TLS_V1_2 = "TLSv1.2";

    public enum SslEngineProvider {
        JDK {
            @Override
            SslProvider sslProvider() {
                return SslProvider.JDK;
            }
        },
        OPENSSL {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL;
            }
        },
        OPENSSL_REFCNT {
            @Override
            SslProvider sslProvider() {
                return SslProvider.OPENSSL_REFCNT;
            }
        };
        private final SslContext clientContext = newClientContext();
        private final SslContext serverContext = newServerContext();

        private SslContext newClientContext() {
            try {
                return SslContextBuilder.forClient()
                        .sslProvider(sslProvider())
                        .trustManager(InsecureTrustManagerFactory.INSTANCE)
                        .build();
            } catch (SSLException e) {
                throw new IllegalStateException(e);
            }
        }

        private SslContext newServerContext() {
            try {
                File keyFile = new File(getClass().getResource("test_unencrypted.pem").getFile());
                File crtFile = new File(getClass().getResource("test.crt").getFile());

                return SslContextBuilder.forServer(crtFile, keyFile)
                        .sslProvider(sslProvider())
                        .build();
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
        }

        SslHandler newClientHandler(ByteBufAllocator allocator, String cipher) {
            SslHandler handler = clientContext.newHandler(allocator);
            configureEngine(handler.engine(), cipher);
            return handler;
        }

        SslHandler newServerHandler(ByteBufAllocator allocator, String cipher) {
            SslHandler handler = serverContext.newHandler(allocator);
            configureEngine(handler.engine(), cipher);
            return handler;
        }

        abstract SslProvider sslProvider();

        static SSLEngine configureEngine(SSLEngine engine, String cipher) {
            engine.setEnabledProtocols(new String[]{ PROTOCOL_TLS_V1_2 });
            engine.setEnabledCipherSuites(new String[]{ cipher });
            return engine;
        }
    }

    @Param
    public SslEngineProvider sslProvider;

    // Includes cipher required by HTTP/2
    @Param({ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" })
    public String cipher;

    protected SslHandler clientSslHandler;
    protected SslHandler serverSslHandler;
    protected EmbeddedChannelWriteAccumulatingHandlerContext clientCtx;
    protected EmbeddedChannelWriteAccumulatingHandlerContext serverCtx;

Frequently Asked Questions

What is the AbstractSslHandlerBenchmark class?
AbstractSslHandlerBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslHandlerBenchmark.java.
Where is AbstractSslHandlerBenchmark defined?
AbstractSslHandlerBenchmark is defined in microbench/src/main/java/io/netty/microbench/handler/ssl/AbstractSslHandlerBenchmark.java at line 38.

Analyze Your Own Codebase

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

Try Supermodel Free