27
27
import org .eclipse .jetty .server .nio .SelectChannelConnector ;
28
28
import org .eclipse .jetty .server .ssl .SslSelectChannelConnector ;
29
29
import org .testng .annotations .AfterClass ;
30
+ import org .testng .annotations .AfterMethod ;
30
31
import org .testng .annotations .BeforeClass ;
31
32
import org .testng .annotations .Test ;
32
33
@@ -43,39 +44,46 @@ public abstract class ProxyTunnellingTest extends AbstractBasicTest {
43
44
int port2 ;
44
45
private Server server2 ;
45
46
46
- @ BeforeClass (alwaysRun = true )
47
47
public void setUpGlobal () throws Exception {
48
- server2 = new Server ();
48
+ }
49
+
50
+ private void setUpServers (Connector server2Connector ) throws Exception {
49
51
50
52
port1 = findFreePort ();
51
53
port2 = findFreePort ();
52
-
53
54
Connector listener = new SelectChannelConnector ();
54
-
55
55
listener .setHost ("127.0.0.1" );
56
56
listener .setPort (port1 );
57
-
58
57
addConnector (listener );
58
+ setHandler (new ConnectHandler ());
59
+ start ();
59
60
60
- SslSelectChannelConnector connector = new SslSelectChannelConnector ();
61
- connector .setHost ("127.0.0.1" );
62
- connector .setPort (port2 );
61
+ server2 = new Server ();
62
+
63
+ server2Connector .setHost ("127.0.0.1" );
64
+ server2Connector .setPort (port2 );
65
+
66
+ server2 .addConnector (server2Connector );
67
+
68
+ server2 .setHandler (getWebSocketHandler ());
69
+ server2 .start ();
70
+ log .info ("Local HTTP server started successfully" );
71
+
72
+ }
73
+
74
+ private void setUpServer () throws Exception {
75
+ setUpServers (new SelectChannelConnector ());
76
+ }
63
77
78
+ private void setUpSSlServer2 () throws Exception {
79
+ SslSelectChannelConnector connector = new SslSelectChannelConnector ();
64
80
ClassLoader cl = getClass ().getClassLoader ();
65
81
URL keystoreUrl = cl .getResource ("ssltest-keystore.jks" );
66
82
String keyStoreFile = new File (keystoreUrl .toURI ()).getAbsolutePath ();
67
83
connector .setKeystore (keyStoreFile );
68
84
connector .setKeyPassword ("changeit" );
69
85
connector .setKeystoreType ("JKS" );
70
-
71
- server2 .addConnector (connector );
72
-
73
- setHandler (new ConnectHandler ());
74
- start ();
75
-
76
- server2 .setHandler (getWebSocketHandler ());
77
- server2 .start ();
78
- log .info ("Local HTTP server started successfully" );
86
+ setUpServers (connector );
79
87
}
80
88
81
89
@ Override
@@ -88,27 +96,38 @@ public org.eclipse.jetty.websocket.WebSocket doWebSocketConnect(HttpServletReque
88
96
};
89
97
}
90
98
91
- @ AfterClass (alwaysRun = true )
99
+ @ AfterMethod (alwaysRun = true )
92
100
public void tearDownGlobal () throws Exception {
93
101
stop ();
94
- server2 .stop ();
102
+ if (server2 != null ) {
103
+ server2 .stop ();
104
+ }
105
+ server2 = null ;
95
106
}
96
107
97
- protected String getTargetUrl () {
98
- return String .format ("wss://127.0.0.1:%d/" , port2 );
108
+ @ Test (timeOut = 60000 )
109
+ public void echoWSText () throws Exception {
110
+ setUpServer ();
111
+ runTest ("ws" );
99
112
}
100
113
101
114
@ Test (timeOut = 60000 )
102
- public void echoText () throws Exception {
115
+ public void echoWSSText () throws Exception {
116
+ setUpSSlServer2 ();
117
+ runTest ("wss" );
118
+ }
103
119
104
- ProxyServer ps = new ProxyServer (ProxyServer .Protocol .HTTPS , "127.0.0.1" , port1 );
120
+ private void runTest (String protocol ) throws Exception {
121
+ String targetUrl = String .format ("%s://127.0.0.1:%d/" , protocol , port2 );
122
+
123
+ ProxyServer ps = new ProxyServer (ProxyServer .Protocol .HTTP , "127.0.0.1" , port1 );
105
124
AsyncHttpClientConfig config = new AsyncHttpClientConfig .Builder ().setProxyServer (ps ).build ();
106
125
AsyncHttpClient asyncHttpClient = getAsyncHttpClient (config );
107
126
try {
108
127
final CountDownLatch latch = new CountDownLatch (1 );
109
128
final AtomicReference <String > text = new AtomicReference <String >("" );
110
129
111
- WebSocket websocket = asyncHttpClient .prepareGet (getTargetUrl () ).execute (new WebSocketUpgradeHandler .Builder ().addWebSocketListener (new WebSocketTextListener () {
130
+ WebSocket websocket = asyncHttpClient .prepareGet (targetUrl ).execute (new WebSocketUpgradeHandler .Builder ().addWebSocketListener (new WebSocketTextListener () {
112
131
113
132
@ Override
114
133
public void onMessage (String message ) {
@@ -143,5 +162,6 @@ public void onError(Throwable t) {
143
162
} finally {
144
163
asyncHttpClient .close ();
145
164
}
165
+
146
166
}
147
167
}
0 commit comments