Skip to content

Commit b99a163

Browse files
author
MarcoFalke
committed
Merge #19781: test: add parameterized constructor for msg_sendcmpct()
6384419 test: add parameterized constructor for msg_sendcmpct() (Sebastian Falbesoner) Pull request description: While working on the test for #19776 I noticed that creating a `sendcmpct` message is quite cumbersome -- due to the lack of a parameterized constructor, one needs to create an empty (that is, initialized with default values) object and then set the two fields one by one. This PR replaces the default constructor with a parameterized constructor and uses it in the test `p2p_compactblocks.py`, reducing LOC. No need to pollute the namespace with temporary throw-away message objects anymore. ACKs for top commit: guggero: Code review ACK 6384419. epson121: Code review ACK 6384419 Tree-SHA512: 3b58d276d714b73abc6cc98d1d52dec5f6026b33f03faaeb7dcbc5d83ac377555179f98b159b2b9ecc8957999c35a1dc082e3c69299c5fde4e35f1bd0587ce9d
2 parents 38fd1bd + 6384419 commit b99a163

File tree

2 files changed

+10
-27
lines changed

2 files changed

+10
-27
lines changed

test/functional/p2p_compactblocks.py

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -188,28 +188,21 @@ def check_announcement_of_new_block(node, peer, predicate):
188188
test_node.request_headers_and_sync(locator=[tip])
189189

190190
# Now try a SENDCMPCT message with too-high version
191-
sendcmpct = msg_sendcmpct()
192-
sendcmpct.version = preferred_version + 1
193-
sendcmpct.announce = True
194-
test_node.send_and_ping(sendcmpct)
191+
test_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version+1))
195192
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message)
196193

197194
# Headers sync before next test.
198195
test_node.request_headers_and_sync(locator=[tip])
199196

200197
# Now try a SENDCMPCT message with valid version, but announce=False
201-
sendcmpct.version = preferred_version
202-
sendcmpct.announce = False
203-
test_node.send_and_ping(sendcmpct)
198+
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version))
204199
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message)
205200

206201
# Headers sync before next test.
207202
test_node.request_headers_and_sync(locator=[tip])
208203

209204
# Finally, try a SENDCMPCT message with announce=True
210-
sendcmpct.version = preferred_version
211-
sendcmpct.announce = True
212-
test_node.send_and_ping(sendcmpct)
205+
test_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version))
213206
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
214207

215208
# Try one more time (no headers sync should be needed!)
@@ -220,23 +213,17 @@ def check_announcement_of_new_block(node, peer, predicate):
220213
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
221214

222215
# Try one more time, after sending a version-1, announce=false message.
223-
sendcmpct.version = preferred_version - 1
224-
sendcmpct.announce = False
225-
test_node.send_and_ping(sendcmpct)
216+
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version-1))
226217
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
227218

228219
# Now turn off announcements
229-
sendcmpct.version = preferred_version
230-
sendcmpct.announce = False
231-
test_node.send_and_ping(sendcmpct)
220+
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version))
232221
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message and "headers" in p.last_message)
233222

234223
if old_node is not None:
235224
# Verify that a peer using an older protocol version can receive
236225
# announcements from this node.
237-
sendcmpct.version = preferred_version - 1
238-
sendcmpct.announce = True
239-
old_node.send_and_ping(sendcmpct)
226+
old_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version-1))
240227
# Header sync
241228
old_node.request_headers_and_sync(locator=[tip])
242229
check_announcement_of_new_block(node, old_node, lambda p: "cmpctblock" in p.last_message)
@@ -729,11 +716,7 @@ def request_cb_announcements(self, peer):
729716
node = self.nodes[0]
730717
tip = node.getbestblockhash()
731718
peer.get_headers(locator=[int(tip, 16)], hashstop=0)
732-
733-
msg = msg_sendcmpct()
734-
msg.version = peer.cmpct_version
735-
msg.announce = True
736-
peer.send_and_ping(msg)
719+
peer.send_and_ping(msg_sendcmpct(announce=True, version=peer.cmpct_version))
737720

738721
def test_compactblock_reconstruction_multiple_peers(self, stalling_peer, delivery_peer):
739722
node = self.nodes[0]

test/functional/test_framework/messages.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,9 +1472,9 @@ class msg_sendcmpct:
14721472
__slots__ = ("announce", "version")
14731473
msgtype = b"sendcmpct"
14741474

1475-
def __init__(self):
1476-
self.announce = False
1477-
self.version = 1
1475+
def __init__(self, announce=False, version=1):
1476+
self.announce = announce
1477+
self.version = version
14781478

14791479
def deserialize(self, f):
14801480
self.announce = struct.unpack("<?", f.read(1))[0]

0 commit comments

Comments
 (0)