[test] Test that getnodeaddresses() can return all known addresses

This commit is contained in:
John Newbery 2020-07-23 16:21:14 +01:00
parent f26502e9fc
commit ae8051bbd8

View file

@ -168,16 +168,24 @@ class NetTest(BitcoinTestFramework):
msg.addrs.append(addr) msg.addrs.append(addr)
self.nodes[0].p2p.send_and_ping(msg) self.nodes[0].p2p.send_and_ping(msg)
# obtain addresses via rpc call and check they were ones sent in before # Obtain addresses via rpc call and check they were ones sent in before.
REQUEST_COUNT = 10 #
node_addresses = self.nodes[0].getnodeaddresses(REQUEST_COUNT) # All addresses added above are in the same netgroup and so are assigned
assert_equal(len(node_addresses), REQUEST_COUNT) # to the same bucket. Maximum possible addresses in addrman is therefore
# 64, although actual number will usually be slightly less due to
# BucketPosition collisions.
node_addresses = self.nodes[0].getnodeaddresses(0)
assert_greater_than(len(node_addresses), 50)
assert_greater_than(65, len(node_addresses))
for a in node_addresses: for a in node_addresses:
assert_greater_than(a["time"], 1527811200) # 1st June 2018 assert_greater_than(a["time"], 1527811200) # 1st June 2018
assert_equal(a["services"], NODE_NETWORK | NODE_WITNESS) assert_equal(a["services"], NODE_NETWORK | NODE_WITNESS)
assert a["address"] in imported_addrs assert a["address"] in imported_addrs
assert_equal(a["port"], 8333) assert_equal(a["port"], 8333)
node_addresses = self.nodes[0].getnodeaddresses(1)
assert_equal(len(node_addresses), 1)
assert_raises_rpc_error(-8, "Address count out of range", self.nodes[0].getnodeaddresses, -1) assert_raises_rpc_error(-8, "Address count out of range", self.nodes[0].getnodeaddresses, -1)
# addrman's size cannot be known reliably after insertion, as hash collisions may occur # addrman's size cannot be known reliably after insertion, as hash collisions may occur