mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-10-11 03:53:22 +02:00
test: Check expected_stderr after stop
This commit is contained in:
@@ -36,7 +36,7 @@ class AbortNodeTest(BitcoinTestFramework):
|
|||||||
|
|
||||||
# Check that node0 aborted
|
# Check that node0 aborted
|
||||||
self.log.info("Waiting for crash")
|
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.log.info("Node crashed - now verifying restart fails")
|
||||||
self.nodes[0].assert_start_raises_init_error()
|
self.nodes[0].assert_start_raises_init_error()
|
||||||
|
|
||||||
|
@@ -353,21 +353,13 @@ class TestNode():
|
|||||||
for profile_name in tuple(self.perf_subprocesses.keys()):
|
for profile_name in tuple(self.perf_subprocesses.keys()):
|
||||||
self._stop_perf(profile_name)
|
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[:]
|
del self.p2ps[:]
|
||||||
|
|
||||||
|
assert (not expected_stderr) or wait_until_stopped # Must wait to check stderr
|
||||||
if wait_until_stopped:
|
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.
|
"""Checks whether the node has stopped.
|
||||||
|
|
||||||
Returns True if the node has stopped. False otherwise.
|
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.
|
# process has stopped. Assert that it didn't return an error code.
|
||||||
assert return_code == expected_ret_code, self._node_msg(
|
assert return_code == expected_ret_code, self._node_msg(
|
||||||
f"Node returned unexpected exit code ({return_code}) vs ({expected_ret_code}) when stopping")
|
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.running = False
|
||||||
self.process = None
|
self.process = None
|
||||||
self.rpc_connected = False
|
self.rpc_connected = False
|
||||||
@@ -388,9 +389,9 @@ class TestNode():
|
|||||||
self.log.debug("Node stopped")
|
self.log.debug("Node stopped")
|
||||||
return True
|
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
|
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):
|
def replace_in_config(self, replacements):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user