Skip to content

Commit

Permalink
Merge #30403: test, assumeutxo: Remove resolved todo comments and add…
Browse files Browse the repository at this point in the history
… 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](d63ef73)
  achow101:
    ACK d63ef73
  maflcko:
    ACK d63ef73
  alfonsoromanz:
    Re ACK d63ef73

Tree-SHA512: 8d5a25fc0b26531db3a9740132694138f2103b7b42eeb1d4a64095bfc901c1372e23601c0855c7def84c8a4e185d10611e4e830c4e479f1b663ae6ed53abb130
  • Loading branch information
achow101 committed Jul 23, 2024
2 parents 51ac479 + d63ef73 commit 8ae79f1
Showing 1 changed file with 7 additions and 15 deletions.
22 changes: 7 additions & 15 deletions test/functional/feature_assumeutxo.py
Original file line number Diff line number Diff line change
@@ -8,20 +8,6 @@
The assumeutxo value generated and used here is committed to in
`CRegTestParams::m_assumeutxo_data` in `src/kernel/chainparams.cpp`.
## Possible test improvements
Interesting test cases could be loading an assumeutxo snapshot file with:
- TODO: Valid snapshot file, but referencing a snapshot block that turns out to be
invalid, or has an invalid parent
Interesting starting states could be loading a snapshot when the current chain tip is:
- TODO: An ancestor of snapshot block
- TODO: The snapshot block
- TODO: A descendant of the snapshot block
"""
from shutil import rmtree

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

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

self.log.info("Test loading snapshot when the node tip is on the same block as the snapshot")
assert_equal(n0.getblockcount(), SNAPSHOT_BASE_HEIGHT)
assert_equal(n0.getblockchaininfo()["blocks"], SNAPSHOT_BASE_HEIGHT)
self.test_snapshot_with_less_work(dump_output['path'])

self.log.info("Test loading snapshot when headers are not synced")
self.test_headers_not_synced(dump_output['path'])

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

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

0 comments on commit 8ae79f1

Please sign in to comment.