Skip to content

Commit 943e0a8

Browse files
committed
Use Jetty/Tomcat dynamic port allocation instead of TestUtils.findFreePort, close AsyncHttpClient#1183
1 parent d02b9f2 commit 943e0a8

29 files changed

+195
-152
lines changed

client/src/test/java/org/asynchttpclient/AbstractBasicHttpsTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,21 @@
1515
*/
1616
package org.asynchttpclient;
1717

18-
import static org.asynchttpclient.test.TestUtils.findFreePort;
19-
import static org.asynchttpclient.test.TestUtils.newJettyHttpsServer;
18+
import static org.asynchttpclient.test.TestUtils.*;
2019

20+
import org.eclipse.jetty.server.Server;
21+
import org.eclipse.jetty.server.ServerConnector;
2122
import org.testng.annotations.BeforeClass;
2223

2324
public abstract class AbstractBasicHttpsTest extends AbstractBasicTest {
2425

2526
@BeforeClass(alwaysRun = true)
2627
public void setUpGlobal() throws Exception {
27-
port1 = findFreePort();
28-
server = newJettyHttpsServer(port1);
28+
server = new Server();
29+
ServerConnector connector = addHttpConnector(server);
2930
server.setHandler(configureHandler());
3031
server.start();
32+
port1 = connector.getLocalPort();
3133
logger.info("Local HTTP server started successfully");
3234
}
3335
}

client/src/test/java/org/asynchttpclient/AbstractBasicTest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@
1616
package org.asynchttpclient;
1717

1818
import static org.asynchttpclient.test.TestUtils.addHttpConnector;
19-
import static org.asynchttpclient.test.TestUtils.findFreePort;
20-
import static org.asynchttpclient.test.TestUtils.newJettyHttpServer;
2119
import static org.testng.Assert.fail;
2220

