message: [test] Update p2p_addr_relay test to prepare
  Use an init param to make clear whether a getaddr message should be sent when
  the P2PConnection receives a version message. These changes are in preparation
  for upcoming commits that modify the behavior of a bitcoind node and the test
  framework.
diff: @@ -11,7 +11,8 @@ from test_framework.messages import (
  NODE_NETWORK,
  NODE_WITNESS,
  msg_addr,
  - msg_getaddr
  + msg_getaddr,
  + msg_verack
  )
  from test_framework.p2p import (
  P2PInterface,
  @@ -27,10 +28,12 @@ class AddrReceiver(P2PInterface):
  num_ipv4_received = 0
  test_addr_contents = False
  _tokens = 1
  + send_getaddr = True
  - def __init__(self, test_addr_contents=False):
  + def __init__(self, test_addr_contents=False, send_getaddr=True):
  super().__init__()
  self.test_addr_contents = test_addr_contents
  + self.send_getaddr = send_getaddr
  def on_addr(self, message):
  for addr in message.addrs:
  @@ -60,6 +63,11 @@ class AddrReceiver(P2PInterface):
  def addr_received(self):
  return self.num_ipv4_received != 0
  + def on_version(self, message):
  + self.send_message(msg_verack())
  + if (self.send_getaddr):
  + self.send_message(msg_getaddr())
  +
  def getaddr_received(self):
  return self.message_count['getaddr'] > 0
  @@ -156,7 +164,7 @@ class AddrTest(BitcoinTestFramework):
  self.nodes[0].disconnect_p2ps()
  self.log.info('Check relay of addresses received from outbound peers')
  - inbound_peer = self.nodes[0].add_p2p_connection(AddrReceiver(test_addr_contents=True))
  + inbound_peer = self.nodes[0].add_p2p_connection(AddrReceiver(test_addr_contents=True, send_getaddr=False))
  full_outbound_peer = self.nodes[0].add_outbound_p2p_connection(AddrReceiver(), p2p_idx=0, connection_type="outbound-full-relay")
  msg = self.setup_addr_msg(2)
  self.send_addr_msg(full_outbound_peer, msg, [inbound_peer])
  @@ -185,6 +193,12 @@ class AddrTest(BitcoinTestFramework):
  self.nodes[0].disconnect_p2ps()
  def getaddr_tests(self):
  + # In the previous tests, the node answered GETADDR requests with an
  + # empty addrman. Due to GETADDR response caching (see
  + # CConnman::GetAddresses), the node would continue to provide 0 addrs
  + # in response until enough time has passed or the node is restarted.
  + self.restart_node(0)
  +
  self.log.info('Test getaddr behavior')
  self.log.info('Check that we send a getaddr message upon connecting to an outbound-full-relay peer')
  full_outbound_peer = self.nodes[0].add_outbound_p2p_connection(AddrReceiver(), p2p_idx=0, connection_type="outbound-full-relay")
  @@ -197,7 +211,7 @@ class AddrTest(BitcoinTestFramework):
  assert_equal(block_relay_peer.getaddr_received(), False)
  self.log.info('Check that we answer getaddr messages only from inbound peers')
  - inbound_peer = self.nodes[0].add_p2p_connection(AddrReceiver())
  + inbound_peer = self.nodes[0].add_p2p_connection(AddrReceiver(send_getaddr=False))
  inbound_peer.sync_with_ping()
  # Add some addresses to addrman
  