Пример #1
0
    def setUp(self):
        self.host = 'localhost'

        self.server_completion_queue = _low.CompletionQueue()
        self.server = _low.Server(self.server_completion_queue)
        port = self.server.add_http2_addr('[::]:0')
        self.server.start()

        self.client_completion_queue = _low.CompletionQueue()
        self.channel = _low.Channel('%s:%d' % (self.host, port), None)
  def testLonelyClient(self):
    host = 'nosuchhostexists'
    port = 54321
    method = 'test method'
    deadline = time.time() + _TIMEOUT
    after_deadline = deadline + _AFTER_DELAY
    metadata_tag = object()
    finish_tag = object()

    completion_queue = _low.CompletionQueue()
    channel = _low.Channel('%s:%d' % (host, port), None)
    client_call = _low.Call(channel, completion_queue, method, host, deadline)

    client_call.invoke(completion_queue, metadata_tag, finish_tag)
    first_event = completion_queue.get(after_deadline)
    self.assertIsNotNone(first_event)
    second_event = completion_queue.get(after_deadline)
    self.assertIsNotNone(second_event)
    kinds = [event.kind for event in (first_event, second_event)]
    six.assertCountEqual(self,
        (_low.Event.Kind.METADATA_ACCEPTED, _low.Event.Kind.FINISH),
        kinds)

    self.assertIsNone(completion_queue.get(after_deadline))

    completion_queue.stop()
    stop_event = completion_queue.get(_FUTURE)
    self.assertEqual(_low.Event.Kind.STOP, stop_event.kind)

    del client_call
    del channel
    del completion_queue
Пример #3
0
  def _start(self):
    """Starts this ForeLink.

    This method must be called before attempting to exchange tickets with this
    object.
    """
    with self._condition:
      address = '[::]:%d' % (
          0 if self._requested_port is None else self._requested_port)
      self._completion_queue = _low.CompletionQueue()
      if self._root_certificates is None and not self._key_chain_pairs:
        self._server = _low.Server(self._completion_queue)
        self._port = self._server.add_http2_addr(address)
      else:
        server_credentials = _low.ServerCredentials(
          self._root_certificates, self._key_chain_pairs, False)
        self._server = _low.Server(self._completion_queue)
        self._port = self._server.add_secure_http2_addr(
            address, server_credentials)
      self._server.start()

      self._server.service(None)

      self._pool.submit(self._spin, self._completion_queue, self._server)
      self._spinning = True

      return self
Пример #4
0
 def start(self):
     with self._lock:
         if self._server is None:
             self._completion_queue = _intermediary_low.CompletionQueue()
             self._server = _intermediary_low.Server(self._completion_queue)
         self._pool = logging_pool.pool(1)
         self._pool.submit(self._spin, self._completion_queue, self._server)
         self._server.start()
         self._server.service(None)
Пример #5
0
 def add_port(self, address, server_credentials):
   with self._lock:
     if self._server is None:
       self._completion_queue = _intermediary_low.CompletionQueue()
       self._server = _intermediary_low.Server(self._completion_queue)
     if server_credentials is None:
       return self._server.add_http2_addr(address)
     else:
       return self._server.add_secure_http2_addr(address, server_credentials)
Пример #6
0
    def start(self):
        """Starts this object.

    This method must be called before attempting to exchange tickets with this
    object.
    """
        with self._lock:
            self._completion_queue = _intermediary_low.CompletionQueue()
            self._pool = logging_pool.pool(1)
            self._pool.submit(self._spin, self._completion_queue)
  def setUp(self):
    self.host = 'localhost'

    self.server_completion_queue = _low.CompletionQueue()
    self.server = _low.Server(self.server_completion_queue)
    port = self.server.add_http2_addr('[::]:0')
    self.server.start()
    self.server_events = queue.Queue()
    self.server_completion_queue_thread = threading.Thread(
        target=_drive_completion_queue,
        args=(self.server_completion_queue, self.server_events))
    self.server_completion_queue_thread.start()

    self.client_completion_queue = _low.CompletionQueue()
    self.channel = _low.Channel('%s:%d' % (self.host, port), None)
    self.client_events = queue.Queue()
    self.client_completion_queue_thread = threading.Thread(
        target=_drive_completion_queue,
        args=(self.client_completion_queue, self.client_events))
    self.client_completion_queue_thread.start()
Пример #8
0
    def _start(self):
        """Starts this RearLink.

    This method must be called before attempting to exchange tickets with this
    object.
    """
        with self._condition:
            self._completion_queue = _low.CompletionQueue()
            self._channel = _low.Channel(
                '%s:%d' % (self._host, self._port),
                self._client_credentials,
                server_host_override=self._server_host_override)
        return self