diff --git a/test/functional/abc_mining_basic.py b/test/functional/abc_mining_basic.py --- a/test/functional/abc_mining_basic.py +++ b/test/functional/abc_mining_basic.py @@ -14,11 +14,7 @@ ) from test_framework.messages import XEC from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_greater_than_or_equal, - connect_nodes, -) +from test_framework.util import assert_equal, assert_greater_than_or_equal AXION_ACTIVATION_TIME = 2000000600 MINER_FUND_ADDR = 'ecregtest:pqnqv9lt7e5vjyp0w88zf2af0l92l8rxdgz0wv9ltl' @@ -45,7 +41,7 @@ # Since the other nodes are mining blocks "in the future" compared to node0, # node0 will not broadcast blocks between the other nodes. for n in range(1, len(self.nodes)): - connect_nodes(self.nodes[0], self.nodes[n]) + self.connect_nodes(0, n) def run_for_node(self, node, expectedMinerFundAddress): address = node.get_deterministic_priv_key().address diff --git a/test/functional/example_test.py b/test/functional/example_test.py --- a/test/functional/example_test.py +++ b/test/functional/example_test.py @@ -18,7 +18,7 @@ from test_framework.messages import MSG_BLOCK, CInv, msg_block, msg_getdata from test_framework.p2p import P2PInterface, p2p_lock from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes +from test_framework.util import assert_equal # P2PInterface is a class containing callbacks to be executed when a P2P # message is received from the node-under-test. Subclass P2PInterface and @@ -112,7 +112,7 @@ # In this test, we're not connecting node2 to node0 or node1. Calls to # sync_all() should not include node2, since we're not expecting it to # sync. - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_all(self.nodes[0:2]) # Use setup_nodes() to customize the node start behaviour (for example if @@ -186,7 +186,7 @@ self.nodes[1].waitforblockheight(11) self.log.info("Connect node2 and node1") - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) self.log.info("Wait for node2 to receive all the blocks from node1") self.sync_all() diff --git a/test/functional/feature_abortnode.py b/test/functional/feature_abortnode.py --- a/test/functional/feature_abortnode.py +++ b/test/functional/feature_abortnode.py @@ -13,7 +13,7 @@ import os from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import connect_nodes, get_datadir_path +from test_framework.util import get_datadir_path class AbortNodeTest(BitcoinTestFramework): @@ -38,7 +38,7 @@ # attempt. self.nodes[1].generate(3) with self.nodes[0].assert_debug_log(["Failed to disconnect block"]): - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.nodes[1].generate(1) # Check that node0 aborted diff --git a/test/functional/feature_bip68_sequence.py b/test/functional/feature_bip68_sequence.py --- a/test/functional/feature_bip68_sequence.py +++ b/test/functional/feature_bip68_sequence.py @@ -23,8 +23,6 @@ assert_equal, assert_greater_than, assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, satoshi_round, ) @@ -480,13 +478,13 @@ assert_greater_than(csv_activation_height - height, 1) self.nodes[0].generate(csv_activation_height - height - 1) assert_equal(self.get_csv_status(), False) - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) self.nodes[0].generate(1) assert_equal(self.get_csv_status(), True) # We have a block that has CSV activated, but we want to be at # the activation point, so we invalidate the tip. self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash()) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks() # Use self.nodes[1] to test that version 2 transactions are standard. diff --git a/test/functional/feature_minchainwork.py b/test/functional/feature_minchainwork.py --- a/test/functional/feature_minchainwork.py +++ b/test/functional/feature_minchainwork.py @@ -18,7 +18,7 @@ import time from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes +from test_framework.util import assert_equal # 2 hashes required per regtest block (with no difficulty adjustment) REGTEST_WORK_PER_BLOCK = 2 @@ -40,7 +40,7 @@ # block relay to inbound peers. self.setup_nodes() for i in range(self.num_nodes - 1): - connect_nodes(self.nodes[i + 1], self.nodes[i]) + self.connect_nodes(i + 1, i) def run_test(self): # Start building a chain on node0. node2 shouldn't be able to sync until node1's diff --git a/test/functional/feature_notifications.py b/test/functional/feature_notifications.py --- a/test/functional/feature_notifications.py +++ b/test/functional/feature_notifications.py @@ -8,12 +8,7 @@ from test_framework.address import ADDRESS_ECREG_UNSPENDABLE, keyhash_to_p2pkh from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - connect_nodes, - disconnect_nodes, - hex_str_to_bytes, -) +from test_framework.util import assert_equal, hex_str_to_bytes FORK_WARNING_MESSAGE = "Warning: Large-work fork detected, forking after block {}" @@ -96,7 +91,7 @@ self.log.info("test -walletnotify after rescan") # restart node to rescan to force wallet notifications self.start_node(1) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.wait_until( lambda: len(os.listdir(self.walletnotify_dir)) == block_count, @@ -144,7 +139,7 @@ # with a slightly different amount, ensures that there will be # a conflict. balance = self.nodes[0].getbalance() - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) tx2_node0 = self.nodes[0].sendtoaddress( address=ADDRESS_ECREG_UNSPENDABLE, amount=balance - 20) tx2_node1 = self.nodes[1].sendtoaddress( @@ -158,7 +153,7 @@ # Mine a block on node0, reconnect the nodes, check that tx2_node1 # has a conflicting tx after syncing with node0. self.nodes[0].generatetoaddress(1, ADDRESS_ECREG_UNSPENDABLE) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks() assert tx2_node0 in self.nodes[1].gettransaction(tx2_node1)[ 'walletconflicts'] diff --git a/test/functional/feature_pruning.py b/test/functional/feature_pruning.py --- a/test/functional/feature_pruning.py +++ b/test/functional/feature_pruning.py @@ -19,8 +19,6 @@ assert_equal, assert_greater_than, assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, ) # Rescans start at the earliest block up to 2 hours before a key timestamp, so @@ -111,11 +109,11 @@ self.prunedir = os.path.join( self.nodes[2].datadir, self.chain, 'blocks', '') - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[3]) - connect_nodes(self.nodes[0], self.nodes[4]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) + self.connect_nodes(0, 3) + self.connect_nodes(0, 4) self.sync_blocks(self.nodes[0:5]) def setup_nodes(self): @@ -166,8 +164,8 @@ # Disconnect node 0 so it can mine a longer reorg chain without knowing about node 1's soon-to-be-stale chain # Node 2 stays connected, so it hears about the stale blocks and # then reorg's when node0 reconnects - disconnect_nodes(self.nodes[0], self.nodes[1]) - disconnect_nodes(self.nodes[0], self.nodes[2]) + self.disconnect_nodes(0, 1) + self.disconnect_nodes(0, 2) # Mine 24 blocks in node 1 mine_large_blocks(self.nodes[1], 24) @@ -176,8 +174,8 @@ # Create connections in the order so both nodes can see the reorg # at the same time - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 1) + self.connect_nodes(0, 2) self.sync_blocks(self.nodes[0:3]) self.log.info("Usage can be over target because of high stale rate: {}".format( @@ -211,15 +209,15 @@ self.nodes[1].getblockcount())) # Disconnect node1 and generate the new chain - disconnect_nodes(self.nodes[0], self.nodes[1]) - disconnect_nodes(self.nodes[1], self.nodes[2]) + self.disconnect_nodes(0, 1) + self.disconnect_nodes(1, 2) self.log.info("Generating new longer chain of 300 more blocks") self.nodes[1].generate(300) self.log.info("Reconnect nodes") - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) self.sync_blocks(self.nodes[0:3], timeout=120) self.log.info("Verify height on node 2: {}".format( @@ -390,7 +388,7 @@ # check that wallet loads successfully when restarting a pruned node after IBD. # this was reported to fail in #7494. self.log.info("Syncing node 5 to test wallet") - connect_nodes(self.nodes[0], self.nodes[5]) + self.connect_nodes(0, 5) nds = [self.nodes[0], self.nodes[5]] self.sync_blocks(nds, wait=5, timeout=300) self.restart_node( diff --git a/test/functional/interface_zmq.py b/test/functional/interface_zmq.py --- a/test/functional/interface_zmq.py +++ b/test/functional/interface_zmq.py @@ -18,12 +18,7 @@ ) from test_framework.messages import CTransaction, FromHex, hash256 from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error # Test may be skipped and not have zmq installed try: @@ -120,7 +115,7 @@ hashblock, hashtx, rawblock, rawtx]] ) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) for socket in sockets: socket.connect(address) # Relax so that the subscriber is ready before publishing zmq messages @@ -233,7 +228,7 @@ 2, ADDRESS_ECREG_P2SH_OP_TRUE) # nodes[0] will reorg chain after connecting back nodes[1] - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) # tx in mempool valid but not advertised self.sync_blocks() @@ -290,12 +285,12 @@ ) return send_node.sendrawtransaction(tx["hex"]) - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) txid_to_be_replaced = send_conflicting_transaction(self.nodes[0]) replacement_txid = send_conflicting_transaction(self.nodes[1]) block_hash = self.nodes[1].generatetoaddress( 1, ADDRESS_ECREG_P2SH_OP_TRUE)[0] - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_all() return block_hash, txid_to_be_replaced, replacement_txid @@ -340,7 +335,7 @@ self.nodes[1].generatetoaddress(2, ADDRESS_ECREG_P2SH_OP_TRUE) # nodes[0] will reorg chain after connecting back nodes[1] - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) # Then we receive all block (dis)connect notifications for the # 2 block reorg @@ -519,7 +514,7 @@ self.restart_node( 0, self.extra_args[0] + [f'-zmqpub{seq.topic.decode()}={address}']) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) socket.connect(address) # Relax so that the subscriber is ready before publishing zmq messages sleep(0.2) diff --git a/test/functional/mempool_persist.py b/test/functional/mempool_persist.py --- a/test/functional/mempool_persist.py +++ b/test/functional/mempool_persist.py @@ -45,8 +45,6 @@ assert_equal, assert_greater_than_or_equal, assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, ) @@ -86,12 +84,12 @@ assert_greater_than_or_equal(tx_creation_time_higher, tx_creation_time) # disconnect nodes & make a txn that remains in the unbroadcast set. - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) assert(len(self.nodes[0].getpeerinfo()) == 0) assert(len(self.nodes[0].p2ps) == 0) self.nodes[0].sendtoaddress( self.nodes[2].getnewaddress(), Decimal("12000000")) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 2) self.log.debug("Stop-start the nodes. Verify that node0 has the " "transactions in its mempool and node1 does not. " diff --git a/test/functional/mining_basic.py b/test/functional/mining_basic.py --- a/test/functional/mining_basic.py +++ b/test/functional/mining_basic.py @@ -15,11 +15,7 @@ from test_framework.messages import BLOCK_HEADER_SIZE, CBlock, CBlockHeader from test_framework.p2p import P2PDataStore from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error def assert_template(node, block, expect, rehash=True): @@ -51,7 +47,7 @@ assert_equal(mining_info['currentblocktx'], 0) assert_equal(mining_info['currentblocksize'], 1000) self.restart_node(0) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) def run_test(self): self.mine_chain() diff --git a/test/functional/p2p_blockfilters.py b/test/functional/p2p_blockfilters.py --- a/test/functional/p2p_blockfilters.py +++ b/test/functional/p2p_blockfilters.py @@ -20,7 +20,7 @@ ) from test_framework.p2p import P2PInterface from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes, disconnect_nodes +from test_framework.util import assert_equal class CFiltersClient(P2PInterface): @@ -59,7 +59,7 @@ self.sync_blocks(timeout=600) # Stale blocks by disconnecting nodes 0 & 1, mining, then reconnecting - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) self.nodes[0].generate(1) self.wait_until(lambda: self.nodes[0].getblockcount() == 1000) @@ -92,7 +92,7 @@ assert_equal(len(response.headers), 1) self.log.info("Reorg node 0 to a new chain.") - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks(timeout=600) main_block_hash = self.nodes[0].getblockhash(1000) diff --git a/test/functional/p2p_disconnect_ban.py b/test/functional/p2p_disconnect_ban.py --- a/test/functional/p2p_disconnect_ban.py +++ b/test/functional/p2p_disconnect_ban.py @@ -6,11 +6,7 @@ import time from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error class DisconnectBanTest(BitcoinTestFramework): @@ -20,8 +16,8 @@ def run_test(self): self.log.info("Connect nodes both way") - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[0]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 0) self.log.info("Test setban and listbanned RPCs") @@ -90,8 +86,8 @@ # Clear ban lists self.nodes[1].clearbanned() self.log.info("Connect nodes both way") - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[0]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 0) self.log.info("Test disconnectnode RPCs") @@ -119,7 +115,7 @@ self.log.info("disconnectnode: successfully reconnect node") # reconnect the node - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) assert_equal(len(self.nodes[0].getpeerinfo()), 2) assert [node for node in self.nodes[0] .getpeerinfo() if node['addr'] == address1] diff --git a/test/functional/p2p_node_network_limited.py b/test/functional/p2p_node_network_limited.py --- a/test/functional/p2p_node_network_limited.py +++ b/test/functional/p2p_node_network_limited.py @@ -18,7 +18,7 @@ ) from test_framework.p2p import P2PInterface from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes, disconnect_nodes +from test_framework.util import assert_equal class P2PIgnoreInv(P2PInterface): @@ -48,9 +48,9 @@ self.extra_args = [['-prune=550', '-addrmantest'], [], []] def disconnect_all(self): - disconnect_nodes(self.nodes[0], self.nodes[1]) - disconnect_nodes(self.nodes[0], self.nodes[2]) - disconnect_nodes(self.nodes[1], self.nodes[2]) + self.disconnect_nodes(0, 1) + self.disconnect_nodes(0, 2) + self.disconnect_nodes(1, 2) def setup_network(self): self.add_nodes(self.num_nodes, self.extra_args) @@ -70,7 +70,7 @@ self.log.info( "Mine enough blocks to reach the NODE_NETWORK_LIMITED range.") - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) blocks = self.nodes[1].generatetoaddress( 292, self.nodes[1].get_deterministic_priv_key().address) self.sync_blocks([self.nodes[0], self.nodes[1]]) @@ -100,7 +100,7 @@ # connect unsynced node 2 with pruned NODE_NETWORK_LIMITED peer # because node 2 is in IBD and node 0 is a NODE_NETWORK_LIMITED peer, # sync must not be possible - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 2) try: self.sync_blocks([self.nodes[0], self.nodes[2]], timeout=5) except Exception: @@ -110,7 +110,7 @@ self.nodes[2].getbestblockhash())['height'], 0) # now connect also to node 1 (non pruned) - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) # sync must be possible self.sync_blocks() @@ -124,7 +124,7 @@ # connect node1 (non pruned) with node0 (pruned) and check if the can # sync - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) # sync must be possible, node 1 is no longer in IBD and should # therefore connect to node 0 (NODE_NETWORK_LIMITED) diff --git a/test/functional/p2p_permissions.py b/test/functional/p2p_permissions.py --- a/test/functional/p2p_permissions.py +++ b/test/functional/p2p_permissions.py @@ -16,7 +16,7 @@ from test_framework.test_framework import BitcoinTestFramework from test_framework.test_node import ErrorMatch from test_framework.txtools import pad_tx -from test_framework.util import assert_equal, connect_nodes, p2p_port +from test_framework.util import assert_equal, p2p_port class P2PPermissionsTests(BitcoinTestFramework): @@ -165,7 +165,7 @@ self.log.debug( "Check that node[1] will send the tx to node[0] even though it" " is already in the mempool") - connect_nodes(self.nodes[1], self.nodes[0]) + self.connect_nodes(1, 0) with self.nodes[1].assert_debug_log( ["Force relaying tx {} from peer=0".format(txid)]): p2p_rebroadcast_wallet.send_txs_and_test([tx], self.nodes[1]) @@ -187,7 +187,7 @@ if whitelisted is not None: args = [*args, '-deprecatedrpc=whitelisted'] self.restart_node(1, args) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) peerinfo = self.nodes[1].getpeerinfo()[0] if whitelisted is None: assert 'whitelisted' not in peerinfo diff --git a/test/functional/p2p_unrequested_blocks.py b/test/functional/p2p_unrequested_blocks.py --- a/test/functional/p2p_unrequested_blocks.py +++ b/test/functional/p2p_unrequested_blocks.py @@ -68,11 +68,7 @@ ) from test_framework.p2p import P2PInterface, p2p_lock from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error class AcceptBlockTest(BitcoinTestFramework): @@ -324,7 +320,7 @@ test_node.wait_for_disconnect() # 9. Connect node1 to node0 and ensure it is able to sync - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks([self.nodes[0], self.nodes[1]]) self.log.info("Successfully synced nodes 1 and 0") diff --git a/test/functional/rpc_fundrawtransaction.py b/test/functional/rpc_fundrawtransaction.py --- a/test/functional/rpc_fundrawtransaction.py +++ b/test/functional/rpc_fundrawtransaction.py @@ -13,7 +13,6 @@ assert_greater_than, assert_greater_than_or_equal, assert_raises_rpc_error, - connect_nodes, find_vout_for_address, ) @@ -40,10 +39,10 @@ def setup_network(self): self.setup_nodes() - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[3]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) + self.connect_nodes(0, 3) def run_test(self): self.log.info("Connect nodes, set fees, generate blocks, and sync") diff --git a/test/functional/rpc_getblockfilter.py b/test/functional/rpc_getblockfilter.py --- a/test/functional/rpc_getblockfilter.py +++ b/test/functional/rpc_getblockfilter.py @@ -9,8 +9,6 @@ assert_equal, assert_is_hex_string, assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, ) FILTER_TYPES = ["basic"] @@ -26,7 +24,7 @@ def run_test(self): # Create two chains by disconnecting nodes 0 & 1, mining, then # reconnecting - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) self.nodes[0].generate(3) self.nodes[1].generate(4) @@ -36,7 +34,7 @@ block_height) for block_height in range(4)] # Reorg node 0 to a new chain - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks() assert_equal(self.nodes[0].getblockcount(), 4) diff --git a/test/functional/rpc_getpeerinfo_deprecation.py b/test/functional/rpc_getpeerinfo_deprecation.py --- a/test/functional/rpc_getpeerinfo_deprecation.py +++ b/test/functional/rpc_getpeerinfo_deprecation.py @@ -5,7 +5,6 @@ """Test deprecation of getpeerinfo RPC fields.""" from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import connect_nodes class GetpeerinfoDeprecationTest(BitcoinTestFramework): @@ -28,7 +27,7 @@ def test_addnode_deprecation(self): self.restart_node(1, ["-deprecatedrpc=getpeerinfo_addnode"]) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.log.info( "Test getpeerinfo by default no longer returns an addnode field") diff --git a/test/functional/rpc_invalidateblock.py b/test/functional/rpc_invalidateblock.py --- a/test/functional/rpc_invalidateblock.py +++ b/test/functional/rpc_invalidateblock.py @@ -6,7 +6,7 @@ from test_framework.address import ADDRESS_ECREG_UNSPENDABLE_DESCRIPTOR from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes +from test_framework.util import assert_equal class InvalidateTest(BitcoinTestFramework): @@ -33,7 +33,7 @@ assert_equal(self.nodes[1].getblockcount(), 6) self.log.info("Connect nodes to force a reorg") - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks(self.nodes[0:2]) assert_equal(self.nodes[0].getblockcount(), 6) badhash = self.nodes[1].getblockhash(2) @@ -45,7 +45,7 @@ assert_equal(self.nodes[0].getbestblockhash(), besthash_n0) self.log.info("\nMake sure we won't reorg to a lower work chain:") - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) self.log.info("Sync node 2 to node 1 so both have 6 blocks") self.sync_blocks(self.nodes[1:3]) assert_equal(self.nodes[2].getblockcount(), 6) diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py --- a/test/functional/rpc_net.py +++ b/test/functional/rpc_net.py @@ -23,7 +23,6 @@ assert_greater_than, assert_greater_than_or_equal, assert_raises_rpc_error, - connect_nodes, p2p_port, ) from test_framework.wallet_util import bytes_to_wif @@ -55,8 +54,8 @@ # Get out of IBD for the minfeefilter and getpeerinfo tests. self.nodes[0].generate(101) # Connect nodes both ways. - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[0]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 0) self.sync_all() self.test_connection_count() @@ -133,8 +132,8 @@ with self.nodes[0].assert_debug_log(expected_msgs=['SetNetworkActive: true\n']): self.nodes[0].setnetworkactive(state=True) # Connect nodes both ways. - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[0]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 0) info = self.nodes[0].getnetworkinfo() assert_equal(info['networkactive'], True) diff --git a/test/functional/rpc_preciousblock.py b/test/functional/rpc_preciousblock.py --- a/test/functional/rpc_preciousblock.py +++ b/test/functional/rpc_preciousblock.py @@ -5,7 +5,7 @@ """Test the preciousblock RPC.""" from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes +from test_framework.util import assert_equal def unidirectional_node_sync_via_rpc(node_src, node_dest): @@ -69,7 +69,7 @@ # Submit competing blocks via RPC so any reorg should occur before we # proceed (no way to wait on inaction for p2p sync) node_sync_via_rpc(self.nodes[0:2]) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) assert_equal(self.nodes[0].getbestblockhash(), hashC) assert_equal(self.nodes[1].getbestblockhash(), hashG) self.log.info("Make Node0 prefer block G") @@ -108,8 +108,8 @@ hashL = self.nodes[2].getbestblockhash() self.log.info("Connect nodes and check no reorg occurs") node_sync_via_rpc(self.nodes[1:3]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) assert_equal(self.nodes[0].getbestblockhash(), hashH) assert_equal(self.nodes[1].getbestblockhash(), hashH) assert_equal(self.nodes[2].getbestblockhash(), hashL) diff --git a/test/functional/rpc_rawtransaction.py b/test/functional/rpc_rawtransaction.py --- a/test/functional/rpc_rawtransaction.py +++ b/test/functional/rpc_rawtransaction.py @@ -30,7 +30,6 @@ assert_equal, assert_greater_than, assert_raises_rpc_error, - connect_nodes, hex_str_to_bytes, ) @@ -68,7 +67,7 @@ def setup_network(self): super().setup_network() - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 2) def run_test(self): self.log.info( diff --git a/test/functional/rpc_setban.py b/test/functional/rpc_setban.py --- a/test/functional/rpc_setban.py +++ b/test/functional/rpc_setban.py @@ -5,7 +5,7 @@ """Test the setban rpc call.""" from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import connect_nodes, p2p_port +from test_framework.util import p2p_port class SetBanTests(BitcoinTestFramework): @@ -17,7 +17,7 @@ def run_test(self): # Node 0 connects to Node 1, check that the noban permission is not # granted - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) peerinfo = self.nodes[1].getpeerinfo()[0] assert('noban' not in peerinfo['permissions']) @@ -32,7 +32,7 @@ # However, node 0 should be able to reconnect if it has noban # permission self.restart_node(1, ['-whitelist=127.0.0.1']) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) peerinfo = self.nodes[1].getpeerinfo()[0] assert('noban' in peerinfo['permissions']) @@ -40,7 +40,7 @@ # noban permission self.nodes[1].setban("127.0.0.1", "remove") self.restart_node(1, []) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) peerinfo = self.nodes[1].getpeerinfo()[0] assert('noban' not in peerinfo['permissions']) diff --git a/test/functional/wallet_abandonconflict.py b/test/functional/wallet_abandonconflict.py --- a/test/functional/wallet_abandonconflict.py +++ b/test/functional/wallet_abandonconflict.py @@ -16,8 +16,6 @@ from test_framework.util import ( assert_equal, assert_raises_rpc_error, - connect_nodes, - disconnect_nodes, satoshi_round, ) @@ -67,7 +65,7 @@ # Disconnect nodes so node0's transactions don't get into node1's # mempool - disconnect_nodes(self.nodes[0], self.nodes[1]) + self.disconnect_nodes(0, 1) # Identify the 10btc outputs nA = next(tx_out["vout"] for tx_out in self.nodes[0].gettransaction( @@ -207,7 +205,7 @@ self.nodes[1].sendrawtransaction(signed["hex"]) self.nodes[1].generate(1) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks() # Verify that B and C's 10,000,000 XEC outputs are available for diff --git a/test/functional/wallet_address_types.py b/test/functional/wallet_address_types.py --- a/test/functional/wallet_address_types.py +++ b/test/functional/wallet_address_types.py @@ -37,11 +37,7 @@ from test_framework.descriptors import descsum_check, descsum_create from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_greater_than, - connect_nodes, -) +from test_framework.util import assert_equal, assert_greater_than class AddressTypeTest(BitcoinTestFramework): @@ -59,7 +55,7 @@ # Fully mesh-connect nodes for faster mempool sync for i, j in itertools.product(range(self.num_nodes), repeat=2): if i > j: - connect_nodes(self.nodes[i], self.nodes[j]) + self.connect_nodes(i, j) self.sync_all() def get_balances(self, key='trusted'): diff --git a/test/functional/wallet_avoidreuse.py b/test/functional/wallet_avoidreuse.py --- a/test/functional/wallet_avoidreuse.py +++ b/test/functional/wallet_avoidreuse.py @@ -9,7 +9,6 @@ assert_approx, assert_equal, assert_raises_rpc_error, - connect_nodes, ) @@ -118,7 +117,7 @@ # Stop and restart node 1 self.restart_node(1) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) # Flags should still be node1.avoid_reuse=false, node2.avoid_reuse=true assert_equal(self.nodes[0].getwalletinfo()["avoid_reuse"], False) diff --git a/test/functional/wallet_backup.py b/test/functional/wallet_backup.py --- a/test/functional/wallet_backup.py +++ b/test/functional/wallet_backup.py @@ -36,11 +36,7 @@ from random import randint from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error class WalletBackupTest(BitcoinTestFramework): @@ -62,10 +58,10 @@ def setup_network(self): self.setup_nodes() - connect_nodes(self.nodes[0], self.nodes[3]) - connect_nodes(self.nodes[1], self.nodes[3]) - connect_nodes(self.nodes[2], self.nodes[3]) - connect_nodes(self.nodes[2], self.nodes[0]) + self.connect_nodes(0, 3) + self.connect_nodes(1, 3) + self.connect_nodes(2, 3) + self.connect_nodes(2, 0) self.sync_all() def one_send(self, from_node, to_address): @@ -96,10 +92,10 @@ self.start_node(0) self.start_node(1) self.start_node(2) - connect_nodes(self.nodes[0], self.nodes[3]) - connect_nodes(self.nodes[1], self.nodes[3]) - connect_nodes(self.nodes[2], self.nodes[3]) - connect_nodes(self.nodes[2], self.nodes[0]) + self.connect_nodes(0, 3) + self.connect_nodes(1, 3) + self.connect_nodes(2, 3) + self.connect_nodes(2, 0) def stop_three(self): self.stop_node(0) diff --git a/test/functional/wallet_balance.py b/test/functional/wallet_balance.py --- a/test/functional/wallet_balance.py +++ b/test/functional/wallet_balance.py @@ -10,11 +10,7 @@ ADDRESS_ECREG_UNSPENDABLE as ADDRESS_WATCHONLY, ) from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error def create_transactions(node, address, amt, fees): @@ -310,7 +306,7 @@ # Now confirm tx_orig self.restart_node(1, ['-persistmempool=0']) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_blocks() self.nodes[1].sendrawtransaction(tx_orig) self.nodes[1].generatetoaddress(1, ADDRESS_WATCHONLY) diff --git a/test/functional/wallet_basic.py b/test/functional/wallet_basic.py --- a/test/functional/wallet_basic.py +++ b/test/functional/wallet_basic.py @@ -12,7 +12,6 @@ assert_equal, assert_fee_amount, assert_raises_rpc_error, - connect_nodes, count_bytes, ) from test_framework.wallet_util import test_address @@ -34,9 +33,9 @@ self.setup_nodes() # Only need nodes 0-2 running at start of test self.stop_node(3) - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) self.sync_all(self.nodes[0:3]) def check_fee_amount(self, curr_balance, @@ -253,7 +252,7 @@ ), node_0_bal + Decimal('10000000'), fee_per_byte, ctx.billable_size()) self.start_node(3, self.extra_args[3]) - connect_nodes(self.nodes[0], self.nodes[3]) + self.connect_nodes(0, 3) self.sync_all() # check if we can list zero value tx as available coins @@ -293,9 +292,9 @@ self.start_node(0, self.extra_args[0] + ["-walletbroadcast=0"]) self.start_node(1, self.extra_args[1] + ["-walletbroadcast=0"]) self.start_node(2, self.extra_args[2] + ["-walletbroadcast=0"]) - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) self.sync_all(self.nodes[0:3]) txid_not_broadcast = self.nodes[0].sendtoaddress( @@ -324,9 +323,9 @@ self.start_node(0, self.extra_args[0]) self.start_node(1, self.extra_args[1]) self.start_node(2, self.extra_args[2]) - connect_nodes(self.nodes[0], self.nodes[1]) - connect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 1) + self.connect_nodes(1, 2) + self.connect_nodes(0, 2) self.sync_blocks(self.nodes[0:3]) self.nodes[0].generate(1) diff --git a/test/functional/wallet_hd.py b/test/functional/wallet_hd.py --- a/test/functional/wallet_hd.py +++ b/test/functional/wallet_hd.py @@ -8,11 +8,7 @@ import shutil from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - assert_raises_rpc_error, - connect_nodes, -) +from test_framework.util import assert_equal, assert_raises_rpc_error class WalletHDTest(BitcoinTestFramework): @@ -111,7 +107,7 @@ assert_equal(hd_info_2["hdkeypath"], "m/0'/0'/" + str(i) + "'") assert_equal(hd_info_2["hdmasterfingerprint"], hd_fingerprint) assert_equal(hd_add, hd_add_2) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_all() # Needs rescan @@ -134,7 +130,7 @@ os.path.join(self.nodes[1].datadir, self.chain, "wallets", self.default_wallet_name, self.wallet_data_filename)) self.start_node(1, extra_args=self.extra_args[1]) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_all() # Wallet automatically scans blocks older than key on startup assert_equal( @@ -233,7 +229,7 @@ # Restart node 1 with keypool of 3 and a different wallet self.nodes[1].createwallet(wallet_name='origin', blank=True) self.restart_node(1, extra_args=['-keypool=3', '-wallet=origin']) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) # sethdseed restoring and seeing txs to addresses out of the # keypool diff --git a/test/functional/wallet_import_rescan.py b/test/functional/wallet_import_rescan.py --- a/test/functional/wallet_import_rescan.py +++ b/test/functional/wallet_import_rescan.py @@ -26,7 +26,7 @@ from decimal import Decimal from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes, set_node_times +from test_framework.util import assert_equal, set_node_times Call = enum.Enum("Call", "single multiaddress multiscript") Data = enum.Enum("Data", "address pub priv") @@ -166,7 +166,7 @@ self.start_nodes() for i in range(1, self.num_nodes): - connect_nodes(self.nodes[i], self.nodes[0]) + self.connect_nodes(i, 0) def run_test(self): # Create one transaction on node 0 with a unique amount for diff --git a/test/functional/wallet_keypool_topup.py b/test/functional/wallet_keypool_topup.py --- a/test/functional/wallet_keypool_topup.py +++ b/test/functional/wallet_keypool_topup.py @@ -14,7 +14,7 @@ import shutil from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes +from test_framework.util import assert_equal class KeypoolRestoreTest(BitcoinTestFramework): @@ -37,7 +37,7 @@ self.stop_node(1) shutil.copyfile(wallet_path, wallet_backup_path) self.start_node(1, self.extra_args[1]) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.log.info("Generate keys for wallet") for _ in range(90): @@ -56,7 +56,7 @@ self.stop_node(1) shutil.copyfile(wallet_backup_path, wallet_path) self.start_node(1, self.extra_args[1]) - connect_nodes(self.nodes[0], self.nodes[1]) + self.connect_nodes(0, 1) self.sync_all() self.log.info("Verify keypool is restored and balance is correct") diff --git a/test/functional/wallet_listsinceblock.py b/test/functional/wallet_listsinceblock.py --- a/test/functional/wallet_listsinceblock.py +++ b/test/functional/wallet_listsinceblock.py @@ -9,7 +9,6 @@ assert_array_result, assert_equal, assert_raises_rpc_error, - connect_nodes, ) @@ -25,7 +24,7 @@ def run_test(self): # All nodes are in IBD from genesis, so they'll need the miner (node2) to be an outbound connection, or have # only one connection. (See fPreferredDownload in net_processing) - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) self.nodes[2].generate(101) self.sync_all() diff --git a/test/functional/wallet_reorgsrestore.py b/test/functional/wallet_reorgsrestore.py --- a/test/functional/wallet_reorgsrestore.py +++ b/test/functional/wallet_reorgsrestore.py @@ -18,7 +18,7 @@ from decimal import Decimal from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes, disconnect_nodes +from test_framework.util import assert_equal class ReorgsRestoreTest(BitcoinTestFramework): @@ -37,9 +37,9 @@ self.sync_blocks() # Disconnect node1 from others to reorg its chain later - disconnect_nodes(self.nodes[0], self.nodes[1]) - disconnect_nodes(self.nodes[1], self.nodes[2]) - connect_nodes(self.nodes[0], self.nodes[2]) + self.disconnect_nodes(0, 1) + self.disconnect_nodes(1, 2) + self.connect_nodes(0, 2) # Send a tx to be unconfirmed later txid = self.nodes[0].sendtoaddress( @@ -51,7 +51,7 @@ # Disconnect node0 from node2 to broadcast a conflict on their # respective chains - disconnect_nodes(self.nodes[0], self.nodes[2]) + self.disconnect_nodes(0, 2) nA = next(tx_out["vout"] for tx_out in self.nodes[0].gettransaction( txid_conflict_from)["details"] if tx_out["amount"] == Decimal("10000000")) inputs = [] @@ -75,7 +75,7 @@ # Reconnect node0 and node2 and check that conflicted_txid is # effectively conflicted - connect_nodes(self.nodes[0], self.nodes[2]) + self.connect_nodes(0, 2) self.sync_blocks([self.nodes[0], self.nodes[2]]) conflicted = self.nodes[0].gettransaction(conflicted_txid) conflicting = self.nodes[0].gettransaction(conflicting_txid) diff --git a/test/functional/wallet_txn_clone.py b/test/functional/wallet_txn_clone.py --- a/test/functional/wallet_txn_clone.py +++ b/test/functional/wallet_txn_clone.py @@ -8,7 +8,7 @@ from test_framework.messages import XEC, CTransaction from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import assert_equal, connect_nodes, disconnect_nodes +from test_framework.util import assert_equal class TxnMallTest(BitcoinTestFramework): @@ -27,7 +27,7 @@ def setup_network(self): # Start with split network: super().setup_network() - disconnect_nodes(self.nodes[1], self.nodes[2]) + self.disconnect_nodes(1, 2) def run_test(self): output_type = "legacy" @@ -119,7 +119,7 @@ self.nodes[2].generate(1) # Reconnect the split network, and sync chain: - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) self.nodes[2].sendrawtransaction(node0_tx2["hex"]) self.nodes[2].sendrawtransaction(tx2["hex"]) self.nodes[2].generate(1) # Mine another block to make sure we sync diff --git a/test/functional/wallet_txn_doublespend.py b/test/functional/wallet_txn_doublespend.py --- a/test/functional/wallet_txn_doublespend.py +++ b/test/functional/wallet_txn_doublespend.py @@ -6,12 +6,7 @@ from decimal import Decimal from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import ( - assert_equal, - connect_nodes, - disconnect_nodes, - find_output, -) +from test_framework.util import assert_equal, find_output class TxnMallTest(BitcoinTestFramework): @@ -30,7 +25,7 @@ def setup_network(self): # Start with split network: super().setup_network() - disconnect_nodes(self.nodes[1], self.nodes[2]) + self.disconnect_nodes(1, 2) def run_test(self): # All nodes should start with 1,250,000,000 XEC: @@ -125,7 +120,7 @@ self.nodes[2].generate(1) # Reconnect the split network, and sync chain: - connect_nodes(self.nodes[1], self.nodes[2]) + self.connect_nodes(1, 2) self.nodes[2].generate(1) # Mine another block to make sure we sync self.sync_blocks() assert_equal(self.nodes[0].gettransaction(