def METHOD_NAME(sender):
  receivers = list(filter((lambda p: (p != sender)), [jungle] + pandas))
  for bus in range(4):
    obd = False
    if bus == 3:
      obd = True
      bus = 1
    # Clear buses
    for receiver in receivers:
      receiver.set_obd(obd)
      receiver.can_clear(bus)     # TX
      receiver.can_clear(0xFFFF)  # RX
    # Send a random string
    addr = 0x18DB33F1 if FOR_RELEASE_BUILDS else random.randint(1, 2000)
    string = b"test"+os.urandom(4)
    sender.set_obd(obd)
    time.sleep(0.2)
    sender.can_send(addr, string, bus)
    time.sleep(0.2)
    # Check if all receivers have indeed received them in their receiving buffers
    for receiver in receivers:
      content = receiver.can_recv()
      # Check amount of messages
      if len(content) != 1:
        raise Exception("Amount of received CAN messages (" + str(len(content)) + ") does not equal 1. Bus: " + str(bus) +" OBD: " + str(obd))
      # Check content
      if content[0][0] != addr or content[0][2] != string:
        raise Exception("Received CAN message content or address does not match")
      # Check bus
      if content[0][3] != bus:
        raise Exception("Received CAN message bus does not match")