2727import org .eclipse .jetty .server .nio .SelectChannelConnector ;
2828import org .eclipse .jetty .server .ssl .SslSelectChannelConnector ;
2929import org .testng .annotations .AfterClass ;
30+ import org .testng .annotations .AfterMethod ;
3031import org .testng .annotations .BeforeClass ;
3132import org .testng .annotations .Test ;
3233
@@ -43,39 +44,46 @@ public abstract class ProxyTunnellingTest extends AbstractBasicTest {
4344int port2 ;
4445private Server server2 ;
4546
46- @ BeforeClass (alwaysRun =true )
4747public void setUpGlobal ()throws Exception {
48- server2 =new Server ();
48+ }
49+
50+ private void setUpServers (Connector server2Connector )throws Exception {
4951
5052port1 =findFreePort ();
5153port2 =findFreePort ();
52-
5354Connector listener =new SelectChannelConnector ();
54-
5555listener .setHost ("127.0.0.1" );
5656listener .setPort (port1 );
57-
5857addConnector (listener );
58+ setHandler (new ConnectHandler ());
59+ start ();
5960
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+ }
6377
78+ private void setUpSSlServer2 ()throws Exception {
79+ SslSelectChannelConnector connector =new SslSelectChannelConnector ();
6480ClassLoader cl =getClass ().getClassLoader ();
6581URL keystoreUrl =cl .getResource ("ssltest-keystore.jks" );
6682String keyStoreFile =new File (keystoreUrl .toURI ()).getAbsolutePath ();
6783connector .setKeystore (keyStoreFile );
6884connector .setKeyPassword ("changeit" );
6985connector .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 );
7987 }
8088
8189@ Override
@@ -88,27 +96,38 @@ public org.eclipse.jetty.websocket.WebSocket doWebSocketConnect(HttpServletReque
8896 };
8997 }
9098
91- @ AfterClass (alwaysRun =true )
99+ @ AfterMethod (alwaysRun =true )
92100public void tearDownGlobal ()throws Exception {
93101stop ();
94- server2 .stop ();
102+ if (server2 !=null ) {
103+ server2 .stop ();
104+ }
105+ server2 =null ;
95106 }
96107
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" );
99112 }
100113
101114@ Test (timeOut =60000 )
102- public void echoText ()throws Exception {
115+ public void echoWSSText ()throws Exception {
116+ setUpSSlServer2 ();
117+ runTest ("wss" );
118+ }
103119
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 );
105124AsyncHttpClientConfig config =new AsyncHttpClientConfig .Builder ().setProxyServer (ps ).build ();
106125AsyncHttpClient asyncHttpClient =getAsyncHttpClient (config );
107126try {
108127final CountDownLatch latch =new CountDownLatch (1 );
109128final AtomicReference <String >text =new AtomicReference <String >("" );
110129
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 () {
112131
113132@ Override
114133public void onMessage (String message ) {
@@ -143,5 +162,6 @@ public void onError(Throwable t) {
143162 }finally {
144163asyncHttpClient .close ();
145164 }
165+
146166 }
147167}