v30.3-roots.1 · Commit 3: [PATCH 03/68] feat(policy): preserve Roots relay and network controls on Core 30.3
test/functional/p2p_disconnect_ban.py
Before: test/functional/p2p_disconnect_ban.py · After: test/functional/p2p_disconnect_ban.py
File metadata
index e7168b72546826eb76b05636cdb3754b135177ec..a81f31e5bd60274f31cac49d4c5d35c55af794f0 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. Before is on the left; after is on the right. Unified view fits narrow screens more easily.
test/functional/p2p_disconnect_ban.py
CHANGED
|
@@ -10,6 +10,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
|
| 10 |
from test_framework.util import (
|
| 11 |
assert_equal,
|
| 12 |
assert_raises_rpc_error,
|
|
|
|
| 13 |
)
|
| 14 |
|
| 15 |
class DisconnectBanTest(BitcoinTestFramework):
|
|
@@ -128,8 +129,12 @@ class DisconnectBanTest(BitcoinTestFramework):
|
|
| 128 |
self.log.info("disconnectnode: fail to disconnect when calling with junk address")
|
| 129 |
assert_raises_rpc_error(-29, "Node not found in connected nodes", self.nodes[0].disconnectnode, address="221B Baker Street")
|
| 130 |
|
| 131 |
-
self.log.info("disconnectnode: successfully disconnect node by address")
|
| 132 |
-
address1 = self.nodes[0].getpeerinfo()[0]['addr']
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
self.nodes[0].disconnectnode(address=address1)
|
| 134 |
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
| 135 |
assert not [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
|
@@ -139,11 +144,27 @@ class DisconnectBanTest(BitcoinTestFramework):
|
|
| 139 |
assert_equal(len(self.nodes[0].getpeerinfo()), 2)
|
| 140 |
assert [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
| 141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
self.log.info("disconnectnode: successfully disconnect node by node id")
|
| 143 |
-
id1 = self.nodes[0].getpeerinfo()[0]['id']
|
| 144 |
self.nodes[0].disconnectnode(nodeid=id1)
|
| 145 |
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
| 146 |
assert not [node for node in self.nodes[0].getpeerinfo() if node['id'] == id1]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 147 |
|
| 148 |
if __name__ == '__main__':
|
| 149 |
DisconnectBanTest(__file__).main()
|
|
|
|
| 10 |
from test_framework.util import (
|
| 11 |
assert_equal,
|
| 12 |
assert_raises_rpc_error,
|
| 13 |
+
p2p_port,
|
| 14 |
)
|
| 15 |
|
| 16 |
class DisconnectBanTest(BitcoinTestFramework):
|
|
|
|
| 129 |
self.log.info("disconnectnode: fail to disconnect when calling with junk address")
|
| 130 |
assert_raises_rpc_error(-29, "Node not found in connected nodes", self.nodes[0].disconnectnode, address="221B Baker Street")
|
| 131 |
|
| 132 |
+
self.log.info("disconnectnode: fail to disconnect when calling with invalid subnet")
|
| 133 |
+
assert_raises_rpc_error(-8, "Invalid subnet", self.nodes[0].disconnectnode, address="1.2.3.0/24\0")
|
| 134 |
+
|
| 135 |
+
self.log.info("disconnectnode: successfully disconnect node by address and port")
|
| 136 |
+
address1 = "127.0.0.1:" + str(p2p_port(1))
|
| 137 |
+
assert [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
| 138 |
self.nodes[0].disconnectnode(address=address1)
|
| 139 |
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
| 140 |
assert not [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
|
|
|
| 144 |
assert_equal(len(self.nodes[0].getpeerinfo()), 2)
|
| 145 |
assert [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1]
|
| 146 |
|
| 147 |
+
self.log.info("disconnectnode: successfully disconnect node by address (no port)")
|
| 148 |
+
nodes = self.nodes[0].getpeerinfo()
|
| 149 |
+
assert nodes and all(node['addr'].startswith('127.0.0.') for node in nodes)
|
| 150 |
+
self.nodes[0].disconnectnode(address='127.0.0.1')
|
| 151 |
+
self.wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0, timeout=10)
|
| 152 |
+
# reconnect the nodes
|
| 153 |
+
self.connect_nodes(0, 1)
|
| 154 |
+
self.connect_nodes(1, 0)
|
| 155 |
+
|
| 156 |
self.log.info("disconnectnode: successfully disconnect node by node id")
|
| 157 |
+
id1 = [node for node in self.nodes[0].getpeerinfo() if node['addr'] == address1][0]['id']
|
| 158 |
self.nodes[0].disconnectnode(nodeid=id1)
|
| 159 |
self.wait_until(lambda: len(self.nodes[1].getpeerinfo()) == 1, timeout=10)
|
| 160 |
assert not [node for node in self.nodes[0].getpeerinfo() if node['id'] == id1]
|
| 161 |
+
self.connect_nodes(0, 1) # reconnect the node
|
| 162 |
+
|
| 163 |
+
self.log.info("disconnectnode: successfully disconnect node by subnet")
|
| 164 |
+
nodes = self.nodes[0].getpeerinfo()
|
| 165 |
+
assert nodes and all(node['addr'].startswith('127.0.0.') for node in nodes)
|
| 166 |
+
self.nodes[0].disconnectnode(address='127.0.0.1/24')
|
| 167 |
+
self.wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0, timeout=10)
|
| 168 |
|
| 169 |
if __name__ == '__main__':
|
| 170 |
DisconnectBanTest(__file__).main()
|