WebSocketHandshakeHandOverTest Class — netty Architecture
Architecture documentation for the WebSocketHandshakeHandOverTest class in WebSocketHandshakeHandOverTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f9cd3101_4b2b_a61c_41fe_b9876a6a0902["WebSocketHandshakeHandOverTest"] 08a6f2d2_d250_b19f_7a09_7e8fcee2696e["WebSocketHandshakeHandOverTest.java"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|defined in| 08a6f2d2_d250_b19f_7a09_7e8fcee2696e 59e6ec30_4080_33eb_4650_b8f8b910ccd2["setUp()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| 59e6ec30_4080_33eb_4650_b8f8b910ccd2 9ed7bce0_e335_5d6a_b465_b14a56ba6a90["testHandover()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| 9ed7bce0_e335_5d6a_b465_b14a56ba6a90 dd9e5ef2_79fa_2034_1449_21cd8d663c13["testClientHandshakeTimeout()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| dd9e5ef2_79fa_2034_1449_21cd8d663c13 a67d0487_9937_f01a_860c_76b3effb9bb7["testHandshakeFutureIsNotifiedOnChannelClose()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| a67d0487_9937_f01a_860c_76b3effb9bb7 70999066_6bf3_6340_8da2_5b0391bf3457["testClientHandshakerForceClose()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| 70999066_6bf3_6340_8da2_5b0391bf3457 8e12a079_6d1e_af18_a1a8_3016f84016ff["transferAllDataWithMerge()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| 8e12a079_6d1e_af18_a1a8_3016f84016ff 817febfc_1cd7_c3aa_75aa_eb6cd76b02d3["EmbeddedChannel()"] f9cd3101_4b2b_a61c_41fe_b9876a6a0902 -->|method| 817febfc_1cd7_c3aa_75aa_eb6cd76b02d3
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketHandshakeHandOverTest.java lines 45–364
public class WebSocketHandshakeHandOverTest {
private boolean serverReceivedHandshake;
private WebSocketServerProtocolHandler.HandshakeComplete serverHandshakeComplete;
private boolean clientReceivedHandshake;
private boolean clientReceivedMessage;
private boolean serverReceivedCloseHandshake;
private boolean clientForceClosed;
private boolean clientHandshakeTimeout;
private final class CloseNoOpServerProtocolHandler extends WebSocketServerProtocolHandler {
CloseNoOpServerProtocolHandler(String websocketPath) {
super(WebSocketServerProtocolConfig.newBuilder()
.websocketPath(websocketPath)
.allowExtensions(false)
.sendCloseFrame(null)
.build());
}
@Override
protected void decode(ChannelHandlerContext ctx, WebSocketFrame frame, List<Object> out) throws Exception {
if (frame instanceof CloseWebSocketFrame) {
serverReceivedCloseHandshake = true;
return;
}
super.decode(ctx, frame, out);
}
}
@BeforeEach
public void setUp() {
serverReceivedHandshake = false;
serverHandshakeComplete = null;
clientReceivedHandshake = false;
clientReceivedMessage = false;
serverReceivedCloseHandshake = false;
clientForceClosed = false;
clientHandshakeTimeout = false;
}
@Test
public void testHandover() throws Exception {
EmbeddedChannel serverChannel = createServerChannel(new SimpleChannelInboundHandler<Object>() {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (evt == ServerHandshakeStateEvent.HANDSHAKE_COMPLETE) {
serverReceivedHandshake = true;
// immediately send a message to the client on connect
ctx.writeAndFlush(new TextWebSocketFrame("abc"));
} else if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete) {
serverHandshakeComplete = (WebSocketServerProtocolHandler.HandshakeComplete) evt;
}
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
}
});
EmbeddedChannel clientChannel = createClientChannel(new SimpleChannelInboundHandler<Object>() {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
if (evt == ClientHandshakeStateEvent.HANDSHAKE_COMPLETE) {
clientReceivedHandshake = true;
}
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof TextWebSocketFrame) {
clientReceivedMessage = true;
}
}
});
// Transfer the handshake from the client to the server
transferAllDataWithMerge(clientChannel, serverChannel);
assertTrue(serverReceivedHandshake);
assertNotNull(serverHandshakeComplete);
assertEquals("/test", serverHandshakeComplete.requestUri());
assertEquals(8, serverHandshakeComplete.requestHeaders().size());
assertEquals("test-proto-2", serverHandshakeComplete.selectedSubprotocol());
Defined In
Source
Frequently Asked Questions
What is the WebSocketHandshakeHandOverTest class?
WebSocketHandshakeHandOverTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketHandshakeHandOverTest.java.
Where is WebSocketHandshakeHandOverTest defined?
WebSocketHandshakeHandOverTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/websocketx/WebSocketHandshakeHandOverTest.java at line 45.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free