mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 14:53:43 +01:00
356883f0e4qa-tests: Log expected output in debug (Hodlinator)7427a03b5aqa-tests: Add test for timeouts due to missing init errors (Hodlinator)d7f703c1f1refactor(qa-tests): Extract InternalDurationTestMixin for use in next commit (Hodlinator)69bcfcad8cfix(qa-tests): Bring back decoding of exception field (Hodlinator)fb43b2f8ccqa: Improve assert_start_raises_init_error output (Hodlinator) Pull request description: Raising a new exception from within a Python `except`-block, as `assert_start_raises_init_error()` does, causes the interpreter to generate extra error output which is unnecessary in this case. <details><summary>Example output before & after this PR</summary> Before: ``` 2025-07-08T20:05:48.407001Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 686, in assert_start_raises_init_error ret = self.process.wait(timeout=self.rpc_timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/fqm9bqqlmaqqr02qbalm1bazp810qfiw-python3-3.12.9/lib/python3.12/subprocess.py", line 1266, in wait return self._wait(timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/fqm9bqqlmaqqr02qbalm1bazp810qfiw-python3-3.12.9/lib/python3.12/subprocess.py", line 2053, in _wait raise TimeoutExpired(self.args, timeout) subprocess.TimeoutExpired: Command '['/home/hodlinator/bitcoin/build/bin/bitcoind', '-datadir=/tmp/bitcoin_func_test_v96lkcq8/eb2665c7/node0', '-logtimemicros', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-debugexclude=rand', '-uacomment=testnode0', '-disablewallet', '-logthreadnames', '-logsourcelocations', '-loglevel=trace', '-v2transport=0']' timed out after 3 seconds During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 186, in main self.setup() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 358, in setup self.setup_network() File "/home/hodlinator/bitcoin/build/test/functional/feature_framework_startup_failures.py", line 151, in setup_network self.nodes[0].assert_start_raises_init_error() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 716, in assert_start_raises_init_error self._raise_assertion_error(assert_msg) File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 196, in _raise_assertion_error raise AssertionError(self._node_msg(msg)) AssertionError: [node 0] bitcoind should have exited within 3s with an error ``` After: ``` 2025-07-08T20:09:15.330589Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 186, in main self.setup() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 358, in setup self.setup_network() File "/home/hodlinator/bitcoin/build/test/functional/feature_framework_startup_failures.py", line 151, in setup_network self.nodes[0].assert_start_raises_init_error() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 720, in assert_start_raises_init_error self._raise_assertion_error(assert_msg) File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 196, in _raise_assertion_error raise AssertionError(self._node_msg(msg)) AssertionError: [node 0] bitcoind should have exited within 3s with an error (cmd: ['/home/hodlinator/bitcoin/build/bin/bitcoind', '-datadir=/tmp/bitcoin_func_test_v96lkcq8/eb2665c7/node0', '-logtimemicros', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-debugexclude=rand', '-uacomment=testnode0', '-disablewallet', '-logthreadnames', '-logsourcelocations', '-loglevel=trace', '-v2transport=0']) ``` </details> --- Can be tested on this PR by: 1. Execute test containing new test case: ```shell build/test/functional/feature_framework_startup_failures.py -ldebug > after.log ``` 2. Drop first commit which contains the fix. 3. Re-run test: ```shell build/test/functional/feature_framework_startup_failures.py -ldebug > before.log ``` 4. Diff logs, focusing on `TestInitErrorTimeout OUTPUT` sections. --- Found while testing #32835 using the suggested method (https://github.com/bitcoin/bitcoin/pull/32835#issue-3188748624) which triggered expected timeouts, but with the extra error noise. ACKs for top commit: l0rinc: ACK356883f0e4ryanofsky: Code review ACK356883f0e4. Thanks for the updates! Just rearranged commits and made minor changes in "missing init errors" test since last review furszy: Code ACK356883f0e4Tree-SHA512: 01f2f1f6a5e79cf83a39a143cfb8b2bb8360e0402e91a97a7df8254309fd4436a55468d11825093c052010bfce57f3461d912a578cd2594114aba435ab48b999