def call_server():
    channel = grpc.intercept_channel(grpc.insecure_channel("localhost:50051"),
                                     PromClientInterceptor())
    stub = hello_world_grpc.GreeterStub(channel)

    # Call the unary-unary.
    response = stub.SayHello(hello_world_pb2.HelloRequest(name="Unary"))
    _LOGGER.info("Unary response: %s", response.message)
    _LOGGER.info("")

    # Call the unary stream.
    _LOGGER.info("Running Unary Stream client")
    response_iter = stub.SayHelloUnaryStream(
        hello_world_pb2.HelloRequest(name="unary stream"))
    _LOGGER.info("Response for Unary Stream")
    for response in response_iter:
        _LOGGER.info("Unary Stream response item: %s", response.message)
    _LOGGER.info("")

    # Call the stream_unary.
    _LOGGER.info("Running Stream Unary client")
    response = stub.SayHelloStreamUnary(generate_requests("Stream Unary"))
    _LOGGER.info("Stream Unary response: %s", response.message)
    _LOGGER.info("")

    # Call stream & stream.
    _LOGGER.info("Running Bidi Stream client")
    response_iter = stub.SayHelloBidiStream(generate_requests("Bidi Stream"))
    for response in response_iter:
        _LOGGER.info("Bidi Stream response item: %s", response.message)
    _LOGGER.info("")
def test_grpc_server_handled_latency_seconds_with_normal(
    target_count, grpc_server, grpc_stub
):  # pylint: disable=unused-argument
  for i in range(target_count):
    grpc_stub.SayHello(hello_world_pb2.HelloRequest(name=str(i)))
  target_metric = get_server_metric("grpc_server_handled_latency_seconds")
  assert target_metric.samples == []
def test_grpc_server_msg_sent_with_normal(target_count, grpc_server,
                                          grpc_stub):  # pylint: disable=unused-argument
    for i in range(target_count):
        grpc_stub.SayHello(hello_world_pb2.HelloRequest(name=str(i)))
    target_metric = get_server_metric("grpc_server_msg_sent")
    # None streaming request has no this metrics
    assert target_metric.samples == []
Exemple #4
0
def test_grpc_server_handled_with_server_error(
    target_count, grpc_server, grpc_stub
):  # pylint: disable=unused-argument
  for _ in range(target_count):
    with pytest.raises(grpc.RpcError):
      grpc_stub.SayHello(hello_world_pb2.HelloRequest(name="unknownError"))

  target_metric = get_server_metric("grpc_server_handled")
  assert target_metric.samples == []
Exemple #5
0
def test_grpc_server_handled_before_request_error(
    target_count, grpc_server, grpc_stub
):  # pylint: disable=unused-argument
  for _ in range(target_count):
    with patch(
        'py_grpc_prometheus.grpc_utils.wrap_iterator_inc_counter',
        side_effect=Exception('mocked error')
    ):
      assert grpc_stub.SayHello(
          hello_world_pb2.HelloRequest(name="unary")
      ).message == "Hello, unary!"
Exemple #6
0
def test_grpc_server_handled_with_interceptor_error(
    target_count, grpc_server, grpc_stub
):  # pylint: disable=unused-argument
  for _ in range(target_count):
    with patch(
        'py_grpc_prometheus.prometheus_server_interceptor.'\
        'PromServerInterceptor._compute_status_code',
        side_effect=Exception('mocked error')
    ):
      with pytest.raises(grpc.RpcError):
        grpc_stub.SayHello(hello_world_pb2.HelloRequest(name="unary"))
Exemple #7
0
def test_grpc_server_handled_with_interceptor_error_and_skip_exceptions(
    target_count, grpc_server_with_exception_handling, grpc_stub
):  # pylint: disable=unused-argument
  for _ in range(target_count):
    with patch(
        'py_grpc_prometheus.prometheus_server_interceptor.'\
        'PromServerInterceptor._compute_status_code',
        side_effect=Exception('mocked error')
    ):
      assert grpc_stub.SayHello(
          hello_world_pb2.HelloRequest(name="unary")
      ).message == "Hello, unary!"

  target_metric = get_server_metric("grpc_server_handled")
  assert target_metric.samples == []
def test_legacy_grpc_server_handled_latency_seconds_with_normal(
    target_count, grpc_legacy_server, grpc_stub
):  # pylint: disable=unused-argument
  for i in range(target_count):
    grpc_stub.SayHello(hello_world_pb2.HelloRequest(name=str(i)))
  target_metric = get_server_metric("grpc_server_handled_latency_seconds")
  assert reduce(
      lambda acc, x: acc if acc > x.value else x.value,
      list(
          filter(
              lambda x: x.name == "grpc_server_handled_latency_seconds_bucket",
              target_metric.samples
          )
      ),
      0
  ) == target_count
  assert reduce(
      lambda acc, x: acc if acc > x.value else x.value,
      list(
          filter(
              lambda x: x.name == "grpc_server_handled_latency_seconds_count",
              target_metric.samples
          )
      ),
      0
  ) == target_count
  assert reduce(
      lambda acc, x: acc if acc > x.value else x.value,
      list(
          filter(
              lambda x: x.name == "grpc_server_handled_latency_seconds_sum",
              target_metric.samples
          )
      ),
      0
  ) > 0
def generate_requests(name):
    for i in range(10):
        yield hello_world_pb2.HelloRequest(name="%s %s" % (name, i))
def test_grpc_server_started_with_normal(target_count, grpc_server, grpc_stub):  # pylint: disable=unused-argument
    for i in range(target_count):
        grpc_stub.SayHello(hello_world_pb2.HelloRequest(name=str(i)))
    target_metric = get_server_metric("grpc_server_started")
    assert target_metric.samples[0].value == target_count
Exemple #11
0
 def _generate_requests(number_of_names):
   for i in range(number_of_names):
     yield hello_world_pb2.HelloRequest(name="{}".format(i))