mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-02 08:51:21 +01:00
[tests] fix timeout issues from TestNode
Fixes a couple of bugs from the introduction of TestNode: - test scripts were no longer able to specify a custom timeout for starting a node. Therefore tests with nodes that take a long time to start up (eg pruning.py) would fail. - the test for whether a node has failed on start up was broken by changing 'assert x is None' to 'assert not x'. Since subprocess.poll() can return None (indicating the node is still running) or 0 (indicating the node exited with return code 0), this was a regression.
This commit is contained in:
@@ -34,7 +34,11 @@ class TestNode():
|
||||
self.index = i
|
||||
self.datadir = os.path.join(dirname, "node" + str(i))
|
||||
self.rpchost = rpchost
|
||||
self.rpc_timeout = timewait
|
||||
if timewait:
|
||||
self.rpc_timeout = timewait
|
||||
else:
|
||||
# Wait for up to 60 seconds for the RPC server to respond
|
||||
self.rpc_timeout = 60
|
||||
if binary is None:
|
||||
self.binary = os.getenv("BITCOIND", "bitcoind")
|
||||
else:
|
||||
@@ -65,10 +69,10 @@ class TestNode():
|
||||
|
||||
def wait_for_rpc_connection(self):
|
||||
"""Sets up an RPC connection to the bitcoind process. Returns False if unable to connect."""
|
||||
timeout_s = 60 # Wait for up to 60 seconds for the RPC server to respond
|
||||
poll_per_s = 4 # Poll at a rate of four times per second
|
||||
for _ in range(timeout_s*poll_per_s):
|
||||
assert not self.process.poll(), "bitcoind exited with status %i during initialization" % self.process.returncode
|
||||
# Poll at a rate of four times per second
|
||||
poll_per_s = 4
|
||||
for _ in range(poll_per_s * self.rpc_timeout):
|
||||
assert self.process.poll() is None, "bitcoind exited with status %i during initialization" % self.process.returncode
|
||||
try:
|
||||
self.rpc = get_rpc_proxy(rpc_url(self.datadir, self.index, self.rpchost), self.index, coveragedir=self.coverage_dir)
|
||||
self.rpc.getblockcount()
|
||||
|
||||
Reference in New Issue
Block a user