Skip to content

Commit dad596f

Browse files
committed
[tests] Make NodeConnCB a subclass of NodeConn
This makes NodeConnCB a subclass of NodeConn, and removes the need for the client code to know anything about the implementation details of NodeConnCB. NodeConn can now be swapped out for any other implementation of a low-level connection without changing client code.
1 parent e30d404 commit dad596f

14 files changed

+197
-197
lines changed

test/functional/assumevalid.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def setup_network(self):
6767
def send_blocks_until_disconnected(self, p2p_conn):
6868
"""Keep sending blocks to the node until we're disconnected."""
6969
for i in range(len(self.blocks)):
70-
if not p2p_conn.connection:
70+
if p2p_conn.state != "connected":
7171
break
7272
try:
7373
p2p_conn.send_message(msg_block(self.blocks[i]))

test/functional/bip9-softforks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def test_BIP(self, bipName, activated_version, invalidate, invalidatePostSignatu
246246
self.setup_network()
247247
self.test.add_all_connections(self.nodes)
248248
NetworkThread().start()
249-
self.test.test_nodes[0].wait_for_verack()
249+
self.test.p2p_connections[0].wait_for_verack()
250250

251251
def get_tests(self):
252252
for test in itertools.chain(

test/functional/example_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ def __init__(self):
4949
# Stores a dictionary of all blocks received
5050
self.block_receive_map = defaultdict(int)
5151

52-
def on_block(self, conn, message):
52+
def on_block(self, message):
5353
"""Override the standard on_block callback
5454
5555
Store the hash of a received block in the dictionary."""
5656
message.block.calc_sha256()
5757
self.block_receive_map[message.block.sha256] += 1
5858

59-
def on_inv(self, conn, message):
59+
def on_inv(self, message):
6060
"""Override the standard on_inv callback"""
6161
pass
6262

test/functional/maxuploadtarget.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ def __init__(self):
2222
super().__init__()
2323
self.block_receive_map = defaultdict(int)
2424

25-
def on_inv(self, conn, message):
25+
def on_inv(self, message):
2626
pass
2727

28-
def on_block(self, conn, message):
28+
def on_block(self, message):
2929
message.block.calc_sha256()
3030
self.block_receive_map[message.block.sha256] += 1
3131

test/functional/p2p-compactblocks.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ def __init__(self):
2525
# so we can eg wait until a particular block is announced.
2626
self.announced_blockhashes = set()
2727

28-
def on_sendcmpct(self, conn, message):
28+
def on_sendcmpct(self, message):
2929
self.last_sendcmpct.append(message)
3030

31-
def on_cmpctblock(self, conn, message):
31+
def on_cmpctblock(self, message):
3232
self.block_announced = True
3333
self.last_message["cmpctblock"].header_and_shortids.header.calc_sha256()
3434
self.announced_blockhashes.add(self.last_message["cmpctblock"].header_and_shortids.header.sha256)
3535

36-
def on_headers(self, conn, message):
36+
def on_headers(self, message):
3737
self.block_announced = True
3838
for x in self.last_message["headers"].headers:
3939
x.calc_sha256()
4040
self.announced_blockhashes.add(x.sha256)
4141

42-
def on_inv(self, conn, message):
42+
def on_inv(self, message):
4343
for x in self.last_message["inv"].inv:
4444
if x.type == 2:
4545
self.block_announced = True
@@ -60,7 +60,7 @@ def get_headers(self, locator, hashstop):
6060
msg = msg_getheaders()
6161
msg.locator.vHave = locator
6262
msg.hashstop = hashstop
63-
self.connection.send_message(msg)
63+
self.send_message(msg)
6464

6565
def send_header_for_blocks(self, new_blocks):
6666
headers_message = msg_headers()
@@ -86,7 +86,7 @@ def send_await_disconnect(self, message, timeout=30):
8686
This is used when we want to send a message into the node that we expect
8787
will get us disconnected, eg an invalid block."""
8888
self.send_message(message)
89-
wait_until(lambda: not self.connected, timeout=timeout, lock=mininode_lock)
89+
wait_until(lambda: self.state != "connected", timeout=timeout, lock=mininode_lock)
9090

9191
class CompactBlocksTest(BitcoinTestFramework):
9292
def set_test_params(self):

test/functional/p2p-feefilter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def __init__(self):
2727
super().__init__()
2828
self.txinvs = []
2929

30-
def on_inv(self, conn, message):
30+
def on_inv(self, message):
3131
for i in message.inv:
3232
if (i.type == 1):
3333
self.txinvs.append(hashToHex(i.hash))

test/functional/p2p-leaktests.py

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -30,43 +30,42 @@ def bad_message(self, message):
3030
self.unexpected_msg = True
3131
self.log.info("should not have received message: %s" % message.command)
3232

33-
def on_open(self, conn):
34-
self.connected = True
33+
def on_open(self):
3534
self.ever_connected = True
3635

37-
def on_version(self, conn, message): self.bad_message(message)
38-
def on_verack(self, conn, message): self.bad_message(message)
39-
def on_reject(self, conn, message): self.bad_message(message)
40-
def on_inv(self, conn, message): self.bad_message(message)
41-
def on_addr(self, conn, message): self.bad_message(message)
42-
def on_getdata(self, conn, message): self.bad_message(message)
43-
def on_getblocks(self, conn, message): self.bad_message(message)
44-
def on_tx(self, conn, message): self.bad_message(message)
45-
def on_block(self, conn, message): self.bad_message(message)
46-
def on_getaddr(self, conn, message): self.bad_message(message)
47-
def on_headers(self, conn, message): self.bad_message(message)
48-
def on_getheaders(self, conn, message): self.bad_message(message)
49-
def on_ping(self, conn, message): self.bad_message(message)
50-
def on_mempool(self, conn): self.bad_message(message)
51-
def on_pong(self, conn, message): self.bad_message(message)
52-
def on_feefilter(self, conn, message): self.bad_message(message)
53-
def on_sendheaders(self, conn, message): self.bad_message(message)
54-
def on_sendcmpct(self, conn, message): self.bad_message(message)
55-
def on_cmpctblock(self, conn, message): self.bad_message(message)
56-
def on_getblocktxn(self, conn, message): self.bad_message(message)
57-
def on_blocktxn(self, conn, message): self.bad_message(message)
36+
def on_version(self, message): self.bad_message(message)
37+
def on_verack(self, message): self.bad_message(message)
38+
def on_reject(self, message): self.bad_message(message)
39+
def on_inv(self, message): self.bad_message(message)
40+
def on_addr(self, message): self.bad_message(message)
41+
def on_getdata(self, message): self.bad_message(message)
42+
def on_getblocks(self, message): self.bad_message(message)
43+
def on_tx(self, message): self.bad_message(message)
44+
def on_block(self, message): self.bad_message(message)
45+
def on_getaddr(self, message): self.bad_message(message)
46+
def on_headers(self, message): self.bad_message(message)
47+
def on_getheaders(self, message): self.bad_message(message)
48+
def on_ping(self, message): self.bad_message(message)
49+
def on_mempool(self, message): self.bad_message(message)
50+
def on_pong(self, message): self.bad_message(message)
51+
def on_feefilter(self, message): self.bad_message(message)
52+
def on_sendheaders(self, message): self.bad_message(message)
53+
def on_sendcmpct(self, message): self.bad_message(message)
54+
def on_cmpctblock(self, message): self.bad_message(message)
55+
def on_getblocktxn(self, message): self.bad_message(message)
56+
def on_blocktxn(self, message): self.bad_message(message)
5857

5958
# Node that never sends a version. We'll use this to send a bunch of messages
6059
# anyway, and eventually get disconnected.
6160
class CNodeNoVersionBan(CLazyNode):
6261
# send a bunch of veracks without sending a message. This should get us disconnected.
6362
# NOTE: implementation-specific check here. Remove if bitcoind ban behavior changes
64-
def on_open(self, conn):
65-
super().on_open(conn)
63+
def on_open(self):
64+
super().on_open()
6665
for i in range(banscore):
6766
self.send_message(msg_verack())
6867

69-
def on_reject(self, conn, message): pass
68+
def on_reject(self, message): pass
7069

7170
# Node that never sends a version. This one just sits idle and hopes to receive
7271
# any message (it shouldn't!)
@@ -80,15 +79,15 @@ def __init__(self):
8079
self.version_received = False
8180
super().__init__()
8281

83-
def on_reject(self, conn, message): pass
84-
def on_verack(self, conn, message): pass
82+
def on_reject(self, message): pass
83+
def on_verack(self, message): pass
8584
# When version is received, don't reply with a verack. Instead, see if the
8685
# node will give us a message that it shouldn't. This is not an exhaustive
8786
# list!
88-
def on_version(self, conn, message):
87+
def on_version(self, message):
8988
self.version_received = True
90-
conn.send_message(msg_ping())
91-
conn.send_message(msg_getaddr())
89+
self.send_message(msg_ping())
90+
self.send_message(msg_getaddr())
9291

9392
class P2PLeakTest(BitcoinTestFramework):
9493
def set_test_params(self):
@@ -119,11 +118,11 @@ def run_test(self):
119118
time.sleep(5)
120119

121120
#This node should have been banned
122-
assert not no_version_bannode.connected
121+
assert no_version_bannode.state != "connected"
123122

124123
# These nodes should have been disconnected
125-
assert not unsupported_service_bit5_node.connected
126-
assert not unsupported_service_bit7_node.connected
124+
assert unsupported_service_bit5_node.state != "connected"
125+
assert unsupported_service_bit7_node.state != "connected"
127126

128127
self.nodes[0].disconnect_p2ps()
129128

test/functional/p2p-segwit.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def __init__(self):
6464
super().__init__()
6565
self.getdataset = set()
6666

67-
def on_getdata(self, conn, message):
67+
def on_getdata(self, message):
6868
for inv in message.inv:
6969
self.getdataset.add(inv.hash)
7070

@@ -148,7 +148,7 @@ def update_witness_block_with_transactions(self, block, tx_list, nonce=0):
148148
''' Individual tests '''
149149
def test_witness_services(self):
150150
self.log.info("Verifying NODE_WITNESS service bit")
151-
assert((self.test_node.connection.nServices & NODE_WITNESS) != 0)
151+
assert((self.test_node.nServices & NODE_WITNESS) != 0)
152152

153153

154154
# See if sending a regular transaction works, and create a utxo
@@ -1876,11 +1876,11 @@ def test_non_standard_witness(self):
18761876
def run_test(self):
18771877
# Setup the p2p connections and start up the network thread.
18781878
# self.test_node sets NODE_WITNESS|NODE_NETWORK
1879-
self.test_node = self.nodes[0].add_p2p_connection(p2p_conn=TestNode(), services=NODE_NETWORK|NODE_WITNESS)
1879+
self.test_node = self.nodes[0].add_p2p_connection(TestNode(), services=NODE_NETWORK|NODE_WITNESS)
18801880
# self.old_node sets only NODE_NETWORK
1881-
self.old_node = self.nodes[0].add_p2p_connection(p2p_conn=TestNode(), services=NODE_NETWORK)
1881+
self.old_node = self.nodes[0].add_p2p_connection(TestNode(), services=NODE_NETWORK)
18821882
# self.std_node is for testing node1 (fRequireStandard=true)
1883-
self.std_node = self.nodes[1].add_p2p_connection(p2p_conn=TestNode(), services=NODE_NETWORK|NODE_WITNESS)
1883+
self.std_node = self.nodes[1].add_p2p_connection(TestNode(), services=NODE_NETWORK|NODE_WITNESS)
18841884

18851885
NetworkThread().start() # Start up network handling in another thread
18861886

test/functional/p2p-timeouts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from test_framework.util import *
2929

3030
class TestNode(NodeConnCB):
31-
def on_version(self, conn, message):
31+
def on_version(self, message):
3232
# Don't send a verack in response
3333
pass
3434

test/functional/p2p-versionbits-warning.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
VB_PATTERN = re.compile("^Warning.*versionbit")
2525

2626
class TestNode(NodeConnCB):
27-
def on_inv(self, conn, message):
27+
def on_inv(self, message):
2828
pass
2929

3030
class VersionBitsWarningTest(BitcoinTestFramework):

0 commit comments

Comments
 (0)