You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by li...@apache.org on 2023/02/02 12:58:35 UTC

[arrow] branch master updated: GH-33993: [Java] Let OS assign port in tests while creating Flight server (#33992)

This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new a0d0ecee71 GH-33993: [Java] Let OS assign port in tests while creating Flight server (#33992)
a0d0ecee71 is described below

commit a0d0ecee71b99b45f2c1b269c70033d39b982d00
Author: rtadepalli <10...@users.noreply.github.com>
AuthorDate: Thu Feb 2 07:58:27 2023 -0500

    GH-33993: [Java] Let OS assign port in tests while creating Flight server (#33992)
    
    
    
    ### Rationale for this change
    
    Sometimes tests are flaky because the current port selection algorithm selects a random port between the ranges 49152-54152. This change makes it such that the OS will assign the next free port without us searching for a port in this range.
    
    ### What changes are included in this PR?
    
    This PR makes use of  `java.net.ServerSocket`'s ability to assign the next free port if 0 is passed as the port number.
    
    ### Are these changes tested?
    
    If existing tests pass, there's confirmation that the Flight server is able to come up successfully, thereby no new tests should be needed.
    
    ### Are there any user-facing changes?
    
    No, there are no user facing changes.
    
    * Closes: #32954
    * Closes: #33993
    
    Authored-by: Ramasai <ra...@gmail.com>
    Signed-off-by: David Li <li...@gmail.com>
---
 .../src/test/java/org/apache/arrow/flight/FlightTestUtil.java    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java b/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java
index a0eb80daca..b50613311b 100644
--- a/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java
+++ b/java/flight/flight-core/src/test/java/org/apache/arrow/flight/FlightTestUtil.java
@@ -20,6 +20,7 @@ package org.apache.arrow.flight;
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
+import java.net.ServerSocket;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
@@ -51,7 +52,13 @@ public class FlightTestUtil {
     IOException lastThrown = null;
     T server = null;
     for (int x = 0; x < 3; x++) {
-      final int port = 49152 + RANDOM.nextInt(5000);
+      int port;
+      try (final ServerSocket dynamicPortSocket = new ServerSocket(0)) {
+        port = dynamicPortSocket.getLocalPort();
+      } catch (SecurityException | IOException e) {
+        throw new RuntimeException("Unable to create a ServerSocket instance. ", e);
+      }
+
       final Location location = Location.forGrpcInsecure(LOCALHOST, port);
       lastThrown = null;
       try {