Changeset: 6e247bbd7b02 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6e247bbd7b02
Modified Files:
        common/stream/Tests/urlstream.py
Branch: Sep2022
Log Message:

Let the HTTP server choose a free port.
This seems to fix the test on the mac.


diffs (62 lines):

diff --git a/common/stream/Tests/urlstream.py b/common/stream/Tests/urlstream.py
--- a/common/stream/Tests/urlstream.py
+++ b/common/stream/Tests/urlstream.py
@@ -10,18 +10,12 @@ import time
 
 OUTPUT = io.StringIO()
 
-def pickport():
-        # pick a free port number
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        s.bind(('', 0))
-        port = s.getsockname()[1]
-        s.close()
-        return port
-
-
-def wait_for_server(port, timeout):
+def wait_for_server(timeout):
     deadline = time.time() + timeout
     while time.time() < deadline:
+        if port == 0:
+            time.sleep(0.25)
+            continue
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         s.settimeout(0.1)
         try:
@@ -31,7 +25,8 @@ def wait_for_server(port, timeout):
             time.sleep(0.1)
         finally:
             s.close()
-    print(f'Warning: waited {timeout} seconds for the server to start but 
could still not connect', file=OUTPUT)
+    else:
+        print(f'Warning: waited {timeout} seconds for the server to start but 
could still not connect', file=OUTPUT)
 
 
 class Handler(http.server.BaseHTTPRequestHandler):
@@ -72,17 +67,19 @@ class Handler(http.server.BaseHTTPReques
             self.end_headers()
             self.wfile.write(b'NOT FOUND\n')
 
-def runserver(port):
-    addr = ('', port)
+def runserver():
+    global port
+    addr = ('', 0)
+    srv = http.server.HTTPServer(addr, Handler)
+    port = srv.server_port
     print(f"Listening on {port}", file=OUTPUT)
-    srv = http.server.HTTPServer(addr, Handler)
     srv.serve_forever()
 
 # Start the http server
-port = pickport()
-t = threading.Thread(target=lambda: runserver(port), daemon=True)
+port = 0
+t = threading.Thread(target=lambda: runserver(), daemon=True)
 t.start()
-wait_for_server(port, 5.0)
+wait_for_server(5.0)
 
 url = f'http://localhost:{port}'
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to