test: Use connect_nodes when connecting nodes in the test_framework

This commit is contained in:
MarcoFalke 2019-09-16 09:22:49 -04:00
parent 1111bb91f5
commit faaee1e39a
No known key found for this signature in database
GPG key ID: CE2B75697E69A548
5 changed files with 38 additions and 5 deletions

View file

@ -18,6 +18,10 @@ class DisconnectBanTest(BitcoinTestFramework):
self.num_nodes = 2 self.num_nodes = 2
def run_test(self): def run_test(self):
self.log.info("Connect nodes both way")
connect_nodes(self.nodes[0], 1)
connect_nodes(self.nodes[1], 0)
self.log.info("Test setban and listbanned RPCs") self.log.info("Test setban and listbanned RPCs")
self.log.info("setban: successfully ban single IP address") self.log.info("setban: successfully ban single IP address")
@ -74,7 +78,9 @@ class DisconnectBanTest(BitcoinTestFramework):
# Clear ban lists # Clear ban lists
self.nodes[1].clearbanned() self.nodes[1].clearbanned()
connect_nodes_bi(self.nodes, 0, 1) self.log.info("Connect nodes both way")
connect_nodes(self.nodes[0], 1)
connect_nodes(self.nodes[1], 0)
self.log.info("Test disconnectnode RPCs") self.log.info("Test disconnectnode RPCs")

View file

@ -121,6 +121,7 @@ class TxDownloadTest(BitcoinTestFramework):
# peer, plus # peer, plus
# * the first time it is re-requested from the outbound peer, plus # * the first time it is re-requested from the outbound peer, plus
# * 2 seconds to avoid races # * 2 seconds to avoid races
assert self.nodes[1].getpeerinfo()[0]['inbound'] == False
timeout = 2 + (MAX_GETDATA_RANDOM_DELAY + INBOUND_PEER_TX_DELAY) + ( timeout = 2 + (MAX_GETDATA_RANDOM_DELAY + INBOUND_PEER_TX_DELAY) + (
GETDATA_TX_INTERVAL + MAX_GETDATA_RANDOM_DELAY) GETDATA_TX_INTERVAL + MAX_GETDATA_RANDOM_DELAY)
self.log.info("Tx should be received at node 1 after {} seconds".format(timeout)) self.log.info("Tx should be received at node 1 after {} seconds".format(timeout))

View file

@ -54,6 +54,10 @@ class NetTest(BitcoinTestFramework):
self.extra_args = [["-minrelaytxfee=0.00001000"],["-minrelaytxfee=0.00000500"]] self.extra_args = [["-minrelaytxfee=0.00001000"],["-minrelaytxfee=0.00000500"]]
def run_test(self): def run_test(self):
self.log.info('Connect nodes both way')
connect_nodes(self.nodes[0], 1)
connect_nodes(self.nodes[1], 0)
self._test_connection_count() self._test_connection_count()
self._test_getnettotals() self._test_getnettotals()
self._test_getnetworkinfo() self._test_getnetworkinfo()
@ -105,7 +109,10 @@ class NetTest(BitcoinTestFramework):
wait_until(lambda: self.nodes[0].getnetworkinfo()['connections'] == 0, timeout=3) wait_until(lambda: self.nodes[0].getnetworkinfo()['connections'] == 0, timeout=3)
self.nodes[0].setnetworkactive(state=True) self.nodes[0].setnetworkactive(state=True)
connect_nodes_bi(self.nodes, 0, 1) self.log.info('Connect nodes both way')
connect_nodes(self.nodes[0], 1)
connect_nodes(self.nodes[1], 0)
assert_equal(self.nodes[0].getnetworkinfo()['networkactive'], True) assert_equal(self.nodes[0].getnetworkinfo()['networkactive'], True)
assert_equal(self.nodes[0].getnetworkinfo()['connections'], 2) assert_equal(self.nodes[0].getnetworkinfo()['connections'], 2)

View file

@ -281,8 +281,18 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
# Connect the nodes as a "chain". This allows us # Connect the nodes as a "chain". This allows us
# to split the network between nodes 1 and 2 to get # to split the network between nodes 1 and 2 to get
# two halves that can work on competing chains. # two halves that can work on competing chains.
#
# Topology looks like this:
# node0 <-- node1 <-- node2 <-- node3
#
# If all nodes are in IBD (clean chain from genesis), node0 is assumed to be the source of blocks (miner). To
# ensure block propagation, all nodes will establish outgoing connections toward node0.
# See fPreferredDownload in net_processing.
#
# If further outbound connections are needed, they can be added at the beginning of the test with e.g.
# connect_nodes(self.nodes[1], 2)
for i in range(self.num_nodes - 1): for i in range(self.num_nodes - 1):
connect_nodes_bi(self.nodes, i, i + 1) connect_nodes(self.nodes[i + 1], i)
self.sync_all() self.sync_all()
def setup_nodes(self): def setup_nodes(self):

View file

@ -5,7 +5,13 @@
"""Test the listsincelast RPC.""" """Test the listsincelast RPC."""
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, assert_array_result, assert_raises_rpc_error from test_framework.util import (
assert_array_result,
assert_equal,
assert_raises_rpc_error,
connect_nodes,
)
class ListSinceBlockTest(BitcoinTestFramework): class ListSinceBlockTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
@ -16,6 +22,9 @@ class ListSinceBlockTest (BitcoinTestFramework):
self.skip_if_no_wallet() self.skip_if_no_wallet()
def run_test(self): 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], 2)
self.nodes[2].generate(101) self.nodes[2].generate(101)
self.sync_all() self.sync_all()