Skip to content

Commit da957cd

Browse files
author
MarcoFalke
committed
Merge #20613: test: Use Popen.wait instead of RPC in assert_start_raises_init_error
fa918dd test: Use Popen.wait instead of RPC in assert_start_raises_init_error (MarcoFalke) Pull request description: Using RPC (`wait_for_rpc_connection`) has several issue: * It polls in a loop, which might be slow * It tries to read the RPC cookie file, which might not be present, thus leading to intermittent issues Fix both by using `Popen.wait` ACKs for top commit: laanwj: Code review ACK ~~faf7b05be9c86ee61c39e5314511fe2410128a6b~~ fa918dd darosior: ACK fa918dd Tree-SHA512: 5368ad0d0ea2deb0af9582a42667c9290efe8f2705f37a236afc2c7908b04265ab342e2dd356a57156e99389f4a27ab6da9fa7bf9161fb7568240aa005e693b9
2 parents b76abae + fa918dd commit da957cd

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

test/functional/test_framework/test_node.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -482,11 +482,8 @@ def assert_start_raises_init_error(self, extra_args=None, expected_msg=None, mat
482482
tempfile.NamedTemporaryFile(dir=self.stdout_dir, delete=False) as log_stdout:
483483
try:
484484
self.start(extra_args, stdout=log_stdout, stderr=log_stderr, *args, **kwargs)
485-
self.wait_for_rpc_connection()
486-
self.stop_node()
487-
self.wait_until_stopped()
488-
except FailedToStartError as e:
489-
self.log.debug('bitcoind failed to start: %s', e)
485+
ret = self.process.wait(timeout=self.rpc_timeout)
486+
self.log.debug(self._node_msg(f'bitcoind exited with status {ret} during initialization'))
490487
self.running = False
491488
self.process = None
492489
# Check stderr for expected message
@@ -505,11 +502,15 @@ def assert_start_raises_init_error(self, extra_args=None, expected_msg=None, mat
505502
if expected_msg != stderr:
506503
self._raise_assertion_error(
507504
'Expected message "{}" does not fully match stderr:\n"{}"'.format(expected_msg, stderr))
508-
else:
505+
except subprocess.TimeoutExpired:
506+
self.process.kill()
507+
self.running = False
508+
self.process = None
509+
assert_msg = f'bitcoind should have exited within {self.rpc_timeout}s '
509510
if expected_msg is None:
510-
assert_msg = "bitcoind should have exited with an error"
511+
assert_msg += "with an error"
511512
else:
512-
assert_msg = "bitcoind should have exited with expected error " + expected_msg
513+
assert_msg += "with expected error " + expected_msg
513514
self._raise_assertion_error(assert_msg)
514515

515516
def add_p2p_connection(self, p2p_conn, *, wait_for_verack=True, **kwargs):

0 commit comments

Comments
 (0)