Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#29070: test: add TestNode wait_until helper
Browse files Browse the repository at this point in the history
bf0f7db test: add TestNode wait_until helper (Nikodemas Tuckus)

Pull request description:

  Add `wait_until` method that wraps the `wait_until_helper_internal` call.

  Closes bitcoin/bitcoin#29029.

ACKs for top commit:
  maflcko:
    lgtm ACK bf0f7db
  mohamedawnallah:
    LGTM! Code Review ACK bitcoin/bitcoin@bf0f7db
  achow101:
    ACK bf0f7db
  BrandonOdiwuor:
    Code review ACK bf0f7db

Tree-SHA512: 05aab589c814f51a14e1483eb57c10b88385714e3eb2d0973c0ee2877f2b963a76837f34215fe2e6bd1c8d735f5af7dd2098331e1eda28587f39e513bc6e1a6a
  • Loading branch information
achow101 committed Dec 14, 2023
2 parents 4d7b787 + bf0f7db commit 9860471
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions test/functional/test_framework/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ def wait_for_rpc_connection(self):
if self.version_is_at_least(190000):
# getmempoolinfo.loaded is available since commit
# bb8ae2c (version 0.19.0)
wait_until_helper_internal(lambda: rpc.getmempoolinfo()['loaded'], timeout_factor=self.timeout_factor)
self.wait_until(lambda: rpc.getmempoolinfo()['loaded'])
# Wait for the node to finish reindex, block import, and
# loading the mempool. Usually importing happens fast or
# even "immediate" when the node is started. However, there
Expand Down Expand Up @@ -414,7 +414,7 @@ def is_node_stopped(self, *, expected_stderr="", expected_ret_code=0):

def wait_until_stopped(self, *, timeout=BITCOIND_PROC_WAIT_TIMEOUT, expect_error=False, **kwargs):
expected_ret_code = 1 if expect_error else 0 # Whether node shutdown return EXIT_FAILURE or EXIT_SUCCESS
wait_until_helper_internal(lambda: self.is_node_stopped(expected_ret_code=expected_ret_code, **kwargs), timeout=timeout, timeout_factor=self.timeout_factor)
self.wait_until(lambda: self.is_node_stopped(expected_ret_code=expected_ret_code, **kwargs), timeout=timeout)

def replace_in_config(self, replacements):
"""
Expand Down Expand Up @@ -534,8 +534,7 @@ def get_highest_peer_id():

initial_peer_id = get_highest_peer_id()
yield
wait_until_helper_internal(lambda: get_highest_peer_id() > initial_peer_id,
timeout=timeout, timeout_factor=self.timeout_factor)
self.wait_until(lambda: get_highest_peer_id() > initial_peer_id, timeout=timeout)

@contextlib.contextmanager
def profile_with_perf(self, profile_name: str):
Expand Down Expand Up @@ -747,7 +746,7 @@ def disconnect_p2ps(self):
p.peer_disconnect()
del self.p2ps[:]

wait_until_helper_internal(lambda: self.num_test_p2p_connections() == 0, timeout_factor=self.timeout_factor)
self.wait_until(lambda: self.num_test_p2p_connections() == 0)

def bumpmocktime(self, seconds):
"""Fast forward using setmocktime to self.mocktime + seconds. Requires setmocktime to have
Expand All @@ -756,6 +755,9 @@ def bumpmocktime(self, seconds):
self.mocktime += seconds
self.setmocktime(self.mocktime)

def wait_until(self, test_function, timeout=60):
return wait_until_helper_internal(test_function, timeout=timeout, timeout_factor=self.timeout_factor)


class TestNodeCLIAttr:
def __init__(self, cli, command):
Expand Down

0 comments on commit 9860471

Please sign in to comment.