Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc-parkedchain.py
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# Copyright (c) 2018 The Bitcoin developers | # Copyright (c) 2018 The Bitcoin developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
"""Test the parckblock and unparkblock RPC calls.""" | """Test the parckblock and unparkblock RPC calls.""" | ||||
from test_framework.test_framework import BitcoinTestFramework | from test_framework.test_framework import BitcoinTestFramework | ||||
from test_framework.util import ( | from test_framework.util import ( | ||||
assert_equal, | assert_equal, | ||||
connect_nodes_bi, | connect_nodes, | ||||
wait_until | wait_until | ||||
) | ) | ||||
class ParkedChainTest(BitcoinTestFramework): | class ParkedChainTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.num_nodes = 2 | self.num_nodes = 2 | ||||
self.extra_args = [["-noparkdeepreorg", | self.extra_args = [["-noparkdeepreorg", | ||||
▲ Show 20 Lines • Show All 209 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
parking_node.generate(3) | parking_node.generate(3) | ||||
node.generatetoaddress( | node.generatetoaddress( | ||||
nblocks=5, | nblocks=5, | ||||
address=node.getnewaddress(label='coinbase')) | address=node.getnewaddress(label='coinbase')) | ||||
wait_for_parked_block(node.getbestblockhash()) | wait_for_parked_block(node.getbestblockhash()) | ||||
# Restart the parking node without parkdeepreorg. | # Restart the parking node without parkdeepreorg. | ||||
self.restart_node(1, ["-parkdeepreorg=0"]) | self.restart_node(1, ["-parkdeepreorg=0"]) | ||||
parking_node = self.nodes[1] | parking_node = self.nodes[1] | ||||
connect_nodes_bi(node, parking_node) | connect_nodes(node, parking_node) | ||||
# The other chain should still be marked 'parked'. | # The other chain should still be marked 'parked'. | ||||
wait_for_parked_block(node.getbestblockhash()) | wait_for_parked_block(node.getbestblockhash()) | ||||
# Three more blocks is not enough to unpark. Even though its PoW is | # Three more blocks is not enough to unpark. Even though its PoW is | ||||
# larger, we are still following the delayed-unparking rules. | # larger, we are still following the delayed-unparking rules. | ||||
node.generate(3) | node.generate(3) | ||||
wait_for_parked_block(node.getbestblockhash()) | wait_for_parked_block(node.getbestblockhash()) | ||||
# Final block pushes over the edge, and should unpark. | # Final block pushes over the edge, and should unpark. | ||||
node.generate(1) | node.generate(1) | ||||
Show All 9 Lines |