|
13 | 13 |
|
14 | 14 | Interesting test cases could be loading an assumeutxo snapshot file with:
|
15 | 15 |
|
16 |
| -- TODO: Valid hash but invalid snapshot file (bad coin height or |
17 |
| - bad other serialization) |
18 | 16 | - TODO: Valid snapshot file, but referencing a snapshot block that turns out to be
|
19 | 17 | invalid, or has an invalid parent
|
20 | 18 | - TODO: Valid snapshot file and snapshot block, but the block is not on the
|
@@ -98,18 +96,23 @@ def expected_error(log_msg="", rpc_details=""):
|
98 | 96 |
|
99 | 97 | self.log.info(" - snapshot file with alternated UTXO data")
|
100 | 98 | cases = [
|
101 |
| - [b"\xff" * 32, 0, "7d52155c9a9fdc4525b637ef6170568e5dad6fabd0b1fdbb9432010b8453095b"], # wrong outpoint hash |
102 |
| - [(1).to_bytes(4, "little"), 32, "9f4d897031ab8547665b4153317ae2fdbf0130c7840b66427ebc48b881cb80ad"], # wrong outpoint index |
103 |
| - [b"\x81", 36, "3da966ba9826fb6d2604260e01607b55ba44e1a5de298606b08704bc62570ea8"], # wrong coin code VARINT((coinbase ? 1 : 0) | (height << 1)) |
104 |
| - [b"\x80", 36, "091e893b3ccb4334378709578025356c8bcb0a623f37c7c4e493133c988648e5"], # another wrong coin code |
| 99 | + # (content, offset, wrong_hash, custom_message) |
| 100 | + [b"\xff" * 32, 0, "7d52155c9a9fdc4525b637ef6170568e5dad6fabd0b1fdbb9432010b8453095b", None], # wrong outpoint hash |
| 101 | + [(1).to_bytes(4, "little"), 32, "9f4d897031ab8547665b4153317ae2fdbf0130c7840b66427ebc48b881cb80ad", None], # wrong outpoint index |
| 102 | + [b"\x81", 36, "3da966ba9826fb6d2604260e01607b55ba44e1a5de298606b08704bc62570ea8", None], # wrong coin code VARINT |
| 103 | + [b"\x80", 36, "091e893b3ccb4334378709578025356c8bcb0a623f37c7c4e493133c988648e5", None], # another wrong coin code |
| 104 | + [b"\x84\x58", 36, None, "[snapshot] bad snapshot data after deserializing 0 coins"], # wrong coin case with height 364 and coinbase 0 |
| 105 | + [b"\xCA\xD2\x8F\x5A", 41, None, "[snapshot] bad snapshot data after deserializing 0 coins - bad tx out value"], # Amount exceeds MAX_MONEY |
105 | 106 | ]
|
106 | 107 |
|
107 |
| - for content, offset, wrong_hash in cases: |
| 108 | + for content, offset, wrong_hash, custom_message in cases: |
108 | 109 | with open(bad_snapshot_path, "wb") as f:
|
109 | 110 | f.write(valid_snapshot_contents[:(32 + 8 + offset)])
|
110 | 111 | f.write(content)
|
111 | 112 | f.write(valid_snapshot_contents[(32 + 8 + offset + len(content)):])
|
112 |
| - expected_error(log_msg=f"[snapshot] bad snapshot content hash: expected a4bf3407ccb2cc0145c49ebba8fa91199f8a3903daf0883875941497d2493c27, got {wrong_hash}") |
| 113 | + |
| 114 | + log_msg = custom_message if custom_message is not None else f"[snapshot] bad snapshot content hash: expected a4bf3407ccb2cc0145c49ebba8fa91199f8a3903daf0883875941497d2493c27, got {wrong_hash}" |
| 115 | + expected_error(log_msg=log_msg) |
113 | 116 |
|
114 | 117 | def test_headers_not_synced(self, valid_snapshot_path):
|
115 | 118 | for node in self.nodes[1:]:
|
|
0 commit comments