code: def join(self, queue_name, *, interval=100, timeout=None):
          
          deadline = timeout and time.monotonic() + timeout / 1000
          while True:
              if deadline and time.monotonic() >= deadline:
                  raise QueueJoinTimeout(queue_name)
  
              size = 0
              for name in (queue_name, dq_name(queue_name)):
                  size += self.do_qsize(name)
  
              if size == 0:
                  return
  
              time.sleep(interval / 1000)
docs: Wait for all the messages on the given queue to be
          processed.  This method is only meant to be used in tests to
          wait for all the messages in a queue to be processed.
  
          Raises:
            QueueJoinTimeout: When the timeout elapses.
  
          Parameters:
            queue_name(str): The queue to wait on.
            interval(Optional[int]): The interval, in milliseconds, at
              which to check the queues.
            timeout(Optional[int]): The max amount of time, in
              milliseconds, to wait on this queue.