diff options
author | fanquake <fanquake@gmail.com> | 2024-04-01 18:59:33 +0200 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2024-04-01 18:59:42 +0200 |
commit | 23ba39470c3d155a65f0616f8848ada730658301 (patch) | |
tree | fbc3fb1f44b2883d2f6712fed63c961f4d914c59 | |
parent | 948ecf181e84010b38bfdc05135a44e3fd5816fd (diff) | |
parent | 2eb5175de87c798af328de3f2147aac7879eaa10 (diff) |
Merge bitcoin/bitcoin#29753: test: fix StopIteration exception in p2p_node_network_limited.py
2eb5175de87c798af328de3f2147aac7879eaa10 test: fix StopIteration exception in p2p_node_network_limited.py (furszy)
Pull request description:
Fixes #29731
The `next()` call throws an exception if the default parameter is omitted and the iterator is exhausted.
Fix it by providing a default value.
The failure can be tested by commenting out lines 90 and 91 in the test (the `self.connect_nodes(2, 0)`). Since there is no connection, the node in question retrieves a single element in the 'getchaintips()' call. This scenario without the fix, aborts the test right away, throwing an `StopIteration` exception, and with the fix, the test properly waits until the timeout (`wait_until()` call).
ACKs for top commit:
maflcko:
review ACK 2eb5175de87c798af328de3f2147aac7879eaa10
brunoerg:
crACK 2eb5175de87c798af328de3f2147aac7879eaa10
BrandonOdiwuor:
crACK 2eb5175de87c798af328de3f2147aac7879eaa10
tdb3:
Tested ACK for 2eb5175de87c798af328de3f2147aac7879eaa10.
Tree-SHA512: b0873eb4d3334146fd250cd2cd23add3e744877033c8bfa4eb8dff36633100604adf49dd7846856ddfa88c9768663f095db705c00eef3641618df8fc13f8c2c5
-rwxr-xr-x | test/functional/p2p_node_network_limited.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/test/functional/p2p_node_network_limited.py b/test/functional/p2p_node_network_limited.py index 467bbad09c..8f145b954a 100755 --- a/test/functional/p2p_node_network_limited.py +++ b/test/functional/p2p_node_network_limited.py @@ -92,7 +92,8 @@ class NodeNetworkLimitedTest(BitcoinTestFramework): # Wait until the full_node is headers-wise sync best_block_hash = pruned_node.getbestblockhash() - self.wait_until(lambda: next(filter(lambda x: x['hash'] == best_block_hash, full_node.getchaintips()))['status'] == "headers-only") + default_value = {'status': ''} # No status + self.wait_until(lambda: next(filter(lambda x: x['hash'] == best_block_hash, full_node.getchaintips()), default_value)['status'] == "headers-only") # Now, since the node aims to download a window of 1024 blocks, # ensure it requests the blocks below the threshold only (with a |