0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-02 09:46:52 -05:00

Merge bitcoin/bitcoin#29394: test, assumeutxo: Add test to ensure failure when mempool not empty

8d20602e55 test, assumeutxo: Add test to ensure failure when mempool not empty (Hernan Marino)

Pull request description:

  Add a test to ensure that loadtxoutset fails when the node's mempool is not empty, as suggested by maflcko  here: https://github.com/bitcoin/bitcoin/pull/27596#discussion_r1344713537

ACKs for top commit:
  maflcko:
    re-ACK 8d20602e55
  BrandonOdiwuor:
    ACK 8d20602e55

Tree-SHA512: 97c9668c0f38897934bf0d326515d898d4e682ff219deba9d751b35125b5cf33d51c9df116a74117ecf0394f28995a3d0cae1266b1e5acb4365ff4f309ce3f6c
This commit is contained in:
fanquake 2024-02-13 09:55:12 -03:00
commit f83565db45
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1

View file

@ -60,7 +60,7 @@ class AssumeutxoTest(BitcoinTestFramework):
self.extra_args = [
[],
["-fastprune", "-prune=1", "-blockfilterindex=1", "-coinstatsindex=1"],
["-txindex=1", "-blockfilterindex=1", "-coinstatsindex=1"],
["-persistmempool=0","-txindex=1", "-blockfilterindex=1", "-coinstatsindex=1"],
]
def setup_network(self):
@ -135,6 +135,19 @@ class AssumeutxoTest(BitcoinTestFramework):
rmtree(chainstate_snapshot_path)
self.start_node(0)
def test_invalid_mempool_state(self, dump_output_path):
self.log.info("Test bitcoind should fail when mempool not empty.")
node=self.nodes[2]
tx = MiniWallet(node).send_self_transfer(from_node=node)
assert tx['txid'] in node.getrawmempool()
# Attempt to load the snapshot on Node 2 and expect it to fail
with node.assert_debug_log(expected_msgs=["[snapshot] can't activate a snapshot when mempool not empty"]):
assert_raises_rpc_error(-32603, "Unable to load UTXO snapshot", node.loadtxoutset, dump_output_path)
self.restart_node(2, extra_args=self.extra_args[2])
def run_test(self):
"""
Bring up two (disconnected) nodes, mine some new blocks on the first,
@ -197,6 +210,7 @@ class AssumeutxoTest(BitcoinTestFramework):
assert_equal(n0.getblockchaininfo()["blocks"], FINAL_HEIGHT)
self.test_invalid_mempool_state(dump_output['path'])
self.test_invalid_snapshot_scenarios(dump_output['path'])
self.test_invalid_chainstate_scenarios()