commit a02d6c560d8b574003b4c34907c1656f8c57e857 Author: teor teor@torproject.org Date: Sat Oct 6 16:10:37 2018 -0500
Make test_rebind.py timeout when waiting for a log message
Closes #27968. --- src/test/test_rebind.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/test/test_rebind.py b/src/test/test_rebind.py index 3600dd5d5..5e671de30 100644 --- a/src/test/test_rebind.py +++ b/src/test/test_rebind.py @@ -8,6 +8,10 @@ import time import random import errno
+LOG_TIMEOUT = 60.0 +LOG_WAIT = 0.1 +LOG_CHECK_LIMIT = LOG_TIMEOUT / LOG_WAIT + def fail(msg): print('FAIL') sys.exit(msg) @@ -20,10 +24,19 @@ def try_connecting_to_socksport(): socks_socket.close()
def wait_for_log(s): - while True: + log_checked = 0 + while log_checked < LOG_CHECK_LIMIT: l = tor_process.stdout.readline() - if s in l.decode('utf8'): + l = l.decode('utf8') + if s in l: return + print('Tor logged: "{}", waiting for "{}"'.format(l.strip(), s)) + # readline() returns a blank string when there is no output + # avoid busy-waiting + if len(s) == 0: + time.sleep(LOG_WAIT) + log_checked += 1 + fail('Could not find "{}" in logs after {} seconds'.format(s, LOG_TIMEOUT))
def pick_random_port(): port = 0
tor-commits@lists.torproject.org