From 25caa34eac25e848735a63210c115c29a89092e9 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Fri, 28 Jan 2022 11:12:30 -0800 Subject: [PATCH] Ensure unique ports for multi-process tests --- tests/TestRunner/local_cluster.py | 14 +++++++++++++- tests/TestRunner/tmp_cluster.py | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/TestRunner/local_cluster.py b/tests/TestRunner/local_cluster.py index 660519334dc..1f733aa4d65 100644 --- a/tests/TestRunner/local_cluster.py +++ b/tests/TestRunner/local_cluster.py @@ -7,12 +7,24 @@ import socket -def get_free_port(): +def _get_free_port_internal(): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(('0.0.0.0', 0)) return s.getsockname()[1] +_used_ports = set() + + +def get_free_port(): + global _used_ports + port = _get_free_port_internal() + while port in _used_ports: + port = _get_free_port_internal() + _used_ports.add(port) + return port + + class LocalCluster: configuration_template = """ ## foundationdb.conf diff --git a/tests/TestRunner/tmp_cluster.py b/tests/TestRunner/tmp_cluster.py index 6f8f94f532e..eec0535bc4c 100755 --- a/tests/TestRunner/tmp_cluster.py +++ b/tests/TestRunner/tmp_cluster.py @@ -129,6 +129,10 @@ def close(self): break if errcode: + for etc_file in glob.glob(os.path.join(cluster.etc, "*")): + print(">>>>>>>>>>>>>>>>>>>> Contents of {}:".format(etc_file)) + with open(etc_file, "r") as f: + print(f.read()) for log_file in glob.glob(os.path.join(cluster.log, "*")): print(">>>>>>>>>>>>>>>>>>>> Contents of {}:".format(log_file)) with open(log_file, "r") as f: