mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
test: Check expected_stderr after stop
This commit is contained in:
parent
79e8247ddb
commit
faf902858d
@ -36,7 +36,7 @@ class AbortNodeTest(BitcoinTestFramework):
|
||||
|
||||
# Check that node0 aborted
|
||||
self.log.info("Waiting for crash")
|
||||
self.nodes[0].wait_until_stopped(timeout=5, expect_error=True)
|
||||
self.nodes[0].wait_until_stopped(timeout=5, expect_error=True, expected_stderr="Error: A fatal internal error occurred, see debug.log for details")
|
||||
self.log.info("Node crashed - now verifying restart fails")
|
||||
self.nodes[0].assert_start_raises_init_error()
|
||||
|
||||
|
@ -353,21 +353,13 @@ class TestNode():
|
||||
for profile_name in tuple(self.perf_subprocesses.keys()):
|
||||
self._stop_perf(profile_name)
|
||||
|
||||
# Check that stderr is as expected
|
||||
self.stderr.seek(0)
|
||||
stderr = self.stderr.read().decode('utf-8').strip()
|
||||
if stderr != expected_stderr:
|
||||
raise AssertionError("Unexpected stderr {} != {}".format(stderr, expected_stderr))
|
||||
|
||||
self.stdout.close()
|
||||
self.stderr.close()
|
||||
|
||||
del self.p2ps[:]
|
||||
|
||||
assert (not expected_stderr) or wait_until_stopped # Must wait to check stderr
|
||||
if wait_until_stopped:
|
||||
self.wait_until_stopped()
|
||||
self.wait_until_stopped(expected_stderr=expected_stderr)
|
||||
|
||||
def is_node_stopped(self, expected_ret_code=0):
|
||||
def is_node_stopped(self, *, expected_stderr="", expected_ret_code=0):
|
||||
"""Checks whether the node has stopped.
|
||||
|
||||
Returns True if the node has stopped. False otherwise.
|
||||
@ -381,6 +373,15 @@ class TestNode():
|
||||
# process has stopped. Assert that it didn't return an error code.
|
||||
assert return_code == expected_ret_code, self._node_msg(
|
||||
f"Node returned unexpected exit code ({return_code}) vs ({expected_ret_code}) when stopping")
|
||||
# Check that stderr is as expected
|
||||
self.stderr.seek(0)
|
||||
stderr = self.stderr.read().decode('utf-8').strip()
|
||||
if stderr != expected_stderr:
|
||||
raise AssertionError("Unexpected stderr {} != {}".format(stderr, expected_stderr))
|
||||
|
||||
self.stdout.close()
|
||||
self.stderr.close()
|
||||
|
||||
self.running = False
|
||||
self.process = None
|
||||
self.rpc_connected = False
|
||||
@ -388,9 +389,9 @@ class TestNode():
|
||||
self.log.debug("Node stopped")
|
||||
return True
|
||||
|
||||
def wait_until_stopped(self, timeout=BITCOIND_PROC_WAIT_TIMEOUT, expect_error=False):
|
||||
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(lambda: self.is_node_stopped(expected_ret_code=expected_ret_code), timeout=timeout, timeout_factor=self.timeout_factor)
|
||||
wait_until_helper(lambda: self.is_node_stopped(expected_ret_code=expected_ret_code, **kwargs), timeout=timeout, timeout_factor=self.timeout_factor)
|
||||
|
||||
def replace_in_config(self, replacements):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user