Skip to content

Commit 0105426

Browse files
committed
[test] Move MY_RELAY to p2p.py
messages.py is for message and primitive data structures. Specifics about the test framework's p2p implementation should be in p2p.py. Also rename to P2P_VERSION_RELAY. Also rename msg_version.nRelay to relay. In Bitcoin Core, this is referred to as fRelay, since it's a bool, so this field has always been misnamed.
1 parent 9b4054c commit 0105426

File tree

4 files changed

+16
-13
lines changed

4 files changed

+16
-13
lines changed

test/functional/p2p_filter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,11 @@ def run_test(self):
221221
self.log.info('Test BIP 37 for a node with fRelay = False')
222222
# Add peer but do not send version yet
223223
filter_peer_without_nrelay = self.nodes[0].add_p2p_connection(P2PBloomFilter(), send_version=False, wait_for_verack=False)
224-
# Send version with fRelay=False
224+
# Send version with relay=False
225225
version_without_fRelay = msg_version()
226226
version_without_fRelay.nVersion = P2P_VERSION
227227
version_without_fRelay.strSubVer = P2P_SUBVERSION
228-
version_without_fRelay.nRelay = 0
228+
version_without_fRelay.relay = 0
229229
filter_peer_without_nrelay.send_message(version_without_fRelay)
230230
filter_peer_without_nrelay.wait_for_verack()
231231
assert not self.nodes[0].getpeerinfo()[0]['relaytxes']

test/functional/p2p_leak.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from test_framework.p2p import (
2121
P2PInterface,
2222
P2P_SUBVERSION,
23+
P2P_VERSION_RELAY,
2324
)
2425
from test_framework.test_framework import BitcoinTestFramework
2526
from test_framework.util import (
@@ -128,13 +129,14 @@ def run_test(self):
128129
assert_equal(ver.addrFrom.port, 0)
129130
assert_equal(ver.addrFrom.ip, '0.0.0.0')
130131
assert_equal(ver.nStartingHeight, 201)
131-
assert_equal(ver.nRelay, 1)
132+
assert_equal(ver.relay, 1)
132133

133134
self.log.info('Check that old peers are disconnected')
134135
p2p_old_peer = self.nodes[0].add_p2p_connection(P2PInterface(), send_version=False, wait_for_verack=False)
135136
old_version_msg = msg_version()
136137
old_version_msg.nVersion = 31799
137138
old_version_msg.strSubVer = P2P_SUBVERSION
139+
old_version_msg.relay = P2P_VERSION_RELAY
138140
with self.nodes[0].assert_debug_log(['peer=3 using obsolete version 31799; disconnecting']):
139141
p2p_old_peer.send_message(old_version_msg)
140142
p2p_old_peer.wait_for_disconnect()

test/functional/test_framework/messages.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
from test_framework.siphash import siphash256
3232
from test_framework.util import hex_str_to_bytes, assert_equal
3333

34-
MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version messages (BIP37)
35-
3634
MAX_LOCATOR_SZ = 101
3735
MAX_BLOCK_BASE_SIZE = 1000000
3836
MAX_BLOOM_FILTER_SIZE = 36000
@@ -1018,7 +1016,7 @@ def __repr__(self):
10181016

10191017
# Objects that correspond to messages on the wire
10201018
class msg_version:
1021-
__slots__ = ("addrFrom", "addrTo", "nNonce", "nRelay", "nServices",
1019+
__slots__ = ("addrFrom", "addrTo", "nNonce", "relay", "nServices",
10221020
"nStartingHeight", "nTime", "nVersion", "strSubVer")
10231021
msgtype = b"version"
10241022

@@ -1031,7 +1029,7 @@ def __init__(self):
10311029
self.nNonce = random.getrandbits(64)
10321030
self.strSubVer = ''
10331031
self.nStartingHeight = -1
1034-
self.nRelay = MY_RELAY
1032+
self.relay = 0
10351033

10361034
def deserialize(self, f):
10371035
self.nVersion = struct.unpack("<i", f.read(4))[0]
@@ -1050,11 +1048,11 @@ def deserialize(self, f):
10501048
if self.nVersion >= 70001:
10511049
# Relay field is optional for version 70001 onwards
10521050
try:
1053-
self.nRelay = struct.unpack("<b", f.read(1))[0]
1051+
self.relay = struct.unpack("<b", f.read(1))[0]
10541052
except:
1055-
self.nRelay = 0
1053+
self.relay = 0
10561054
else:
1057-
self.nRelay = 0
1055+
self.relay = 0
10581056

10591057
def serialize(self):
10601058
r = b""
@@ -1066,14 +1064,14 @@ def serialize(self):
10661064
r += struct.pack("<Q", self.nNonce)
10671065
r += ser_string(self.strSubVer.encode('utf-8'))
10681066
r += struct.pack("<i", self.nStartingHeight)
1069-
r += struct.pack("<b", self.nRelay)
1067+
r += struct.pack("<b", self.relay)
10701068
return r
10711069

10721070
def __repr__(self):
1073-
return 'msg_version(nVersion=%i nServices=%i nTime=%s addrTo=%s addrFrom=%s nNonce=0x%016X strSubVer=%s nStartingHeight=%i nRelay=%i)' \
1071+
return 'msg_version(nVersion=%i nServices=%i nTime=%s addrTo=%s addrFrom=%s nNonce=0x%016X strSubVer=%s nStartingHeight=%i relay=%i)' \
10741072
% (self.nVersion, self.nServices, time.ctime(self.nTime),
10751073
repr(self.addrTo), repr(self.addrFrom), self.nNonce,
1076-
self.strSubVer, self.nStartingHeight, self.nRelay)
1074+
self.strSubVer, self.nStartingHeight, self.relay)
10771075

10781076

10791077
class msg_verack:

test/functional/test_framework/p2p.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@
8585
P2P_VERSION = 70016
8686
# The P2P user agent string that this test framework sends in its `version` message
8787
P2P_SUBVERSION = "/python-p2p-tester:0.0.3/"
88+
# Value for relay that this test framework sends in its `version` message
89+
P2P_VERSION_RELAY = 1
8890

8991
MESSAGEMAP = {
9092
b"addr": msg_addr,
@@ -336,6 +338,7 @@ def peer_connect_send_version(self, services):
336338
vt = msg_version()
337339
vt.nVersion = P2P_VERSION
338340
vt.strSubVer = P2P_SUBVERSION
341+
vt.relay = P2P_VERSION_RELAY
339342
vt.nServices = services
340343
vt.addrTo.ip = self.dstaddr
341344
vt.addrTo.port = self.dstport

0 commit comments

Comments
 (0)