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

Use a barrier to synchronize starting the server and the client.


diffs (54 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
@@ -9,25 +9,6 @@ import time
 
 OUTPUT = io.StringIO()
 
-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:
-            s.connect(('localhost', port))
-            break
-        except ConnectionRefusedError:
-            time.sleep(0.1)
-        finally:
-            s.close()
-    else:
-        print(f'Warning: waited {timeout} seconds for the server to start but 
could still not connect', file=OUTPUT)
-
-
 class Handler(http.server.BaseHTTPRequestHandler):
     def log_message(self, format, *args):
         # add a # at the beginning of the line to not mess up Mtest diffs
@@ -66,19 +47,23 @@ class Handler(http.server.BaseHTTPReques
             self.end_headers()
             self.wfile.write(b'NOT FOUND\n')
 
+b = threading.Barrier(2)
+
 def runserver():
     global port
     addr = ('127.0.0.1', 0)
     srv = http.server.HTTPServer(addr, Handler)
     port = srv.server_port
     print(f"Listening on {port}", file=OUTPUT)
+    b.wait()
     srv.serve_forever()
 
 # Start the http server
 port = 0
 t = threading.Thread(target=lambda: runserver(), daemon=True)
 t.start()
-wait_for_server(5.0)
+# and wait for it to fill in the port
+b.wait()
 
 url = f'http://localhost:{port}'
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to