Merge bitcoin/bitcoin#30339: test: add coverage for node field of getaddednodeinfo RPC

e38eadb2c2 test: change comments to `self.log.info` for `test_addnode_getaddednodeinfo` (brunoerg)
c838e3b610 test: add coverage for `node` field of `getaddednodeinfo` RPC (brunoerg)

Pull request description:

  We currently do not test a successful call to `getaddednodeinfo` filtering by `node`, we only test it with an unknown address and checks whether it fails. This PR adds coverage to it.

ACKs for top commit:
  kevkevinpal:
    ACK [e38eadb](e38eadb2c2)
  achow101:
    ACK e38eadb2c2
  tdb3:
    re ACK e38eadb2c2
  BrandonOdiwuor:
    Code Review ACK e38eadb2c2
  rkrux:
    tACK [e38eadb](e38eadb2c2)

Tree-SHA512: e9f768b7aa86e58b0b0ced089ead57040ff9a5204493da1ab99c8bc897b6dcdce7c856855f74c52010fceef19af1e12a39eee9f8f2e7294b42476b6f980fe754
This commit is contained in:
Ava Chow 2024-07-02 16:28:44 -04:00
commit 6afc707c4f
No known key found for this signature in database
GPG key ID: 17565732E08E5E41

View file

@ -237,28 +237,35 @@ class NetTest(BitcoinTestFramework):
def test_addnode_getaddednodeinfo(self): def test_addnode_getaddednodeinfo(self):
self.log.info("Test addnode and getaddednodeinfo") self.log.info("Test addnode and getaddednodeinfo")
assert_equal(self.nodes[0].getaddednodeinfo(), []) assert_equal(self.nodes[0].getaddednodeinfo(), [])
# add a node (node2) to node0 self.log.info("Add a node (node2) to node0")
ip_port = "127.0.0.1:{}".format(p2p_port(2)) ip_port = "127.0.0.1:{}".format(p2p_port(2))
self.nodes[0].addnode(node=ip_port, command='add') self.nodes[0].addnode(node=ip_port, command='add')
# try to add an equivalent ip self.log.info("Try to add an equivalent ip and check it fails")
# (note that OpenBSD doesn't support the IPv4 shorthand notation with omitted zero-bytes) self.log.debug("(note that OpenBSD doesn't support the IPv4 shorthand notation with omitted zero-bytes)")
if platform.system() != "OpenBSD": if platform.system() != "OpenBSD":
ip_port2 = "127.1:{}".format(p2p_port(2)) ip_port2 = "127.1:{}".format(p2p_port(2))
assert_raises_rpc_error(-23, "Node already added", self.nodes[0].addnode, node=ip_port2, command='add') assert_raises_rpc_error(-23, "Node already added", self.nodes[0].addnode, node=ip_port2, command='add')
# check that the node has indeed been added self.log.info("Check that the node has indeed been added")
added_nodes = self.nodes[0].getaddednodeinfo() added_nodes = self.nodes[0].getaddednodeinfo()
assert_equal(len(added_nodes), 1) assert_equal(len(added_nodes), 1)
assert_equal(added_nodes[0]['addednode'], ip_port) assert_equal(added_nodes[0]['addednode'], ip_port)
# check that node cannot be added again self.log.info("Check that filtering by node works")
self.nodes[0].addnode(node="11.22.33.44", command='add')
first_added_node = self.nodes[0].getaddednodeinfo(node=ip_port)
assert_equal(added_nodes, first_added_node)
assert_equal(len(self.nodes[0].getaddednodeinfo()), 2)
self.log.info("Check that node cannot be added again")
assert_raises_rpc_error(-23, "Node already added", self.nodes[0].addnode, node=ip_port, command='add') assert_raises_rpc_error(-23, "Node already added", self.nodes[0].addnode, node=ip_port, command='add')
# check that node can be removed self.log.info("Check that node can be removed")
self.nodes[0].addnode(node=ip_port, command='remove') self.nodes[0].addnode(node=ip_port, command='remove')
assert_equal(self.nodes[0].getaddednodeinfo(), []) added_nodes = self.nodes[0].getaddednodeinfo()
# check that an invalid command returns an error assert_equal(len(added_nodes), 1)
assert_equal(added_nodes[0]['addednode'], "11.22.33.44")
self.log.info("Check that an invalid command returns an error")
assert_raises_rpc_error(-1, 'addnode "node" "command"', self.nodes[0].addnode, node=ip_port, command='abc') assert_raises_rpc_error(-1, 'addnode "node" "command"', self.nodes[0].addnode, node=ip_port, command='abc')
# check that trying to remove the node again returns an error self.log.info("Check that trying to remove the node again returns an error")
assert_raises_rpc_error(-24, "Node could not be removed", self.nodes[0].addnode, node=ip_port, command='remove') assert_raises_rpc_error(-24, "Node could not be removed", self.nodes[0].addnode, node=ip_port, command='remove')
# check that a non-existent node returns an error self.log.info("Check that a non-existent node returns an error")
assert_raises_rpc_error(-24, "Node has not been added", self.nodes[0].getaddednodeinfo, '1.1.1.1') assert_raises_rpc_error(-24, "Node has not been added", self.nodes[0].getaddednodeinfo, '1.1.1.1')
def test_service_flags(self): def test_service_flags(self):