2321
import org.asynchttpclient.test.EchoHandler;
2422
import org.eclipse.jetty.server.Server;
23+
import org.eclipse.jetty.server.ServerConnector;
2524
import org.eclipse.jetty.server.handler.AbstractHandler;
2625
import org.slf4j.Logger;
2726
import org.slf4j.LoggerFactory;
@@ -35,19 +34,20 @@ public abstract class AbstractBasicTest {
3534
protected final Logger logger = LoggerFactory.getLogger(getClass());
3635

3736
protected Server server;
38-
protected int port1;
39-
protected int port2;
37+
protected int port1 = -1;
38+
protected int port2 =-1;
4039

4140
@BeforeClass(alwaysRun = true)
4241
public void setUpGlobal() throws Exception {
4342

44-
port1 = findFreePort();
45-
port2 = findFreePort();
46-
47-
server = newJettyHttpServer(port1);
43+
server = new Server();
44+
ServerConnector connector1 = addHttpConnector(server);
4845
server.setHandler(configureHandler());
49-
addHttpConnector(server, port2);
46+
ServerConnector connector2 = addHttpConnector(server);
5047
server.start();
48+
49+
port1 = connector1.getLocalPort();
50+
port2 = connector2.getLocalPort();
5151

5252
logger.info("Local HTTP server started successfully");
5353
}

client/src/test/java/org/asynchttpclient/AuthTimeoutTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.asynchttpclient.exception.RemotelyClosedException;
3131
import org.eclipse.jetty.server.Request;
3232
import org.eclipse.jetty.server.Server;
33+
import org.eclipse.jetty.server.ServerConnector;
3334
import org.eclipse.jetty.server.handler.AbstractHandler;
3435
import org.testng.annotations.AfterClass;
3536
import org.testng.annotations.BeforeClass;
@@ -42,16 +43,18 @@ public class AuthTimeoutTest extends AbstractBasicTest {
4243
@BeforeClass(alwaysRun = true)
4344
@Override
4445
public void setUpGlobal() throws Exception {
45-
port1 = findFreePort();
46-
port2 = findFreePort();
4746

48-
server = newJettyHttpServer(port1);
47+
server = new Server();
48+
ServerConnector connector1 = addHttpConnector(server);
4949
addBasicAuthHandler(server, configureHandler());
5050
server.start();
51+
port1 = connector1.getLocalPort();
5152

52-
server2 = newJettyHttpServer(port2);
53+
server2 = new Server();
54+
ServerConnector connector2 = addHttpConnector(server2);
5355
addDigestAuthHandler(server2, configureHandler());
5456
server2.start();
57+
port2 = connector2.getLocalPort();
5558

5659
logger.info("Local HTTP server started successfully");
5760
}

client/src/test/java/org/asynchttpclient/BasicAuthTest.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
import org.eclipse.jetty.server.Request;
3636
import org.eclipse.jetty.server.Server;
37+
import org.eclipse.jetty.server.ServerConnector;
3738
import org.eclipse.jetty.server.handler.AbstractHandler;
3839
import org.slf4j.Logger;
3940
import org.slf4j.LoggerFactory;
@@ -52,23 +53,25 @@ public class BasicAuthTest extends AbstractBasicTest {
5253
@BeforeClass(alwaysRun = true)
5354
@Override
5455
public void setUpGlobal() throws Exception {
55-
port1 = findFreePort();
56-
port2 = findFreePort();
57-
portNoAuth = findFreePort();
5856

59-
server = newJettyHttpServer(port1);
57+
server = new Server();
58+
ServerConnector connector1 = addHttpConnector(server);
6059
addBasicAuthHandler(server, configureHandler());
6160
server.start();
61+
port1 = connector1.getLocalPort();
6262

63-
server2 = newJettyHttpServer(port2);
63+
server2 = new Server();
64+
ServerConnector connector2 = addHttpConnector(server2);
6465
addBasicAuthHandler(server2, new RedirectHandler());
6566
server2.start();
67+
port2 = connector2.getLocalPort();
6668

67-
// need noAuth server to verify the preemptive auth mode (see
68-
// basicAuthTestPreemtiveTest)
69-
serverNoAuth = newJettyHttpServer(portNoAuth);
69+
// need noAuth server to verify the preemptive auth mode (see basicAuthTestPreemtiveTest)
70+
serverNoAuth = new Server();
71+
ServerConnector connectorNoAuth = addHttpConnector(serverNoAuth);
7072
serverNoAuth.setHandler(new SimpleHandler());
7173
serverNoAuth.start();
74+
portNoAuth = connectorNoAuth.getLocalPort();
7275

7376
logger.info("Local HTTP server started successfully");
7477
}

client/src/test/java/org/asynchttpclient/BasicHttpProxyToHttpTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.asynchttpclient.test.EchoHandler;
3030
import org.eclipse.jetty.proxy.ProxyServlet;
3131
import org.eclipse.jetty.server.Server;
32+
import org.eclipse.jetty.server.ServerConnector;
3233
import org.eclipse.jetty.servlet.ServletHandler;
3334
import org.eclipse.jetty.servlet.ServletHolder;
3435
import org.slf4j.Logger;
@@ -77,19 +78,20 @@ protected void service(final HttpServletRequest request, final HttpServletRespon
7778
@BeforeClass
7879
public void setUpGlobal() throws Exception {
7980

80-
httpPort = findFreePort();
81-
proxyPort = findFreePort();
82-
83-
httpServer = newJettyHttpServer(httpPort);
81+
httpServer = new Server();
82+
ServerConnector connector1 = addHttpConnector(httpServer);
8483
httpServer.setHandler(new EchoHandler());
8584
httpServer.start();
85+
httpPort = connector1.getLocalPort();
8686

87-
proxy = new Server(proxyPort);
87+
proxy = new Server();
88+
ServerConnector connector2 = addHttpConnector(proxy);
8889
ServletHandler servletHandler = new ServletHandler();
8990
ServletHolder servletHolder = servletHandler.addServletWithMapping(BasicAuthProxyServlet.class, "/*");
9091
servletHolder.setInitParameter("maxThreads", "20");
9192
proxy.setHandler(servletHandler);
9293
proxy.start();
94+
proxyPort = connector2.getLocalPort();
9395

9496
LOGGER.info("Local HTTP Server (" + httpPort + "), Proxy (" + proxyPort + ") started successfully");
9597
}

client/src/test/java/org/asynchttpclient/BasicHttpProxyToHttpsTest.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.asynchttpclient.test.EchoHandler;
2929
import org.eclipse.jetty.proxy.ConnectHandler;
3030
import org.eclipse.jetty.server.Server;
31+
import org.eclipse.jetty.server.ServerConnector;
3132
import org.slf4j.Logger;
3233
import org.slf4j.LoggerFactory;
3334
import org.testng.Assert;
@@ -51,15 +52,16 @@ public class BasicHttpProxyToHttpsTest {
5152
@BeforeClass(alwaysRun = true)
5253
public void setUpGlobal() throws Exception {
5354

54-
httpPort = findFreePort();
55-
proxyPort = findFreePort();
56-
5755
// HTTP server
58-
httpServer = newJettyHttpsServer(httpPort);
56+
httpServer = new Server();
57+
ServerConnector connector1 = addHttpsConnector(httpServer);
5958
httpServer.setHandler(new EchoHandler());
6059
httpServer.start();
60+
httpPort = connector1.getLocalPort();
6161

62-
proxy = new Server(proxyPort);
62+
// proxy
63+
proxy = new Server();
64+
ServerConnector connector2 = addHttpConnector(proxy);
6365
ConnectHandler connectHandler = new ConnectHandler() {
6466

6567
@Override
@@ -78,6 +80,7 @@ protected boolean handleAuthentication(HttpServletRequest request, HttpServletRe
7880
};
7981
proxy.setHandler(connectHandler);
8082
proxy.start();
83+
proxyPort = connector2.getLocalPort();
8184

8285
LOGGER.info("Local HTTP Server (" + httpPort + "), Proxy (" + proxyPort + ") started successfully");
8386
}

client/src/test/java/org/asynchttpclient/DigestAuthTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import javax.servlet.http.HttpServletResponse;
2828

2929
import org.eclipse.jetty.server.Request;
30+
import org.eclipse.jetty.server.Server;
31+
import org.eclipse.jetty.server.ServerConnector;
3032
import org.eclipse.jetty.server.handler.AbstractHandler;
3133
import org.testng.annotations.BeforeClass;
3234
import org.testng.annotations.Test;
@@ -36,11 +38,11 @@ public class DigestAuthTest extends AbstractBasicTest {
3638
@BeforeClass(alwaysRun = true)
3739
@Override
3840
public void setUpGlobal() throws Exception {
39-
port1 = findFreePort();
40-
41-
server = newJettyHttpServer(port1);
41+
server = new Server();
42+
ServerConnector connector = addHttpConnector(server);
4243
addDigestAuthHandler(server, configureHandler());
4344
server.start();
45+
port1 = connector.getLocalPort();
4446
logger.info("Local HTTP server started successfully");
4547
}
4648

client/src/test/java/org/asynchttpclient/HttpToHttpsRedirectTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import javax.servlet.http.HttpServletResponse;
2929

3030
import org.eclipse.jetty.server.Request;
31+
import org.eclipse.jetty.server.Server;
32+
import org.eclipse.jetty.server.ServerConnector;
3133
import org.eclipse.jetty.server.handler.AbstractHandler;
3234
import org.testng.annotations.BeforeClass;
3335
import org.testng.annotations.Test;
@@ -69,13 +71,13 @@ public void handle(String s, Request r, HttpServletRequest httpRequest, HttpServ
6971

7072
@BeforeClass(alwaysRun = true)
7173
public void setUpGlobal() throws Exception {
72-
port1 = findFreePort();
73-
port2 = findFreePort();
74-
75-
server = newJettyHttpServer(port1);
76-
addHttpsConnector(server, port2);
74+
server = new Server();
75+
ServerConnector connector1 = addHttpConnector(server);
76+
ServerConnector connector2 = addHttpsConnector(server);
7777
server.setHandler(new Relative302Handler());
7878
server.start();
79+
port1 = connector1.getLocalPort();
80+
port2 = connector2.getLocalPort();
7981
logger.info("Local HTTP server started successfully");
8082
}
8183

client/src/test/java/org/asynchttpclient/IdleStateHandlerTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import javax.servlet.http.HttpServletResponse;
2828

2929
import org.eclipse.jetty.server.Request;
30+
import org.eclipse.jetty.server.Server;
31+
import org.eclipse.jetty.server.ServerConnector;
3032
import org.eclipse.jetty.server.handler.AbstractHandler;
3133
import org.testng.annotations.BeforeClass;
3234
import org.testng.annotations.Test;
@@ -50,10 +52,11 @@ public void handle(String s, Request r, HttpServletRequest httpRequest, HttpServ
5052

5153
@BeforeClass(alwaysRun = true)
5254
public void setUpGlobal() throws Exception {
53-
port1 = findFreePort();
54-
server = newJettyHttpServer(port1);
55+
server = new Server();
56+
ServerConnector connector = addHttpConnector(server);
5557
server.setHandler(new IdleStateHandler());
5658
server.start();
59+
port1 = connector.getLocalPort();
5760
logger.info("Local HTTP server started successfully");
5861
}
5962

client/src/test/java/org/asynchttpclient/MultipleHeaderTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package org.asynchttpclient;
1414

1515
import static org.asynchttpclient.Dsl.*;
16-
import static org.asynchttpclient.test.TestUtils.findFreePort;
1716
import static org.testng.Assert.*;
1817
import io.netty.handler.codec.http.HttpHeaders;
1918

@@ -33,6 +32,8 @@
3332
import java.util.concurrent.TimeUnit;
3433
import java.util.concurrent.TimeoutException;
3534

35+
import javax.net.ServerSocketFactory;
36+
3637
import org.testng.annotations.AfterClass;
3738
import org.testng.annotations.BeforeClass;
3839
import org.testng.annotations.Test;
@@ -45,11 +46,10 @@ public class MultipleHeaderTest extends AbstractBasicTest {
4546
private ServerSocket serverSocket;
4647
private Future<?> voidFuture;
4748

48-
@BeforeClass(alwaysRun = true)
49+
@BeforeClass
4950
public void setUpGlobal() throws Exception {
50-
port1 = findFreePort();
51-
52-
serverSocket = new ServerSocket(port1);
51+
serverSocket = ServerSocketFactory.getDefault().createServerSocket(0);
52+
port1 = serverSocket.getLocalPort();
5353
executorService = Executors.newFixedThreadPool(1);
5454
voidFuture = executorService.submit(new Callable<Void>() {
5555
public Void call() throws Exception {

client/src/test/java/org/asynchttpclient/NonAsciiContentLengthTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import javax.servlet.http.HttpServletResponse;
2929

3030
import org.eclipse.jetty.server.Request;
31+
import org.eclipse.jetty.server.Server;
32+
import org.eclipse.jetty.server.ServerConnector;
3133
import org.eclipse.jetty.server.handler.AbstractHandler;
3234
import org.testng.annotations.BeforeClass;
3335
import org.testng.annotations.Test;
@@ -36,8 +38,8 @@ public class NonAsciiContentLengthTest extends AbstractBasicTest {
3638

3739
@BeforeClass(alwaysRun = true)
3840
public void setUpGlobal() throws Exception {
39-
port1 = findFreePort();
40-
server = newJettyHttpServer(port1);
41+
server = new Server();
42+
ServerConnector connector = addHttpConnector(server);
4143
server.setHandler(new AbstractHandler() {
4244

4345
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
@@ -60,6 +62,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
6062
}
6163
});
6264
server.start();
65+
port1 = connector.getLocalPort();
6366
}
6467

6568
@Test(groups = "standalone")

client/src/test/java/org/asynchttpclient/PerRequestRelative302Test.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
import org.asynchttpclient.uri.Uri;
3333
import org.eclipse.jetty.server.Request;
34+
import org.eclipse.jetty.server.Server;
35+
import org.eclipse.jetty.server.ServerConnector;
3436
import org.eclipse.jetty.server.handler.AbstractHandler;
3537
import org.testng.annotations.BeforeClass;
3638
import org.testng.annotations.Test;
@@ -66,12 +68,12 @@ public void handle(String s, Request r, HttpServletRequest httpRequest, HttpServ
6668

6769
@BeforeClass(alwaysRun = true)
6870
public void setUpGlobal() throws Exception {
69-
port1 = findFreePort();
70-
port2 = findFreePort();
71-
server = newJettyHttpServer(port1);
71+
server = new Server();
72+
ServerConnector connector = addHttpConnector(server);
7273

7374
server.setHandler(new Relative302Handler());
7475
server.start();
76+
port1 = connector.getLocalPort();
7577
logger.info("Local HTTP server started successfully");
7678
}
7779

0 commit comments

Comments
 (0)