]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: drv-net: Make rand_port() get a port more reliably
authorGal Pressman <gal@nvidia.com>
Mon, 24 Feb 2025 17:44:15 +0000 (19:44 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 26 Feb 2025 02:31:05 +0000 (18:31 -0800)
Instead of guessing a port and checking whether it's available, get an
available port from the OS.

Reviewed-by: Nimrod Oren <noren@nvidia.com>
Signed-off-by: Gal Pressman <gal@nvidia.com>
Link: https://patch.msgid.link/20250224174416.499070-4-gal@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/lib/py/utils.py

index d879700ef2b985ab00bc62faddbdd68dba13b2ff..a6af97c7e2838c957a54db48a52939d1c002c3ff 100644 (file)
@@ -187,18 +187,11 @@ def ethtool(args, json=None, ns=None, host=None):
 
 def rand_port():
     """
-    Get a random unprivileged port, try to make sure it's not already used.
+    Get a random unprivileged port.
     """
-    for _ in range(1000):
-        port = random.randint(10000, 65535)
-        try:
-            with socket.socket(socket.AF_INET6, socket.SOCK_STREAM) as s:
-                s.bind(("", port))
-            return port
-        except OSError as e:
-            if e.errno != errno.EADDRINUSE:
-                raise
-    raise Exception("Can't find any free unprivileged port")
+    with socket.socket(socket.AF_INET6, socket.SOCK_STREAM) as s:
+        s.bind(("", 0))
+        return s.getsockname()[1]
 
 
 def wait_port_listen(port, proto="tcp", ns=None, host=None, sleep=0.005, deadline=5):