Merge bitcoin/bitcoin#32834: test: Use msg_generic in p2p_ping.py

fa3f100010 test: Use msg_generic in p2p_ping.py (MarcoFalke)

Pull request description:

  It seems odd to derive `msg_pong_corrupt` from `msg_pong`, but then overwrite the serialize method, when one can just directly use `msg_generic` to pass the raw bytes to send over the wire.

  Fix that by using `msg_generic`. This also serves as a regression test against the fix in commit 33480573cb.

  (Can be tested by reverting that commit to observe a failure)

ACKs for top commit:
  dergoegge:
    utACK fa3f100010
  theStack:
    ACK fa3f100010

Tree-SHA512: 53d7d2289f27646fdf7d3b86c53e8e707fa4ca4b006d232850f9dc27409d79b7abe1dece95ccef429d4b52c6a89579c0cc5c0ee37046375c3c0310a2d6f9ddd5
This commit is contained in:
merge-script
2025-06-30 14:41:21 +01:00
2 changed files with 7 additions and 9 deletions

View File

@@ -7,7 +7,10 @@
import time
from test_framework.messages import msg_pong
from test_framework.messages import (
msg_pong,
msg_generic,
)
from test_framework.p2p import P2PInterface
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
@@ -20,11 +23,6 @@ PING_INTERVAL = 2 * 60
TIMEOUT_INTERVAL = 20 * 60
class msg_pong_corrupt(msg_pong):
def serialize(self):
return b""
class NodeNoPong(P2PInterface):
def on_ping(self, message):
pass
@@ -60,7 +58,7 @@ class PingPongTest(BitcoinTestFramework):
self.log.info('Reply without nonce cancels ping')
with self.nodes[0].assert_debug_log(['pong peer=0: Short payload']):
no_pong_node.send_and_ping(msg_pong_corrupt())
no_pong_node.send_and_ping(msg_generic(b"pong", b""))
self.check_peer_info(pingtime=None, minping=None, pingwait=None)
self.log.info('Reply without ping')

View File

@@ -1374,8 +1374,8 @@ class msg_block:
return "msg_block(block=%s)" % (repr(self.block))
# for cases where a user needs tighter control over what is sent over the wire
# note that the user must supply the name of the msgtype, and the data
# Generic type to control the raw bytes sent over the wire.
# The msgtype and the data must be provided.
class msg_generic:
__slots__ = ("msgtype", "data")