test: Fix intermittent issue in wallet_assumeutxo.py

This commit is contained in:
MarcoFalke committed 2026-03-04 17:43:15 +01:00
1 parent 2702711c3a
commit faa68ed4bd
2 files changed
+19 -23

No files matched your search

+9 -23
View File
@@ -12,8 +12,8 @@ from test_framework.messages import COIN
from test_framework.util import (
assert_equal,
assert_greater_than,
assert_greater_than_or_equal,
assert_raises_rpc_error,
dumb_sync_blocks,
ensure_for,
)
from test_framework.wallet import MiniWallet
@@ -42,8 +42,8 @@ class AssumeutxoTest(BitcoinTestFramework):
def setup_network(self):
"""Start with the nodes disconnected so that one can generate a snapshot
including blocks the other hasn't yet seen."""
self.add_nodes(4)
self.start_nodes(extra_args=self.extra_args)
self.add_nodes(self.num_nodes, self.extra_args)
self.start_nodes()
def import_descriptor(self, node, wallet_name, key, timestamp):
import_request = [{"desc": descsum_create("pkh(" + key.pubkey + ")"),
@@ -227,32 +227,18 @@ class AssumeutxoTest(BitcoinTestFramework):
PAUSE_HEIGHT = FINAL_HEIGHT - 40
self.log.info("Restarting node to stop at height %d", PAUSE_HEIGHT)
self.restart_node(1, extra_args=[
f"-stopatheight={PAUSE_HEIGHT}", *self.extra_args[1]])
self.log.info(f"Unload wallets and sync node up to height {PAUSE_HEIGHT}")
n1.unloadwallet("w")
n1.unloadwallet(wallet_name)
dumb_sync_blocks(src=n0, dst=n1, height=PAUSE_HEIGHT)
# Finally connect the nodes and let them sync.
#
# Set `wait_for_connect=False` to avoid a race between performing connection
# assertions and the -stopatheight tripping.
self.connect_nodes(0, 1, wait_for_connect=False)
n1.wait_until_stopped(timeout=5)
self.log.info(
"Restarted node before snapshot validation completed, reloading...")
self.restart_node(1, extra_args=self.extra_args[1])
self.log.info("Verify node state after restart during background sync")
self.log.info("Verify node state during background sync")
# Verify there are still two chainstates (background validation not complete)
chainstates = n1.getchainstates()['chainstates']
assert_equal(len(chainstates), 2)
# The background chainstate should still be at START_HEIGHT
assert_equal(chainstates[0]['blocks'], START_HEIGHT)
# The snapshot chainstate should be at least PAUSE_HEIGHT. It may be
# higher because stopatheight may allow additional blocks to be
# processed during shutdown (per stopatheight documentation).
assert_greater_than_or_equal(chainstates[1]['blocks'], PAUSE_HEIGHT)
assert_equal(chainstates[1]["blocks"], PAUSE_HEIGHT)
# After restart, wallets that existed before cannot be loaded because
# the wallet loading code checks if required blocks are available for