Skip to content

Commit 2c1669c

Browse files
theStackmzumsande
authored andcommitted
test: enable v2 transport for rpc_net.py
- "transport_protocol_type" of inbound peer before version handshake is "detecting" on p2p v2 nodes (as opposed to "v1" for p2p v1) - size of a ping/pong message is 29 bytes (as opposed to 32 for p2p v1) - for the sendmsgtopeer RPC sub-test, enforce p2p v1 connection to have a peer id of zero
1 parent cc961c2 commit 2c1669c

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

test/functional/rpc_net.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def test_getpeerinfo(self):
150150
"synced_blocks": -1,
151151
"synced_headers": -1,
152152
"timeoffset": 0,
153-
"transport_protocol_type": "v1",
153+
"transport_protocol_type": "v1" if not self.options.v2transport else "detecting",
154154
"version": 0,
155155
},
156156
)
@@ -160,19 +160,23 @@ def test_getpeerinfo(self):
160160
def test_getnettotals(self):
161161
self.log.info("Test getnettotals")
162162
# Test getnettotals and getpeerinfo by doing a ping. The bytes
163-
# sent/received should increase by at least the size of one ping (32
164-
# bytes) and one pong (32 bytes).
163+
# sent/received should increase by at least the size of one ping
164+
# and one pong. Both have a payload size of 8 bytes, but the total
165+
# size depends on the used p2p version:
166+
# - p2p v1: 24 bytes (header) + 8 bytes (payload) = 32 bytes
167+
# - p2p v2: 21 bytes (header/tag with short-id) + 8 bytes (payload) = 29 bytes
168+
ping_size = 32 if not self.options.v2transport else 29
165169
net_totals_before = self.nodes[0].getnettotals()
166170
peer_info_before = self.nodes[0].getpeerinfo()
167171

168172
self.nodes[0].ping()
169-
self.wait_until(lambda: (self.nodes[0].getnettotals()['totalbytessent'] >= net_totals_before['totalbytessent'] + 32 * 2), timeout=1)
170-
self.wait_until(lambda: (self.nodes[0].getnettotals()['totalbytesrecv'] >= net_totals_before['totalbytesrecv'] + 32 * 2), timeout=1)
173+
self.wait_until(lambda: (self.nodes[0].getnettotals()['totalbytessent'] >= net_totals_before['totalbytessent'] + ping_size * 2), timeout=1)
174+
self.wait_until(lambda: (self.nodes[0].getnettotals()['totalbytesrecv'] >= net_totals_before['totalbytesrecv'] + ping_size * 2), timeout=1)
171175

172176
for peer_before in peer_info_before:
173177
peer_after = lambda: next(p for p in self.nodes[0].getpeerinfo() if p['id'] == peer_before['id'])
174-
self.wait_until(lambda: peer_after()['bytesrecv_per_msg'].get('pong', 0) >= peer_before['bytesrecv_per_msg'].get('pong', 0) + 32, timeout=1)
175-
self.wait_until(lambda: peer_after()['bytessent_per_msg'].get('ping', 0) >= peer_before['bytessent_per_msg'].get('ping', 0) + 32, timeout=1)
178+
self.wait_until(lambda: peer_after()['bytesrecv_per_msg'].get('pong', 0) >= peer_before['bytesrecv_per_msg'].get('pong', 0) + ping_size, timeout=1)
179+
self.wait_until(lambda: peer_after()['bytessent_per_msg'].get('ping', 0) >= peer_before['bytessent_per_msg'].get('ping', 0) + ping_size, timeout=1)
176180

177181
def test_getnetworkinfo(self):
178182
self.log.info("Test getnetworkinfo")
@@ -342,7 +346,10 @@ def test_sendmsgtopeer(self):
342346
node = self.nodes[0]
343347

344348
self.restart_node(0)
345-
self.connect_nodes(0, 1)
349+
# we want to use a p2p v1 connection here in order to ensure
350+
# a peer id of zero (a downgrade from v2 to v1 would lead
351+
# to an increase of the peer id)
352+
self.connect_nodes(0, 1, peer_advertises_v2=False)
346353

347354
self.log.info("Test sendmsgtopeer")
348355
self.log.debug("Send a valid message")

test/functional/test_runner.py

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
'p2p_getdata.py',
241241
'p2p_addrfetch.py',
242242
'rpc_net.py',
243+
'rpc_net.py --v2transport',
243244
'wallet_keypool.py --legacy-wallet',
244245
'wallet_keypool.py --descriptors',
245246
'wallet_descriptor.py --descriptors',

0 commit comments

Comments
 (0)