test: Check that network stays suspended after dumptxoutset if it was off before

This commit is contained in:
Fabian Jahr
2024-09-12 22:59:55 +02:00
parent e46bebb444
commit 72c9a1fe94

View File

@ -19,6 +19,17 @@ class DumptxoutsetTest(BitcoinTestFramework):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 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): def run_test(self):
"""Test a trivial usage of the dumptxoutset RPC command.""" """Test a trivial usage of the dumptxoutset RPC command."""
node = self.nodes[0] node = self.nodes[0]
@ -60,16 +71,14 @@ class DumptxoutsetTest(BitcoinTestFramework):
assert_raises_rpc_error( assert_raises_rpc_error(
-8, 'Invalid snapshot type "bogus" specified. Please specify "rollback" or "latest"', node.dumptxoutset, 'utxos.dat', "bogus") -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") self.log.info(f"Test that dumptxoutset failure does not leave the network activity suspended when it was on previously")
rev_file = node.blocks_path / "rev00000.dat" self.check_expected_network(node, True)
bogus_file = node.blocks_path / "bogus.dat"
rev_file.rename(bogus_file) self.log.info(f"Test that dumptxoutset failure leaves the network activity suspended when it was off")
assert_raises_rpc_error( node.setnetworkactive(False)
-1, 'Could not roll back to requested height.', node.dumptxoutset, 'utxos.dat', rollback=99) self.check_expected_network(node, False)
assert_equal(node.getnetworkinfo()['networkactive'], True) node.setnetworkactive(True)
# Cleanup
bogus_file.rename(rev_file)
if __name__ == '__main__': if __name__ == '__main__':
DumptxoutsetTest(__file__).main() DumptxoutsetTest(__file__).main()