v29.4-roots.2 · Commit 3: [PATCH 03/21] policy: restore conservative relay and network controls
test/functional/p2p_disconnect_ban.py
Before: test/functional/p2p_disconnect_ban.py · After: test/functional/p2p_disconnect_ban.py
File metadata
index 94be86475ead80a52b97eb3aab31168262266fce..b61b3ad9175eab1af20b202956151966a541c3ad 100755
Download original patch · Release notes
Diff rows 1–49 of 49. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.
test/functional/p2p_disconnect_ban.py
CHANGED
|
@@ -10,6 +10,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
|
|
10
10
|
from test_framework.util import (
|
|
11
11
|
assert_equal,
|
|
12
12
|
assert_raises_rpc_error,
|
|
13
|
+
p2p_port,
|
|
13
14
|
)
|
|
14
15
|
|
|
15
16
|
class DisconnectBanTest(BitcoinTestFramework):
|
|
@@ -129,8 +130,12 @@ class DisconnectBanTest(BitcoinTestFramework):
|
|
|
129
130
|
self.log.info("disconnectnode: fail to disconnect when calling with junk address")
|
|
130
131
|
assert_raises_rpc_error(-29, "Node not found in connected nodes", self.nodes[0].disconnectnode, address="221B Baker Street")
|
|
131
132
|
|
|
132
|
-
self.log.info("disconnectnode: successfully disconnect node by address")
|
|
133
|
-
address1 = self.nodes[0].getpeerinfo()[0]['addr']
|
|
133
|
+
self.log.info("disconnectnode: fail to disconnect when calling with invalid subnet")
|
|
134
|
+
assert_raises_rpc_error(-8, "Invalid subnet", self.nodes[0].disconnectnode, address="1.2.3.0/24\0")
|
|
135
|
+
|
|
136
|
+
self.log.info("disconnectnode: successfully disconnect node by address and port")
|
|
137
|
+
address1 = "127.0.0.1:" + str(p2p_port(1))
|
|
138
|
+
assert [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
|
134
139
|
self.nodes[0].disconnectnode(address=address1)
|
|
135
140
|
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
|
136
141
|
assert not [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
|
@@ -140,11 +145,27 @@ class DisconnectBanTest(BitcoinTestFramework):
|
|
|
140
145
|
assert_equal(len(self.nodes[0].getpeerinfo()), 2)
|
|
141
146
|
assert [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
|
142
147
|
|
|
148
|
+
self.log.info("disconnectnode: successfully disconnect node by address (no port)")
|
|
149
|
+
nodes = self.nodes[0].getpeerinfo()
|
|
150
|
+
assert nodes and all(node['addr'].startswith('127.0.0.') for node in nodes)
|
|
151
|
+
self.nodes[0].disconnectnode(address='127.0.0.1')
|
|
152
|
+
self.wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0, timeout=10)
|
|
153
|
+
# reconnect the nodes
|
|
154
|
+
self.connect_nodes(0, 1)
|
|
155
|
+
self.connect_nodes(1, 0)
|
|
156
|
+
|
|
143
157
|
self.log.info("disconnectnode: successfully disconnect node by node id")
|
|
144
|
-
id1 = self.nodes[0].getpeerinfo()[0]['id']
|
|
158
|
+
id1 = [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1][0]['id']
|
|
145
159
|
self.nodes[0].disconnectnode(nodeid=id1)
|
|
146
160
|
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
|
147
161
|
assert not [node for node in self.nodes[0].getpeerinfo() if node['id'] == id1]
|
|
162
|
+
self.connect_nodes(0, 1) # reconnect the node
|
|
163
|
+
|
|
164
|
+
self.log.info("disconnectnode: successfully disconnect node by subnet")
|
|
165
|
+
nodes = self.nodes[0].getpeerinfo()
|
|
166
|
+
assert nodes and all(node['addr'].startswith('127.0.0.') for node in nodes)
|
|
167
|
+
self.nodes[0].disconnectnode(address='127.0.0.1/24')
|
|
168
|
+
self.wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0, timeout=10)
|
|
148
169
|
|
|
149
170
|
if __name__ == '__main__':
|
|
150
171
|
DisconnectBanTest(__file__).main()
|