Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#30892: test: Check already deactivated network …
Browse files Browse the repository at this point in the history
…stays suspended after dumptxoutset

72c9a1f test: Check that network stays suspended after dumptxoutset if it was off before (Fabian Jahr)

Pull request description:

  Follow-up to #30817 which covered the robustness of `dumptxoutset`: network is deactivated during the run but re-activated even when an issue was encountered. But it did not cover the case if the user had deactivated the network themselves before. In that case the user may want the network to stay off so the network is not reactivated after `dumptxoutset` finishes. A test for this behavior is added here.

ACKs for top commit:
  achow101:
    ACK 72c9a1f
  pablomartin4btc:
    ACK 72c9a1f
  theStack:
    utACK 72c9a1f
  tdb3:
    tested ACK 72c9a1f

Tree-SHA512: 18a57c5782e99a018414db0597e88debeb32666712c2a75dddbb55135d8f1ddd1eeacba8bbbd35fc03b6c4ab0522fe074ec08edea729560b018f51efabf00e89
  • Loading branch information
achow101 committed Sep 13, 2024
2 parents 71af743 + 72c9a1f commit 87d5450
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions test/functional/rpc_dumptxoutset.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,17 @@ def set_test_params(self):
self.setup_clean_chain = True
self.num_nodes = 1

def check_expected_network(self, node, active):
rev_file = node.blocks_path / "rev00000.dat"
bogus_file = node.blocks_path / "bogus.dat"
rev_file.rename(bogus_file)
assert_raises_rpc_error(
-1, 'Could not roll back to requested height.', node.dumptxoutset, 'utxos.dat', rollback=99)
assert_equal(node.getnetworkinfo()['networkactive'], active)

# Cleanup
bogus_file.rename(rev_file)

def run_test(self):
"""Test a trivial usage of the dumptxoutset RPC command."""
node = self.nodes[0]
Expand Down Expand Up @@ -60,16 +71,14 @@ def run_test(self):
assert_raises_rpc_error(
-8, 'Invalid snapshot type "bogus" specified. Please specify "rollback" or "latest"', node.dumptxoutset, 'utxos.dat', "bogus")

self.log.info(f"Test that dumptxoutset failure does not leave the network activity suspended")
rev_file = node.blocks_path / "rev00000.dat"
bogus_file = node.blocks_path / "bogus.dat"
rev_file.rename(bogus_file)
assert_raises_rpc_error(
-1, 'Could not roll back to requested height.', node.dumptxoutset, 'utxos.dat', rollback=99)
assert_equal(node.getnetworkinfo()['networkactive'], True)
self.log.info(f"Test that dumptxoutset failure does not leave the network activity suspended when it was on previously")
self.check_expected_network(node, True)

self.log.info(f"Test that dumptxoutset failure leaves the network activity suspended when it was off")
node.setnetworkactive(False)
self.check_expected_network(node, False)
node.setnetworkactive(True)

# Cleanup
bogus_file.rename(rev_file)

if __name__ == '__main__':
DumptxoutsetTest(__file__).main()

0 comments on commit 87d5450

Please sign in to comment.