testServerNameParsing() — netty Function Reference
Architecture documentation for the testServerNameParsing() function in SniHandlerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a["testServerNameParsing()"] 00b45f27_cbf5_af92_430f_7f0426117fa5["SniHandlerTest"] 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a -->|defined in| 00b45f27_cbf5_af92_430f_7f0426117fa5 495097de_5185_3185_66b9_43abc32cf9ab["releaseAll()"] 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a -->|calls| 495097de_5185_3185_66b9_43abc32cf9ab style 3efd7f2f_21dc_cb46_829b_8c61ff62ab2a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java lines 190–252
@ParameterizedTest(name = "{index}: sslProvider={0}")
@MethodSource("data")
public void testServerNameParsing(SslProvider provider) throws Exception {
SslContext nettyContext = makeSslContext(provider, false);
SslContext leanContext = makeSslContext(provider, false);
SslContext leanContext2 = makeSslContext(provider, false);
try {
DomainNameMapping<SslContext> mapping = new DomainNameMappingBuilder<SslContext>(nettyContext)
.add("*.netty.io", nettyContext)
// input with custom cases
.add("*.LEANCLOUD.CN", leanContext)
// a hostname conflict with previous one, since we are using order-sensitive config,
// the engine won't be used with the handler.
.add("chat4.leancloud.cn", leanContext2)
.build();
final AtomicReference<SniCompletionEvent> evtRef = new AtomicReference<SniCompletionEvent>();
SniHandler handler = new SniHandler(mapping);
EmbeddedChannel ch = new EmbeddedChannel(handler, new ChannelInboundHandlerAdapter() {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof SniCompletionEvent) {
assertTrue(evtRef.compareAndSet(null, (SniCompletionEvent) evt));
} else {
ctx.fireUserEventTriggered(evt);
}
}
});
try {
// hex dump of a client hello packet, which contains hostname "CHAT4.LEANCLOUD.CN"
String tlsHandshakeMessageHex1 = "16030100";
// part 2
String tlsHandshakeMessageHex = "c6010000c20303bb0855d66532c05a0ef784f7c384feeafa68b3" +
"b655ac7288650d5eed4aa3fb52000038c02cc030009fcca9cca8ccaac02b" +
"c02f009ec024c028006bc023c0270067c00ac0140039c009c0130033009d" +
"009c003d003c0035002f00ff010000610000001700150000124348415434" +
"2e4c45414e434c4f55442e434e000b000403000102000a000a0008001d00" +
"170019001800230000000d0020001e060106020603050105020503040104" +
"0204030301030203030201020202030016000000170000";
ch.writeInbound(Unpooled.wrappedBuffer(StringUtil.decodeHexDump(tlsHandshakeMessageHex1)));
ch.writeInbound(Unpooled.wrappedBuffer(StringUtil.decodeHexDump(tlsHandshakeMessageHex)));
// This should produce an alert
assertTrue(ch.finish());
assertEquals("chat4.leancloud.cn", handler.hostname());
assertEquals(leanContext, handler.sslContext());
SniCompletionEvent evt = evtRef.get();
assertNotNull(evt);
assertEquals("chat4.leancloud.cn", evt.hostname());
assertTrue(evt.isSuccess());
assertNull(evt.cause());
} finally {
ch.finishAndReleaseAll();
}
} finally {
releaseAll(leanContext, leanContext2, nettyContext);
}
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does testServerNameParsing() do?
testServerNameParsing() is a function in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java.
Where is testServerNameParsing() defined?
testServerNameParsing() is defined in handler/src/test/java/io/netty/handler/ssl/SniHandlerTest.java at line 190.
What does testServerNameParsing() call?
testServerNameParsing() calls 1 function(s): releaseAll.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free