SniHandlerTest Class — netty Architecture
Architecture documentation for the SniHandlerTest class in SniHandlerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 00b45f27_cbf5_af92_430f_7f0426117fa5["SniHandlerTest"] 21c53ef4_8ec1_7385_0648_b8ecf474bb86["SniHandlerTest.java"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|defined in| 21c53ef4_8ec1_7385_0648_b8ecf474bb86 7710678f_8a35_d670_787b_1b44442f5721["ApplicationProtocolConfig()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 7710678f_8a35_d670_787b_1b44442f5721 aa2f3685_bc96_20af_d66f_21464476764c["assumeAlpnSupported()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| aa2f3685_bc96_20af_d66f_21464476764c e59fe9ff_f558_8c64_301b_dbdee78e4015["SslContext()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| e59fe9ff_f558_8c64_301b_dbdee78e4015 3e2a1e59_d538_2150_3f4c_cc854fb5b3b8["data()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 3e2a1e59_d538_2150_3f4c_cc854fb5b3b8 02e72b34_5450_3300_17a5_7248b006addd["testNonSslRecord()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 02e72b34_5450_3300_17a5_7248b006addd 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a["testServerNameParsing()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a 9d09277d_ec2b_339c_e74b_86f8eaff441b["testNonAsciiServerNameParsing()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 9d09277d_ec2b_339c_e74b_86f8eaff441b 0d39212f_5156_26fb_4253_c89b55750f03["testFallbackToDefaultContext()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 0d39212f_5156_26fb_4253_c89b55750f03 72581b62_3ddc_fa4d_8223_78ba93f28a95["testMajorVersionNot3()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 72581b62_3ddc_fa4d_8223_78ba93f28a95 925607e8_a787_e27e_c903_01fcc053a644["testSniWithAlpnHandler()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 925607e8_a787_e27e_c903_01fcc053a644 43ec0116_7195_0a12_237d_6e2484e5347d["testReplaceHandler()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 43ec0116_7195_0a12_237d_6e2484e5347d 495097de_5185_3185_66b9_43abc32cf9ab["releaseAll()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 495097de_5185_3185_66b9_43abc32cf9ab 685aab7d_04b9_f473_82b1_13966c171abd["testNonFragmented()"] 00b45f27_cbf5_af92_430f_7f0426117fa5 -->|method| 685aab7d_04b9_f473_82b1_13966c171abd
Relationship Graph
Source Code
handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java lines 84–855
public class SniHandlerTest {
private static ApplicationProtocolConfig newAlpnConfig() {
return new ApplicationProtocolConfig(
ApplicationProtocolConfig.Protocol.ALPN,
// NO_ADVERTISE is currently the only mode supported by both OpenSsl and JDK providers.
ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE,
// ACCEPT is currently the only mode supported by both OpenSsl and JDK providers.
ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT,
"myprotocol");
}
private static void assumeAlpnSupported(SslProvider provider) {
switch (provider) {
case OPENSSL:
case OPENSSL_REFCNT:
assumeTrue(OpenSsl.isAlpnSupported());
break;
case JDK:
break;
default:
throw new Error("Unexpected alpn provider: " + provider);
}
}
private static SslContext makeSslContext(SslProvider provider, boolean alpn) throws Exception {
if (alpn) {
assumeAlpnSupported(provider);
}
File keyFile = ResourcesUtil.getFile(SniHandlerTest.class, "test_encrypted.pem");
File crtFile = ResourcesUtil.getFile(SniHandlerTest.class, "test.crt");
SslContextBuilder sslCtxBuilder = SslContextBuilder.forServer(crtFile, keyFile, "12345")
.sslProvider(provider);
if (alpn) {
sslCtxBuilder.applicationProtocolConfig(newAlpnConfig());
}
return sslCtxBuilder.build();
}
private static SslContext makeSslClientContext(SslProvider provider, boolean alpn) throws Exception {
if (alpn) {
assumeAlpnSupported(provider);
}
File crtFile = ResourcesUtil.getFile(SniHandlerTest.class, "test.crt");
SslContextBuilder sslCtxBuilder = SslContextBuilder.forClient()
.trustManager(crtFile)
.endpointIdentificationAlgorithm(null)
.sslProvider(provider);
if (alpn) {
sslCtxBuilder.applicationProtocolConfig(newAlpnConfig());
}
return sslCtxBuilder.build();
}
static Iterable<?> data() {
List<SslProvider> params = new ArrayList<SslProvider>(3);
if (OpenSsl.isAvailable()) {
params.add(SslProvider.OPENSSL);
params.add(SslProvider.OPENSSL_REFCNT);
}
params.add(SslProvider.JDK);
return params;
}
@ParameterizedTest(name = "{index}: sslProvider={0}")
@MethodSource("data")
public void testNonSslRecord(SslProvider provider) throws Exception {
SslContext nettyContext = makeSslContext(provider, false);
try {
final AtomicReference<SslHandshakeCompletionEvent> evtRef =
new AtomicReference<SslHandshakeCompletionEvent>();
SniHandler handler = new SniHandler(new DomainNameMappingBuilder<SslContext>(nettyContext).build());
final EmbeddedChannel ch = new EmbeddedChannel(handler, new ChannelInboundHandlerAdapter() {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof SslHandshakeCompletionEvent) {
assertTrue(evtRef.compareAndSet(null, (SslHandshakeCompletionEvent) evt));
Source
Frequently Asked Questions
What is the SniHandlerTest class?
SniHandlerTest is a class in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java.
Where is SniHandlerTest defined?
SniHandlerTest is defined in handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java at line 84.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free