diff options
author | Ryan Ofsky <ryan@ofsky.org> | 2023-10-18 08:15:31 -0400 |
---|---|---|
committer | Ryan Ofsky <ryan@ofsky.org> | 2023-10-18 08:18:48 -0400 |
commit | 655dc716aa6043613171a1338e22928de89a7d3e (patch) | |
tree | 22f3f1c2708906557c324ce4f32d745f07f8eaaa /test | |
parent | 1803fee1cf15d9030a0eb1309aff63e492026453 (diff) | |
parent | 621db2f00486d8fd6f06dca91c1b95ce61f64bc4 (diff) |
Merge bitcoin/bitcoin#28666: test: assumeutxo file with unknown block hash
621db2f00486d8fd6f06dca91c1b95ce61f64bc4 test: assumeutxo file with unknown block hash (Fabian Jahr)
Pull request description:
Takes care of one of the open Todos in the assumeutxo functional test. Since an unknown block could be any hash, I simply chose one placeholder, it could also be a random string though.
ACKs for top commit:
maflcko:
lgtm ACK 621db2f00486d8fd6f06dca91c1b95ce61f64bc4
pablomartin4btc:
cr ACK 621db2f00486d8fd6f06dca91c1b95ce61f64bc4
theStack:
ACK 621db2f00486d8fd6f06dca91c1b95ce61f64bc4
ryanofsky:
Code review ACK 621db2f00486d8fd6f06dca91c1b95ce61f64bc4
Tree-SHA512: ee0438ce619f7348c6f88e39b0ea7ddddb8832956d9034ecc795c6033d5d905c09d11b7d0d5afc38231b2fd091ea7c1bd0a0be99d9c32c4e6357a25d76294142
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/feature_assumeutxo.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/test/functional/feature_assumeutxo.py b/test/functional/feature_assumeutxo.py index fef2e9d02c..b422cc8f2d 100755 --- a/test/functional/feature_assumeutxo.py +++ b/test/functional/feature_assumeutxo.py @@ -19,7 +19,6 @@ Interesting test cases could be loading an assumeutxo snapshot file with: - TODO: Valid hash but invalid snapshot file (bad coin height or bad other serialization) -- TODO: Valid snapshot file, but referencing an unknown block - TODO: Valid snapshot file, but referencing a snapshot block that turns out to be invalid, or has an invalid parent - TODO: Valid snapshot file and snapshot block, but the block is not on the @@ -71,12 +70,14 @@ class AssumeutxoTest(BitcoinTestFramework): bad_snapshot_path = valid_snapshot_path + '.mod' self.log.info(" - snapshot file refering to a block that is not in the assumeutxo parameters") - bad_snapshot_block_hash = self.nodes[0].getblockhash(SNAPSHOT_BASE_HEIGHT - 1) - with open(bad_snapshot_path, 'wb') as f: - # block hash of the snapshot base is stored right at the start (first 32 bytes) - f.write(bytes.fromhex(bad_snapshot_block_hash)[::-1] + valid_snapshot_contents[32:]) - error_details = f"assumeutxo block hash in snapshot metadata not recognized ({bad_snapshot_block_hash})" - assert_raises_rpc_error(-32603, f"Unable to load UTXO snapshot, {error_details}", self.nodes[1].loadtxoutset, bad_snapshot_path) + prev_block_hash = self.nodes[0].getblockhash(SNAPSHOT_BASE_HEIGHT - 1) + bogus_block_hash = "0" * 64 # Represents any unknown block hash + for bad_block_hash in [bogus_block_hash, prev_block_hash]: + with open(bad_snapshot_path, 'wb') as f: + # block hash of the snapshot base is stored right at the start (first 32 bytes) + f.write(bytes.fromhex(bad_block_hash)[::-1] + valid_snapshot_contents[32:]) + error_details = f"assumeutxo block hash in snapshot metadata not recognized ({bad_block_hash})" + assert_raises_rpc_error(-32603, f"Unable to load UTXO snapshot, {error_details}", self.nodes[1].loadtxoutset, bad_snapshot_path) self.log.info(" - snapshot file with wrong number of coins") valid_num_coins = int.from_bytes(valid_snapshot_contents[32:32 + 8], "little") |