message: Add test for rpc addpeeraddress with "tried" argument
diff: @@ -239,7 +239,16 @@ class NetTest(BitcoinTestFramework):
  assert_raises_rpc_error(-8, "Network not recognized: Foo", self.nodes[0].getnodeaddresses, 1, "Foo")
  def test_addpeeraddress(self):
  + """RPC addpeeraddress sets the source address equal to the destination address.
  + If an address with the same /16 as an existing new entry is passed, it will be
  + placed in the same new bucket and have a 1/64 chance of the bucket positions
  + colliding (depending on the value of nKey in the addrman), in which case the
  + new address won't be added. The probability of collision can be reduced to
  + 1/2^16 = 1/65536 by using an address from a different /16. We avoid this here
  + by first testing adding a tried table entry before testing adding a new table one.
  + """
  self.log.info("Test addpeeraddress")
  + self.restart_node(1, ["-checkaddrman=1"])
  node = self.nodes[1]
  self.log.debug("Test that addpeerinfo is a hidden RPC")
  @@ -251,17 +260,25 @@ class NetTest(BitcoinTestFramework):
  assert_equal(node.addpeeraddress(address="", port=8333), {"success": False})
  assert_equal(node.getnodeaddresses(count=0), [])
  - self.log.debug("Test that adding a valid address succeeds")
  - assert_equal(node.addpeeraddress(address="1.2.3.4", port=8333), {"success": True})
  - addrs = node.getnodeaddresses(count=0)
  + self.log.debug("Test that adding a valid address to the tried table succeeds")
  + assert_equal(node.addpeeraddress(address="1.2.3.4", tried=True, port=8333), {"success": True})
  + with node.assert_debug_log(expected_msgs=["Addrman checks started: new 0, tried 1, total 1"]):
  + addrs = node.getnodeaddresses(count=0) # getnodeaddresses re-runs the addrman checks
  assert_equal(len(addrs), 1)
  assert_equal(addrs[0]["address"], "1.2.3.4")
  assert_equal(addrs[0]["port"], 8333)
  - self.log.debug("Test that adding the same address again when already present fails")
  - assert_equal(node.addpeeraddress(address="1.2.3.4", port=8333), {"success": False})
  + self.log.debug("Test that adding an already-present tried address to the new and tried tables fails")
  + for value in [True, False]:
  + assert_equal(node.addpeeraddress(address="1.2.3.4", tried=value, port=8333), {"success": False})
  assert_equal(len(node.getnodeaddresses(count=0)), 1)
  + self.log.debug("Test that adding a second address, this time to the new table, succeeds")
  + assert_equal(node.addpeeraddress(address="2.0.0.0", port=8333), {"success": True})
  + with node.assert_debug_log(expected_msgs=["Addrman checks started: new 1, tried 1, total 2"]):
  + addrs = node.getnodeaddresses(count=0) # getnodeaddresses re-runs the addrman checks
  + assert_equal(len(addrs), 2)
  +
  if __name__ == '__main__':
  NetTest().main()
  