aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJohn Newbery <john@johnnewbery.com>2020-07-23 18:10:35 +0100
committerJohn Newbery <john@johnnewbery.com>2020-08-12 09:22:10 +0100
commit37a480e0cd94895b6051abef12d984ff74bdc4a3 (patch)
tree2885b0f7c992305d28df604b3913bc3d6ac87b8d /test
parentae8051bbd8377f2458ff1f167dc30c2d5f83e317 (diff)
downloadbitcoin-37a480e0cd94895b6051abef12d984ff74bdc4a3.tar.xz
[net] Add addpeeraddress RPC method
Allows addresses to be added to Address Manager for testing.
Diffstat (limited to 'test')
-rwxr-xr-xtest/functional/rpc_net.py32
1 files changed, 13 insertions, 19 deletions
diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py
index 6173e658b0..ef5ccf7c6d 100755
--- a/test/functional/rpc_net.py
+++ b/test/functional/rpc_net.py
@@ -22,8 +22,6 @@ from test_framework.util import (
from test_framework.mininode import P2PInterface
import test_framework.messages
from test_framework.messages import (
- CAddress,
- msg_addr,
NODE_NETWORK,
NODE_WITNESS,
)
@@ -154,29 +152,25 @@ class NetTest(BitcoinTestFramework):
def _test_getnodeaddresses(self):
self.nodes[0].add_p2p_connection(P2PInterface())
- # send some addresses to the node via the p2p message addr
- msg = msg_addr()
+ # Add some addresses to the Address Manager over RPC. Due to the way
+ # bucket and bucket position are calculated, some of these addresses
+ # will collide.
imported_addrs = []
- for i in range(256):
- a = "123.123.123.{}".format(i)
+ for i in range(10000):
+ first_octet = i >> 8
+ second_octet = i % 256
+ a = "{}.{}.1.1".format(first_octet, second_octet)
imported_addrs.append(a)
- addr = CAddress()
- addr.time = 100000000
- addr.nServices = NODE_NETWORK | NODE_WITNESS
- addr.ip = a
- addr.port = 8333
- msg.addrs.append(addr)
- self.nodes[0].p2p.send_and_ping(msg)
+ self.nodes[0].addpeeraddress(a, 8333)
# Obtain addresses via rpc call and check they were ones sent in before.
#
- # All addresses added above are in the same netgroup and so are assigned
- # to the same bucket. Maximum possible addresses in addrman is therefore
- # 64, although actual number will usually be slightly less due to
- # BucketPosition collisions.
+ # Maximum possible addresses in addrman is 10000, although actual
+ # number will usually be less due to bucket and bucket position
+ # collisions.
node_addresses = self.nodes[0].getnodeaddresses(0)
- assert_greater_than(len(node_addresses), 50)
- assert_greater_than(65, len(node_addresses))
+ assert_greater_than(len(node_addresses), 5000)
+ assert_greater_than(10000, len(node_addresses))
for a in node_addresses:
assert_greater_than(a["time"], 1527811200) # 1st June 2018
assert_equal(a["services"], NODE_NETWORK | NODE_WITNESS)