aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Newbery <john@johnnewbery.com>2020-11-28 11:41:25 +0000
committerJohn Newbery <john@johnnewbery.com>2021-02-17 09:00:53 +0000
commit7e158a69104831611462cb555da931331b237c78 (patch)
treef971e3a91e458b076d793fa801e759a581cd955a
parent652311165c4ef298dab71d7162f9054abf439f77 (diff)
[test] Move MY_VERSION to p2p.py
The messages.py module should contain code and helpers for [de]serializing p2p messages. Specific usage of those messages should be in p2p.py. Therefore move MY_VERSION to p2p.py. Also rename to P2P_VERSION to distinguish it from other versioning used in Bitcoin/Bitcoin Core. Also always set the nVersion field in CBlockLocator to 0 and ignore the field in deserialized messages. The field is not currently used for anything in Bitcoin Core.
-rwxr-xr-xtest/functional/p2p_filter.py7
-rwxr-xr-xtest/functional/test_framework/messages.py11
-rwxr-xr-xtest/functional/test_framework/p2p.py4
3 files changed, 14 insertions, 8 deletions
diff --git a/test/functional/p2p_filter.py b/test/functional/p2p_filter.py
index 458e5235b6..2324a3f588 100755
--- a/test/functional/p2p_filter.py
+++ b/test/functional/p2p_filter.py
@@ -19,7 +19,11 @@ from test_framework.messages import (
msg_mempool,
msg_version,
)
-from test_framework.p2p import P2PInterface, p2p_lock
+from test_framework.p2p import (
+ P2PInterface,
+ P2P_VERSION,
+ p2p_lock,
+)
from test_framework.script import MAX_SCRIPT_ELEMENT_SIZE
from test_framework.test_framework import BitcoinTestFramework
@@ -218,6 +222,7 @@ class FilterTest(BitcoinTestFramework):
filter_peer_without_nrelay = self.nodes[0].add_p2p_connection(P2PBloomFilter(), send_version=False, wait_for_verack=False)
# Send version with fRelay=False
version_without_fRelay = msg_version()
+ version_without_fRelay.nVersion = P2P_VERSION
version_without_fRelay.nRelay = 0
filter_peer_without_nrelay.send_message(version_without_fRelay)
filter_peer_without_nrelay.wait_for_verack()
diff --git a/test/functional/test_framework/messages.py b/test/functional/test_framework/messages.py
index 623c01908b..b120ce2438 100755
--- a/test/functional/test_framework/messages.py
+++ b/test/functional/test_framework/messages.py
@@ -31,7 +31,6 @@ import time
from test_framework.siphash import siphash256
from test_framework.util import hex_str_to_bytes, assert_equal
-MY_VERSION = 70016 # past wtxid relay
MY_SUBVERSION = "/python-p2p-tester:0.0.3/"
MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version messages (BIP37)
@@ -325,22 +324,20 @@ class CBlockLocator:
__slots__ = ("nVersion", "vHave")
def __init__(self):
- self.nVersion = MY_VERSION
self.vHave = []
def deserialize(self, f):
- self.nVersion = struct.unpack("<i", f.read(4))[0]
+ struct.unpack("<i", f.read(4))[0] # Ignore version field.
self.vHave = deser_uint256_vector(f)
def serialize(self):
r = b""
- r += struct.pack("<i", self.nVersion)
+ r += struct.pack("<i", 0) # Bitcoin Core ignores version field. Set it to 0.
r += ser_uint256_vector(self.vHave)
return r
def __repr__(self):
- return "CBlockLocator(nVersion=%i vHave=%s)" \
- % (self.nVersion, repr(self.vHave))
+ return "CBlockLocator(vHave=%s)" % (repr(self.vHave))
class COutPoint:
@@ -1027,7 +1024,7 @@ class msg_version:
msgtype = b"version"
def __init__(self):
- self.nVersion = MY_VERSION
+ self.nVersion = 0
self.nServices = NODE_NETWORK | NODE_WITNESS
self.nTime = int(time.time())
self.addrTo = CAddress()
diff --git a/test/functional/test_framework/p2p.py b/test/functional/test_framework/p2p.py
index befadc894f..998763ff4d 100755
--- a/test/functional/test_framework/p2p.py
+++ b/test/functional/test_framework/p2p.py
@@ -80,6 +80,9 @@ logger = logging.getLogger("TestFramework.p2p")
# The minimum P2P version that this test framework supports
MIN_P2P_VERSION_SUPPORTED = 60001
+# The P2P version that this test framework implements and sends in its `version` message
+# Version 70016 supports wtxid relay
+P2P_VERSION = 70016
MESSAGEMAP = {
b"addr": msg_addr,
@@ -329,6 +332,7 @@ class P2PInterface(P2PConnection):
def peer_connect_send_version(self, services):
# Send a version msg
vt = msg_version()
+ vt.nVersion = P2P_VERSION
vt.nServices = services
vt.addrTo.ip = self.dstaddr
vt.addrTo.port = self.dstport