From: teor Date: Sat, 6 Oct 2018 21:10:37 +0000 (-0500) Subject: Make test_rebind.py timeout when waiting for a log message X-Git-Tag: tor-0.3.5.4-alpha~14^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a02d6c560d8b574003b4c34907c1656f8c57e857;p=thirdparty%2Ftor.git Make test_rebind.py timeout when waiting for a log message Closes #27968. --- diff --git a/src/test/test_rebind.py b/src/test/test_rebind.py index 3600dd5d58..5e671de308 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