Use random port in the integration test
@@ -10,16 +10,23 @@ import com.twitter.util.Future;
import org.junit.Test;
import scala.runtime.BoxedUnit;
+import java.io.IOException;
+import java.net.ServerSocket;
+
import static org.junit.Assert.assertEquals;
public class FinagleIntegrationTest {
+
+ private static final int DEFAULT_PORT = 8079;
+
@Test
public void givenServerAndClient_whenRequestSent_thenClientShouldReceiveResponseFromServer() throws Exception {
// given
+ int port = randomPort();
Service serverService = new LogFilter().andThen(new GreetingService());
- Http.serve(":8080", serverService);
+ Http.serve(":" + port, serverService);
- Service<Request, Response> clientService = new LogFilter().andThen(Http.newService(":8080"));
+ Service<Request, Response> clientService = new LogFilter().andThen(Http.newService(":" + port));
// when
Request request = Request.apply(Method.Get(), "/?name=John");
@@ -37,4 +44,13 @@ public class FinagleIntegrationTest {
})
);
}
+
+ private int randomPort() {
+ try (ServerSocket socket = new ServerSocket(0)) {
+ return socket.getLocalPort();
+
+ } catch (IOException e) {
+ return DEFAULT_PORT;
+ }
+ }
}
