metrics_server.py
Go to the documentation of this file.
1 # Copyright 2016 gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """MetricsService for publishing stress test qps data."""
15 
16 import time
17 
18 from src.proto.grpc.testing import metrics_pb2
19 from src.proto.grpc.testing import metrics_pb2_grpc
20 
21 GAUGE_NAME = 'python_overall_qps'
22 
23 
24 class MetricsServer(metrics_pb2_grpc.MetricsServiceServicer):
25 
26  def __init__(self, histogram):
27  self._start_time = time.time()
28  self._histogram = histogram
29 
30  def _get_qps(self):
31  count = self._histogram.get_data().count
32  delta = time.time() - self._start_time
33  self._histogram.reset()
34  self._start_time = time.time()
35  return int(count / delta)
36 
37  def GetAllGauges(self, request, context):
38  qps = self._get_qps()
39  return [metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)]
40 
41  def GetGauge(self, request, context):
42  if request.name != GAUGE_NAME:
43  raise Exception('Gauge {} does not exist'.format(request.name))
44  qps = self._get_qps()
45  return metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)
http2_test_server.format
format
Definition: http2_test_server.py:118
tests.stress.metrics_server.MetricsServer._histogram
_histogram
Definition: metrics_server.py:28
tests.stress.metrics_server.MetricsServer._get_qps
def _get_qps(self)
Definition: metrics_server.py:30
tests.stress.metrics_server.MetricsServer._start_time
_start_time
Definition: metrics_server.py:27
xds_interop_client.int
int
Definition: xds_interop_client.py:113
tests.stress.metrics_server.MetricsServer.GetGauge
def GetGauge(self, request, context)
Definition: metrics_server.py:41
tests.stress.metrics_server.MetricsServer
Definition: metrics_server.py:24
tests.stress.metrics_server.MetricsServer.GetAllGauges
def GetAllGauges(self, request, context)
Definition: metrics_server.py:37
tests.stress.metrics_server.MetricsServer.__init__
def __init__(self, histogram)
Definition: metrics_server.py:26


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:40