SniClientTest Class — netty Architecture
Architecture documentation for the SniClientTest class in SniClientTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 03760603_e76a_2487_b3a8_7faf239ef462["SniClientTest"] 138f1a01_2438_02d2_b299_c3995381df64["SniClientTest.java"] 03760603_e76a_2487_b3a8_7faf239ef462 -->|defined in| 138f1a01_2438_02d2_b299_c3995381df64 754c6e67_5228_b9a2_976d_5b03e4d646f0["parameters()"] 03760603_e76a_2487_b3a8_7faf239ef462 -->|method| 754c6e67_5228_b9a2_976d_5b03e4d646f0 f5abc307_f250_cdab_14be_a00489a9420e["testSniSNIMatcherMatchesClient()"] 03760603_e76a_2487_b3a8_7faf239ef462 -->|method| f5abc307_f250_cdab_14be_a00489a9420e 6e9e8ebe_6e1e_b494_8130_c943cd3653dd["testSniSNIMatcherDoesNotMatchClient()"] 03760603_e76a_2487_b3a8_7faf239ef462 -->|method| 6e9e8ebe_6e1e_b494_8130_c943cd3653dd b5f56e00_c555_2f1e_8389_b36b8ea4bf9c["testSniClient()"] 03760603_e76a_2487_b3a8_7faf239ef462 -->|method| b5f56e00_c555_2f1e_8389_b36b8ea4bf9c
Relationship Graph
Source Code
handler/src/test/java/io/netty/handler/ssl/SniClientTest.java lines 52–165
public class SniClientTest {
private static final String PARAMETERIZED_NAME = "{index}: serverSslProvider = {0}, clientSslProvider = {1}";
static Collection<Object[]> parameters() {
List<SslProvider> providers = new ArrayList<SslProvider>(Arrays.asList(SslProvider.values()));
if (!OpenSsl.isAvailable()) {
providers.remove(SslProvider.OPENSSL);
providers.remove(SslProvider.OPENSSL_REFCNT);
}
List<Object[]> params = new ArrayList<Object[]>();
for (SslProvider sp: providers) {
for (SslProvider cp: providers) {
params.add(new Object[] { sp, cp });
}
}
return params;
}
@ParameterizedTest(name = PARAMETERIZED_NAME)
@Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
@MethodSource("parameters")
public void testSniSNIMatcherMatchesClient(SslProvider serverProvider, SslProvider clientProvider)
throws Exception {
SniClientJava8TestUtil.testSniClient(serverProvider, clientProvider, true);
}
@ParameterizedTest(name = PARAMETERIZED_NAME)
@Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
@MethodSource("parameters")
public void testSniSNIMatcherDoesNotMatchClient(
final SslProvider serverProvider, final SslProvider clientProvider) {
assertThrows(SSLException.class, new Executable() {
@Override
public void execute() throws Throwable {
SniClientJava8TestUtil.testSniClient(serverProvider, clientProvider, false);
}
});
}
@ParameterizedTest(name = PARAMETERIZED_NAME)
@Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
@MethodSource("parameters")
public void testSniClient(SslProvider sslServerProvider, SslProvider sslClientProvider) throws Exception {
String sniHostName = "sni.netty.io";
LocalAddress address = new LocalAddress("SniClientTest");
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, LocalIoHandler.newFactory());
SelfSignedCertificate cert = CachedSelfSignedCertificate.getCachedCertificate();
SslContext sslServerContext = null;
SslContext sslClientContext = null;
Channel sc = null;
Channel cc = null;
try {
if ((sslServerProvider == SslProvider.OPENSSL || sslServerProvider == SslProvider.OPENSSL_REFCNT)
&& !OpenSsl.useKeyManagerFactory()) {
sslServerContext = SslContextBuilder.forServer(cert.certificate(), cert.privateKey())
.sslProvider(sslServerProvider)
.build();
} else {
// The used OpenSSL version does support a KeyManagerFactory, so use it.
KeyManagerFactory kmf = SniClientJava8TestUtil.newSniX509KeyManagerFactory(cert, sniHostName);
sslServerContext = SslContextBuilder.forServer(kmf)
.sslProvider(sslServerProvider)
.build();
}
final SslContext finalContext = sslServerContext;
final Promise<String> promise = group.next().newPromise();
ServerBootstrap sb = new ServerBootstrap();
sc = sb.group(group).channel(LocalServerChannel.class).childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
ch.pipeline().addFirst(new SniHandler(new Mapping<String, SslContext>() {
@Override
public SslContext map(String input) {
promise.setSuccess(input);
return finalContext;
}
}));
}
Source
Frequently Asked Questions
What is the SniClientTest class?
SniClientTest is a class in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SniClientTest.java.
Where is SniClientTest defined?
SniClientTest is defined in handler/src/test/java/io/netty/handler/ssl/SniClientTest.java at line 52.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free