Changeset View
Changeset View
Standalone View
Standalone View
test/functional/p2p_node_network_limited.py
Show First 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | |||||
class NodeNetworkLimitedTest(BitcoinTestFramework): | class NodeNetworkLimitedTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.setup_clean_chain = True | self.setup_clean_chain = True | ||||
self.num_nodes = 3 | self.num_nodes = 3 | ||||
self.extra_args = [['-prune=550', '-addrmantest'], [], []] | self.extra_args = [['-prune=550', '-addrmantest'], [], []] | ||||
def skip_test_if_missing_module(self): | |||||
self.skip_if_no_wallet() | |||||
def disconnect_all(self): | def disconnect_all(self): | ||||
disconnect_nodes(self.nodes[0], self.nodes[1]) | disconnect_nodes(self.nodes[0], self.nodes[1]) | ||||
disconnect_nodes(self.nodes[1], self.nodes[0]) | disconnect_nodes(self.nodes[1], self.nodes[0]) | ||||
disconnect_nodes(self.nodes[2], self.nodes[1]) | disconnect_nodes(self.nodes[2], self.nodes[1]) | ||||
disconnect_nodes(self.nodes[2], self.nodes[0]) | disconnect_nodes(self.nodes[2], self.nodes[0]) | ||||
disconnect_nodes(self.nodes[0], self.nodes[2]) | disconnect_nodes(self.nodes[0], self.nodes[2]) | ||||
disconnect_nodes(self.nodes[1], self.nodes[2]) | disconnect_nodes(self.nodes[1], self.nodes[2]) | ||||
Show All 11 Lines | def run_test(self): | ||||
self.log.info("Check that the localservices is as expected.") | self.log.info("Check that the localservices is as expected.") | ||||
assert_equal(int(self.nodes[0].getnetworkinfo()[ | assert_equal(int(self.nodes[0].getnetworkinfo()[ | ||||
'localservices'], 16), expected_services) | 'localservices'], 16), expected_services) | ||||
self.log.info( | self.log.info( | ||||
"Mine enough blocks to reach the NODE_NETWORK_LIMITED range.") | "Mine enough blocks to reach the NODE_NETWORK_LIMITED range.") | ||||
connect_nodes_bi(self.nodes[0], self.nodes[1]) | connect_nodes_bi(self.nodes[0], self.nodes[1]) | ||||
blocks = self.nodes[1].generate(292) | blocks = self.nodes[1].generatetoaddress( | ||||
292, self.nodes[1].get_deterministic_priv_key().address) | |||||
sync_blocks([self.nodes[0], self.nodes[1]]) | sync_blocks([self.nodes[0], self.nodes[1]]) | ||||
self.log.info("Make sure we can max retrieve block at tip-288.") | self.log.info("Make sure we can max retrieve block at tip-288.") | ||||
# last block in valid range | # last block in valid range | ||||
node.send_getdata_for_block(blocks[1]) | node.send_getdata_for_block(blocks[1]) | ||||
node.wait_for_block(int(blocks[1], 16), timeout=3) | node.wait_for_block(int(blocks[1], 16), timeout=3) | ||||
self.log.info( | self.log.info( | ||||
Show All 31 Lines | def run_test(self): | ||||
# sync must be possible | # sync must be possible | ||||
sync_blocks(self.nodes) | sync_blocks(self.nodes) | ||||
# disconnect all peers | # disconnect all peers | ||||
self.disconnect_all() | self.disconnect_all() | ||||
# mine 10 blocks on node 0 (pruned node) | # mine 10 blocks on node 0 (pruned node) | ||||
self.nodes[0].generate(10) | self.nodes[0].generatetoaddress( | ||||
10, self.nodes[0].get_deterministic_priv_key().address) | |||||
# connect node1 (non pruned) with node0 (pruned) and check if the can | # connect node1 (non pruned) with node0 (pruned) and check if the can | ||||
# sync | # sync | ||||
connect_nodes_bi(self.nodes[0], self.nodes[1]) | connect_nodes_bi(self.nodes[0], self.nodes[1]) | ||||
# sync must be possible, node 1 is no longer in IBD and should | # sync must be possible, node 1 is no longer in IBD and should | ||||
# therefore connect to node 0 (NODE_NETWORK_LIMITED) | # therefore connect to node 0 (NODE_NETWORK_LIMITED) | ||||
sync_blocks([self.nodes[0], self.nodes[1]]) | sync_blocks([self.nodes[0], self.nodes[1]]) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
NodeNetworkLimitedTest().main() | NodeNetworkLimitedTest().main() |