Skip to content

Commit 8ae79f1

Browse files
committed
Merge bitcoin/bitcoin#30403: test, assumeutxo: Remove resolved todo comments and add new test
d63ef73 test: Add loadtxoutset test with tip on snapshot block (Fabian Jahr) c2f86d4 test: Remove already resolved assumeutxo todo comments (Fabian Jahr) Pull request description: The first commit removes three Todos that have been addressed previously (see commit message for details). The second message resolves another todo by adding the missing test case. This is a special case of "the tip has more work than the snapshot" where the tip is the same block as the snapshot base block. Related to #28648. ACKs for top commit: jrakibi: ACK [d63ef73](bitcoin/bitcoin@d63ef73) achow101: ACK d63ef73 maflcko: ACK d63ef73 alfonsoromanz: Re ACK d63ef73 Tree-SHA512: 8d5a25fc0b26531db3a9740132694138f2103b7b42eeb1d4a64095bfc901c1372e23601c0855c7def84c8a4e185d10611e4e830c4e479f1b663ae6ed53abb130
2 parents 51ac479 + d63ef73 commit 8ae79f1

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

test/functional/feature_assumeutxo.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,6 @@
88
99
The assumeutxo value generated and used here is committed to in
1010
`CRegTestParams::m_assumeutxo_data` in `src/kernel/chainparams.cpp`.
11-
12-
## Possible test improvements
13-
14-
Interesting test cases could be loading an assumeutxo snapshot file with:
15-
16-
- TODO: Valid snapshot file, but referencing a snapshot block that turns out to be
17-
invalid, or has an invalid parent
18-
19-
Interesting starting states could be loading a snapshot when the current chain tip is:
20-
21-
- TODO: An ancestor of snapshot block
22-
- TODO: The snapshot block
23-
- TODO: A descendant of the snapshot block
24-
2511
"""
2612
from shutil import rmtree
2713

@@ -202,7 +188,6 @@ def test_invalid_file_path(self):
202188
def test_snapshot_with_less_work(self, dump_output_path):
203189
self.log.info("Test bitcoind should fail when snapshot has less accumulated work than this node.")
204190
node = self.nodes[0]
205-
assert_equal(node.getblockcount(), FINAL_HEIGHT)
206191
with node.assert_debug_log(expected_msgs=["[snapshot] activation failed - work does not exceed active chainstate"]):
207192
assert_raises_rpc_error(-32603, "Unable to load UTXO snapshot", node.loadtxoutset, dump_output_path)
208193

@@ -316,6 +301,11 @@ def run_test(self):
316301
self.log.info(f"Creating a UTXO snapshot at height {SNAPSHOT_BASE_HEIGHT}")
317302
dump_output = n0.dumptxoutset('utxos.dat')
318303

304+
self.log.info("Test loading snapshot when the node tip is on the same block as the snapshot")
305+
assert_equal(n0.getblockcount(), SNAPSHOT_BASE_HEIGHT)
306+
assert_equal(n0.getblockchaininfo()["blocks"], SNAPSHOT_BASE_HEIGHT)
307+
self.test_snapshot_with_less_work(dump_output['path'])
308+
319309
self.log.info("Test loading snapshot when headers are not synced")
320310
self.test_headers_not_synced(dump_output['path'])
321311

@@ -358,6 +348,8 @@ def run_test(self):
358348
self.test_snapshot_not_on_most_work_chain(dump_output['path'])
359349

360350
self.log.info(f"Loading snapshot into second node from {dump_output['path']}")
351+
# This node's tip is on an ancestor block of the snapshot, which should
352+
# be the normal case
361353
loaded = n1.loadtxoutset(dump_output['path'])
362354
assert_equal(loaded['coins_loaded'], SNAPSHOT_BASE_HEIGHT)
363355
assert_equal(loaded['base_height'], SNAPSHOT_BASE_HEIGHT)

0 commit comments

Comments
 (0)