diff options
author | John Newbery <john@johnnewbery.com> | 2017-12-13 14:39:44 -0500 |
---|---|---|
committer | John Newbery <john@johnnewbery.com> | 2018-03-19 14:26:12 -0400 |
commit | 265d7c44b1aae06aee93f745a865807732218a73 (patch) | |
tree | 87b07c01384fd6403576cb3f7e14e30f0be50cc8 | |
parent | ebf053ac6135941907ecfebccc778da34b585fac (diff) | |
download | bitcoin-265d7c44b1aae06aee93f745a865807732218a73.tar.xz |
[tests] Improve assert message when wait_until() fails
-rw-r--r-- | test/functional/test_framework/util.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py index 7be695550b..e676805f3d 100644 --- a/test/functional/test_framework/util.py +++ b/test/functional/test_framework/util.py @@ -8,6 +8,7 @@ from base64 import b64encode from binascii import hexlify, unhexlify from decimal import Decimal, ROUND_DOWN import hashlib +import inspect import json import logging import os @@ -204,9 +205,9 @@ def wait_until(predicate, *, attempts=float('inf'), timeout=float('inf'), lock=N if attempts == float('inf') and timeout == float('inf'): timeout = 60 attempt = 0 - timeout += time.time() + time_end = time.time() + timeout - while attempt < attempts and time.time() < timeout: + while attempt < attempts and time.time() < time_end: if lock: with lock: if predicate(): @@ -218,8 +219,12 @@ def wait_until(predicate, *, attempts=float('inf'), timeout=float('inf'), lock=N time.sleep(0.05) # Print the cause of the timeout - assert_greater_than(attempts, attempt) - assert_greater_than(timeout, time.time()) + predicate_source = inspect.getsourcelines(predicate) + logger.error("wait_until() failed. Predicate: {}".format(predicate_source)) + if attempt >= attempts: + raise AssertionError("Predicate {} not true after {} attempts".format(predicate_source, attempts)) + elif time.time() >= time_end: + raise AssertionError("Predicate {} not true after {} seconds".format(predicate_source, timeout)) raise RuntimeError('Unreachable') # RPC/P2P connection constants and functions |