aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-12-10 18:37:50 +0100
committerMarcoFalke <falke.marco@gmail.com>2020-12-10 18:38:18 +0100
commitda957cd62ecc7fde5fa1dfcd134a73b388c2d438 (patch)
tree887babd40bfa349f254f28177960c885800874be /test
parentb76abae387b9ac2526c315c95b0f2da8c78e16fc (diff)
parentfa918dd537fea775c19a590e5f9161bf51a5839b (diff)
downloadbitcoin-da957cd62ecc7fde5fa1dfcd134a73b388c2d438.tar.xz
Merge #20613: test: Use Popen.wait instead of RPC in assert_start_raises_init_error
fa918dd537fea775c19a590e5f9161bf51a5839b 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~~ fa918dd537fea775c19a590e5f9161bf51a5839b darosior: ACK fa918dd537fea775c19a590e5f9161bf51a5839b Tree-SHA512: 5368ad0d0ea2deb0af9582a42667c9290efe8f2705f37a236afc2c7908b04265ab342e2dd356a57156e99389f4a27ab6da9fa7bf9161fb7568240aa005e693b9
Diffstat (limited to 'test')
-rwxr-xr-xtest/functional/test_framework/test_node.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py
index 0a5b7f551c..a618706a77 100755
--- a/test/functional/test_framework/test_node.py
+++ b/test/functional/test_framework/test_node.py
@@ -482,11 +482,8 @@ class TestNode():
tempfile.NamedTemporaryFile(dir=self.stdout_dir, delete=False) as log_stdout:
try:
self.start(extra_args, stdout=log_stdout, stderr=log_stderr, *args, **kwargs)
- self.wait_for_rpc_connection()
- self.stop_node()
- self.wait_until_stopped()
- except FailedToStartError as e:
- self.log.debug('bitcoind failed to start: %s', e)
+ ret = self.process.wait(timeout=self.rpc_timeout)
+ self.log.debug(self._node_msg(f'bitcoind exited with status {ret} during initialization'))
self.running = False
self.process = None
# Check stderr for expected message
@@ -505,11 +502,15 @@ class TestNode():
if expected_msg != stderr:
self._raise_assertion_error(
'Expected message "{}" does not fully match stderr:\n"{}"'.format(expected_msg, stderr))
- else:
+ except subprocess.TimeoutExpired:
+ self.process.kill()
+ self.running = False
+ self.process = None
+ assert_msg = f'bitcoind should have exited within {self.rpc_timeout}s '
if expected_msg is None:
- assert_msg = "bitcoind should have exited with an error"
+ assert_msg += "with an error"
else:
- assert_msg = "bitcoind should have exited with expected error " + expected_msg
+ assert_msg += "with expected error " + expected_msg
self._raise_assertion_error(assert_msg)
def add_p2p_connection(self, p2p_conn, *, wait_for_verack=True, **kwargs):