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