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) {
Source
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