I think this provides useful information when the wait_until() fails.
Without this change:
2018-03-19T18:29:56.324000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/home/ubuntu/bitcoin/test/functional/test_framework/test_framework.py", line 126, in main
self.run_test()
File "./feature_block.py", line 502, in run_test
self.sync_blocks([b40], False, 16, b'bad-blk-sigops', reconnect=True)
File "./feature_block.py", line 1315, in sync_blocks
self.nodes[0].p2p.send_blocks_and_test(blocks, self.nodes[0], success=success, reject_code=reject_code, reject_reason=reject_reason, request_block=request_block, timeout=timeout)
File "/home/ubuntu/bitcoin/test/functional/test_framework/mininode.py", line 553, in send_blocks_and_test
wait_until(lambda: self.reject_code_received == reject_code, lock=mininode_lock, timeout=1)
File "/home/ubuntu/bitcoin/test/functional/test_framework/util.py", line 222, in wait_until
assert_greater_than(timeout, time.time())
File "/home/ubuntu/bitcoin/test/functional/test_framework/util.py", line 42, in assert_greater_than
raise AssertionError("%s <= %s" % (str(thing1), str(thing2)))
AssertionError: 1521484196.279766 <= 1521484196.3246927
With this change:
2018-03-19T18:27:45.353000Z TestFramework (INFO): Reject a block with too many P2SH sigops
2018-03-19T18:27:48.557000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ([' wait_until(lambda: self.reject_code_received == reject_code, lock=mininode_lock, timeout=1)\n'], 553)
2018-03-19T18:27:48.557000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/home/ubuntu/bitcoin/test/functional/test_framework/test_framework.py", line 126, in main
self.run_test()
File "./feature_block.py", line 502, in run_test
self.sync_blocks([b40], False, 16, b'bad-blk-sigops', reconnect=True)
File "./feature_block.py", line 1315, in sync_blocks
self.nodes[0].p2p.send_blocks_and_test(blocks, self.nodes[0], success=success, reject_code=reject_code, reject_reason=reject_reason, request_block=request_block, timeout=timeout)
File "/home/ubuntu/bitcoin/test/functional/test_framework/mininode.py", line 553, in send_blocks_and_test
wait_until(lambda: self.reject_code_received == reject_code, lock=mininode_lock, timeout=1)
File "/home/ubuntu/bitcoin/test/functional/test_framework/util.py", line 227, in wait_until
raise AssertionError("Predicate {} not true after {} seconds".format(predicate_source, timeout))
AssertionError: Predicate ([' wait_until(lambda: self.reject_code_received == reject_code, lock=mininode_lock, timeout=1)\n'], 553) not true after 1 seconds