v30.3-roots.1 · Commit 3: [PATCH 03/68] feat(policy): preserve Roots relay and network controls on Core 30.3
test/functional/rpc_net.py
Before: test/functional/rpc_net.py · After: test/functional/rpc_net.py
File metadata
index 41ecbbed22d96b0f81c23bf29048b60e7e5c9203..f830d14a4c80197e9be68593b05a767ce96541ad 100755
Download original patch · Release notes
Diff rows 1–63 of 63. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. Before is on the left; after is on the right. Unified view fits narrow screens more easily.
test/functional/rpc_net.py
CHANGED
|
@@ -37,7 +37,7 @@ def assert_net_servicesnames(servicesflag, servicenames):
|
|
| 37 |
"""
|
| 38 |
servicesflag_generated = 0
|
| 39 |
for servicename in servicenames:
|
| 40 |
-
servicesflag_generated |= getattr(test_framework.messages, 'NODE_' + servicename)
|
| 41 |
assert servicesflag_generated == servicesflag
|
| 42 |
|
| 43 |
|
|
@@ -104,7 +104,8 @@ class NetTest(BitcoinTestFramework):
|
|
| 104 |
time_now = int(time.time())
|
| 105 |
peer_info = [x.getpeerinfo() for x in self.nodes]
|
| 106 |
# Verify last_block and last_transaction keys/values.
|
| 107 |
-
for node, peer, field in product(range(self.num_nodes), range(2), ['last_block', 'last_transaction']):
|
|
|
|
| 108 |
assert field in peer_info[node][peer].keys()
|
| 109 |
if peer_info[node][peer][field] != 0:
|
| 110 |
assert_approx(peer_info[node][peer][field], time_now, vspan=60)
|
|
@@ -117,6 +118,10 @@ class NetTest(BitcoinTestFramework):
|
|
| 117 |
# check the `servicesnames` field
|
| 118 |
for info in peer_info:
|
| 119 |
assert_net_servicesnames(int(info[0]["services"], 0x10), info[0]["servicesnames"])
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
assert_equal(peer_info[0][0]['connection_type'], 'inbound')
|
| 122 |
assert_equal(peer_info[0][1]['connection_type'], 'manual')
|
|
@@ -126,6 +131,7 @@ class NetTest(BitcoinTestFramework):
|
|
| 126 |
|
| 127 |
# Check dynamically generated networks list in getpeerinfo help output.
|
| 128 |
assert "(ipv4, ipv6, onion, i2p, cjdns, not_publicly_routable)" in self.nodes[0].help("getpeerinfo")
|
|
|
|
| 129 |
|
| 130 |
self.log.info("Check getpeerinfo output before a version message was sent")
|
| 131 |
no_version_peer_id = 2
|
|
@@ -142,6 +148,7 @@ class NetTest(BitcoinTestFramework):
|
|
| 142 |
# The next two fields will vary for v2 connections because we send a rng-based number of decoy messages
|
| 143 |
peer_info.pop("bytesrecv")
|
| 144 |
peer_info.pop("bytessent")
|
|
|
|
| 145 |
assert_equal(
|
| 146 |
peer_info,
|
| 147 |
{
|
|
@@ -158,12 +165,14 @@ class NetTest(BitcoinTestFramework):
|
|
| 158 |
"inbound": True,
|
| 159 |
"inflight": [],
|
| 160 |
"last_block": 0,
|
|
|
|
| 161 |
"last_transaction": 0,
|
| 162 |
"lastrecv": 0 if not self.options.v2transport else no_version_peer_conntime,
|
| 163 |
"lastsend": 0 if not self.options.v2transport else no_version_peer_conntime,
|
| 164 |
"minfeefilter": Decimal("0E-8"),
|
| 165 |
"network": "not_publicly_routable",
|
| 166 |
-
"permissions": [],
|
|
|
|
| 167 |
"presynced_headers": -1,
|
| 168 |
"relaytxes": False,
|
| 169 |
"services": "0000000000000000",
|
|
@@ -176,6 +185,7 @@ class NetTest(BitcoinTestFramework):
|
|
| 176 |
"timeoffset": 0,
|
| 177 |
"transport_protocol_type": "v1" if not self.options.v2transport else "v2",
|
| 178 |
"version": 0,
|
|
|
|
| 179 |
},
|
| 180 |
)
|
| 181 |
no_version_peer.peer_disconnect()
|
|
|
|
| 37 |
"""
|
| 38 |
servicesflag_generated = 0
|
| 39 |
for servicename in servicenames:
|
| 40 |
+
servicesflag_generated |= getattr(test_framework.messages, 'NODE_' + servicename.rstrip('?'))
|
| 41 |
assert servicesflag_generated == servicesflag
|
| 42 |
|
| 43 |
|
|
|
|
| 104 |
time_now = int(time.time())
|
| 105 |
peer_info = [x.getpeerinfo() for x in self.nodes]
|
| 106 |
# Verify last_block and last_transaction keys/values.
|
| 107 |
+
for node, peer, field in product(range(self.num_nodes), range(2),
|
| 108 |
+
['last_block', 'last_block_announcement', 'last_transaction']):
|
| 109 |
assert field in peer_info[node][peer].keys()
|
| 110 |
if peer_info[node][peer][field] != 0:
|
| 111 |
assert_approx(peer_info[node][peer][field], time_now, vspan=60)
|
|
|
|
| 118 |
# check the `servicesnames` field
|
| 119 |
for info in peer_info:
|
| 120 |
assert_net_servicesnames(int(info[0]["services"], 0x10), info[0]["servicesnames"])
|
| 121 |
+
# CPU accounting is optional, but when the platform records it, the
|
| 122 |
+
# operator-facing load value is a non-negative fraction of connection time.
|
| 123 |
+
if "cpu_load" in info[0]:
|
| 124 |
+
assert info[0]["cpu_load"] >= 0
|
| 125 |
|
| 126 |
assert_equal(peer_info[0][0]['connection_type'], 'inbound')
|
| 127 |
assert_equal(peer_info[0][1]['connection_type'], 'manual')
|
|
|
|
| 131 |
|
| 132 |
# Check dynamically generated networks list in getpeerinfo help output.
|
| 133 |
assert "(ipv4, ipv6, onion, i2p, cjdns, not_publicly_routable)" in self.nodes[0].help("getpeerinfo")
|
| 134 |
+
assert "cpu_load" in self.nodes[0].help("getpeerinfo")
|
| 135 |
|
| 136 |
self.log.info("Check getpeerinfo output before a version message was sent")
|
| 137 |
no_version_peer_id = 2
|
|
|
|
| 148 |
# The next two fields will vary for v2 connections because we send a rng-based number of decoy messages
|
| 149 |
peer_info.pop("bytesrecv")
|
| 150 |
peer_info.pop("bytessent")
|
| 151 |
+
peer_info.pop("cpu_load", None)
|
| 152 |
assert_equal(
|
| 153 |
peer_info,
|
| 154 |
{
|
|
|
|
| 165 |
"inbound": True,
|
| 166 |
"inflight": [],
|
| 167 |
"last_block": 0,
|
| 168 |
+
"last_block_announcement": 0,
|
| 169 |
"last_transaction": 0,
|
| 170 |
"lastrecv": 0 if not self.options.v2transport else no_version_peer_conntime,
|
| 171 |
"lastsend": 0 if not self.options.v2transport else no_version_peer_conntime,
|
| 172 |
"minfeefilter": Decimal("0E-8"),
|
| 173 |
"network": "not_publicly_routable",
|
| 174 |
+
"permissions": ['bloomfilter'],
|
| 175 |
+
"forced_inbound": False,
|
| 176 |
"presynced_headers": -1,
|
| 177 |
"relaytxes": False,
|
| 178 |
"services": "0000000000000000",
|
|
|
|
| 185 |
"timeoffset": 0,
|
| 186 |
"transport_protocol_type": "v1" if not self.options.v2transport else "v2",
|
| 187 |
"version": 0,
|
| 188 |
+
"misbehavior_score": 0,
|
| 189 |
},
|
| 190 |
)
|
| 191 |
no_version_peer.peer_disconnect()
|