Changeset View
Changeset View
Standalone View
Standalone View
test/functional/rpc_net.py
Show First 20 Lines • Show All 220 Lines • ▼ Show 20 Lines | def test_getnodeaddresses(self): | ||||
addr = CAddress() | addr = CAddress() | ||||
addr.time = 100000000 | addr.time = 100000000 | ||||
addr.nServices = NODE_NETWORK | addr.nServices = NODE_NETWORK | ||||
addr.ip = a | addr.ip = a | ||||
addr.port = 8333 | addr.port = 8333 | ||||
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) | assert_equal(a["services"], NODE_NETWORK) | ||||
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", | assert_raises_rpc_error(-8, "Address count out of range", | ||||
self.nodes[0].getnodeaddresses, -1) | 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 | ||||
# so only test that requesting a large number of addresses returns less | # so only test that requesting a large number of addresses returns less | ||||
# than that | # than that | ||||
LARGE_REQUEST_COUNT = 10000 | LARGE_REQUEST_COUNT = 10000 | ||||
node_addresses = self.nodes[0].getnodeaddresses(LARGE_REQUEST_COUNT) | node_addresses = self.nodes[0].getnodeaddresses(LARGE_REQUEST_COUNT) | ||||
assert_greater_than(LARGE_REQUEST_COUNT, len(node_addresses)) | assert_greater_than(LARGE_REQUEST_COUNT, len(node_addresses)) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
NetTest().main() | NetTest().main() |