code: def test_autorelay(use_auto_relay: bool, use_relay: bool):
      dht_first_peer = hivemind.DHT(
          start=True,
          use_auto_relay=use_auto_relay,
          use_relay=use_relay,
          force_reachability="public",
      )
      dht_first_peer_id = dht_first_peer.peer_id
      initial_peers = dht_first_peer.get_visible_maddrs()
      assert dht_first_peer_id is not None
  
      dht_third_peer = hivemind.DHT(
          initial_peers=initial_peers,
          host_maddrs=[],
          start=True,
          no_listen=True,
          use_relay=use_relay,
          client_mode=False,
          use_auto_relay=use_auto_relay,
      )
      time.sleep(5)
      dht_second_peer = hivemind.DHT(
          initial_peers=initial_peers,
          start=True,
          client_mode=False,
          no_listen=False,
          use_relay=use_relay,
          use_auto_relay=use_auto_relay,
      )
  
      assert (
          dht_first_peer.is_alive()
          and dht_second_peer.is_alive()
          and dht_third_peer.is_alive()
      )
  
      time_start = time.perf_counter()
      while time.perf_counter() - time_start < 30:
          reached_ip = dht_second_peer.run_coroutine(
              partial(ping_to_client, peer_id=dht_third_peer.peer_id)
          )
          if reached_ip:
              assert use_relay
              break
          time.sleep(2)
      else:
          assert not use_relay
  
      for peer in dht_first_peer, dht_second_peer, dht_third_peer:
          peer.shutdown()
  
imports: import time
  from functools import partial
  import pytest
  import hivemind
label_desc: Use image node_id 1 for calling a global function with example usage: test_autorelay(use_auto_relay, use_relay) without return types