Skip to content

Commit d7ec7c1

Browse files
fanquakevijaydasmp
authored andcommitted
Merge bitcoin#28028: test: Check expected_stderr after stop
faf9028 test: Check expected_stderr after stop (MarcoFalke) Pull request description: This fixes a bug where stderr wasn't checked for the shutdown sequence. Fix that by waiting for the shutdown to finish and then check stderr. ACKs for top commit: theStack: ACK faf9028 Tree-SHA512: a70cd1e6cda84d542782e41e8b59741dbcd472c0d0575bcef5cbfd1418473ce94efe921481d557bae3fbbdd78f1c49c09c48872883c052d87c5c9a9a51492692
1 parent cb7daa5 commit d7ec7c1

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

test/functional/feature_abortnode.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def run_test(self):
4141

4242
# Check that node0 aborted
4343
self.log.info("Waiting for crash")
44-
self.nodes[0].wait_until_stopped(timeout=200)
44+
self.nodes[0].wait_until_stopped(timeout=5, expected_stderr="Error: A fatal internal error occurred, see debug.log for details")
4545
self.log.info("Node crashed - now verifying restart fails")
4646
self.nodes[0].assert_start_raises_init_error()
4747

test/functional/test_framework/test_node.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -389,21 +389,13 @@ def stop_node(self, expected_stderr='', *, wait=0, wait_until_stopped=True):
389389
for profile_name in tuple(self.perf_subprocesses.keys()):
390390
self._stop_perf(profile_name)
391391

392-
# Check that stderr is as expected
393-
self.stderr.seek(0)
394-
stderr = self.stderr.read().decode('utf-8').strip()
395-
if stderr != expected_stderr:
396-
raise AssertionError("Unexpected stderr {} != {}".format(stderr, expected_stderr))
397-
398-
self.stdout.close()
399-
self.stderr.close()
400-
401392
del self.p2ps[:]
402393

394+
assert (not expected_stderr) or wait_until_stopped # Must wait to check stderr
403395
if wait_until_stopped:
404-
self.wait_until_stopped()
396+
self.wait_until_stopped(expected_stderr=expected_stderr)
405397

406-
def is_node_stopped(self):
398+
def is_node_stopped(self, *, expected_stderr=""):
407399
"""Checks whether the node has stopped.
408400
409401
Returns True if the node has stopped. False otherwise.
@@ -415,8 +407,17 @@ def is_node_stopped(self):
415407
return False
416408

417409
# process has stopped. Assert that it didn't return an error code.
410+
418411
assert return_code == 0, self._node_msg(
419412
"Node returned non-zero exit code (%d) when stopping" % return_code)
413+
# Check that stderr is as expected
414+
self.stderr.seek(0)
415+
stderr = self.stderr.read().decode('utf-8').strip()
416+
if stderr != expected_stderr:
417+
raise AssertionError("Unexpected stderr {} != {}".format(stderr, expected_stderr))
418+
419+
self.stdout.close()
420+
self.stderr.close()
420421
self.running = False
421422
self.process = None
422423
self.rpc_connected = False

0 commit comments

Comments
 (0)