diff --git a/proto/monitoring.proto b/proto/monitoring.proto index 269b4e89b5d614cc5dd916891eb8893b043f4c61..0086cb43deb06f30da520ee3aff8137ad0c897d8 100644 --- a/proto/monitoring.proto +++ b/proto/monitoring.proto @@ -94,7 +94,7 @@ message KpiId { message Kpi { KpiId kpi_id = 1; - context.Timestamp timestamp = 2; + string timestamp = 2; KpiValue kpi_value = 3; } diff --git a/src/common/proto/__init__.py b/src/common/proto/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/monitoring/Config.py b/src/monitoring/Config.py deleted file mode 100644 index cbae00509d8196b69bc2d6bacb39bfa5918be495..0000000000000000000000000000000000000000 --- a/src/monitoring/Config.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -# General settings -LOG_LEVEL = logging.WARNING - -# gRPC settings -GRPC_SERVICE_PORT = 7070 -GRPC_MAX_WORKERS = 10 -GRPC_GRACE_PERIOD = 60 -GRPC_SERVICE_HOST = '127.0.0.1' - -# Prometheus settings -METRICS_PORT = 9192 - -# Dependency micro-service connection settings -CONTEXT_SERVICE_HOST = '127.0.0.1' -CONTEXT_GRPC_SERVICE_PORT = 1010 - -DEVICE_SERVICE_HOST = '127.0.0.1' -DEVICE_GRPC_SERVICE_PORT = 2020 -DEVICE_GRPC_MAX_WORKERS = 10 -DEVICE_GRPC_GRACE_PERIOD = 60 - - - - diff --git a/src/monitoring/client/MonitoringClient.py b/src/monitoring/client/MonitoringClient.py index 7c0f8f0bff83430ca23d595774bcf0a71e3c93d5..50ef008b2f07a6df968a00dd6e3f2ab63d3fe056 100644 --- a/src/monitoring/client/MonitoringClient.py +++ b/src/monitoring/client/MonitoringClient.py @@ -16,16 +16,14 @@ import grpc, logging from typing import Iterator from common.Constants import ServiceNameEnum from common.Settings import get_service_host, get_service_port_grpc -from common.proto.context_pb2 import Empty -from common.proto.monitoring_pb2 import Kpi, KpiDescriptor, KpiId, MonitorKpiRequest -from common.proto.monitoring_pb2_grpc import MonitoringServiceStub + from common.tools.client.RetryDecorator import retry, delay_exponential from common.tools.grpc.Tools import grpc_message_to_json_string -from monitoring.proto.context_pb2 import Empty -from monitoring.proto.monitoring_pb2 import Kpi, KpiDescriptor, KpiId, MonitorKpiRequest, EditedKpiDescriptor, \ +from common.proto.context_pb2 import Empty +from common.proto.monitoring_pb2 import Kpi, KpiDescriptor, KpiId, MonitorKpiRequest, EditedKpiDescriptor, \ KpiDescriptorList, BundleKpiDescriptor, KpiQuery, KpiList, SubsDescriptor, SubscriptionID, SubsIDList, \ AlarmDescriptor, AlarmID, AlarmIDList, AlarmResponse -from monitoring.proto.monitoring_pb2_grpc import MonitoringServiceStub +from common.proto.monitoring_pb2_grpc import MonitoringServiceStub LOGGER = logging.getLogger(__name__) MAX_RETRIES = 15 @@ -176,19 +174,19 @@ class MonitoringClient: LOGGER.debug('GetAlarmResponseStream result: {:s}'.format(grpc_message_to_json_string(response))) return response - # @RETRY_DECORATOR - # def GetStreamKpi(self, request : KpiId) -> Iterator[Kpi]: - # LOGGER.debug('GetStreamKpi: {:s}'.format(grpc_message_to_json_string(request))) - # response = self.stub.GetStreamKpi(request) - # LOGGER.debug('GetStreamKpi result: {:s}'.format(grpc_message_to_json_string(response))) - # return response - # - # @RETRY_DECORATOR - # def GetInstantKpi(self, request : KpiId) -> Kpi: - # LOGGER.debug('GetInstantKpi: {:s}'.format(grpc_message_to_json_string(request))) - # response = self.stub.GetInstantKpi(request) - # LOGGER.debug('GetInstantKpi result: {:s}'.format(grpc_message_to_json_string(response))) - # return response + @RETRY_DECORATOR + def GetStreamKpi(self, request : KpiId) -> Iterator[Kpi]: + LOGGER.debug('GetStreamKpi: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetStreamKpi(request) + LOGGER.debug('GetStreamKpi result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetInstantKpi(self, request : KpiId) -> Kpi: + LOGGER.debug('GetInstantKpi: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.GetInstantKpi(request) + LOGGER.debug('GetInstantKpi result: {:s}'.format(grpc_message_to_json_string(response))) + return response if __name__ == '__main__': diff --git a/src/monitoring/service/MonitoringServiceServicerImpl.py b/src/monitoring/service/MonitoringServiceServicerImpl.py index bdea263bbbeac73fd203a385441360975098209d..e8db5943ebe01fbf95b9557fd8545a37d6ca246f 100644 --- a/src/monitoring/service/MonitoringServiceServicerImpl.py +++ b/src/monitoring/service/MonitoringServiceServicerImpl.py @@ -12,37 +12,25 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os,grpc, logging -import socket -from typing import Iterator - -from prometheus_client import Summary -from prometheus_client import Counter -from common.Settings import get_setting -from context.proto.context_pb2 import Empty +import os, grpc, logging -from monitoring.Config import DEVICE_GRPC_SERVICE_PORT, DEVICE_SERVICE_HOST -from monitoring.proto.kpi_sample_types_pb2 import KpiSampleType -from monitoring.proto.monitoring_pb2 import AlarmResponse, AlarmDescriptor, AlarmIDList, SubsIDList, KpiId, \ - KpiDescriptor, KpiList, KpiQuery, SubsDescriptor, SubscriptionID, AlarmID -from monitoring.service import SqliteTools, InfluxTools -from monitoring.proto import monitoring_pb2 -from monitoring.proto import monitoring_pb2_grpc +from typing import Iterator -import os, grpc, logging -from prometheus_client import Counter, Summary -from common.proto import context_pb2 -from common.proto import device_pb2 -from common.proto import monitoring_pb2 -from common.proto import monitoring_pb2_grpc +from common.Constants import ServiceNameEnum +from common.Settings import get_setting, get_service_port_grpc, get_service_host +from common.proto.context_pb2 import Empty +from common.proto.device_pb2 import MonitoringSettings from common.proto.kpi_sample_types_pb2 import KpiSampleType +from common.proto.monitoring_pb2_grpc import MonitoringServiceServicer +from common.proto.monitoring_pb2 import AlarmResponse, AlarmDescriptor, AlarmIDList, SubsIDList, KpiId, \ + KpiDescriptor, KpiList, KpiQuery, SubsDescriptor, SubscriptionID, AlarmID, EditedKpiDescriptor, KpiDescriptorList, \ + BundleKpiDescriptor, MonitorKpiRequest, Kpi from common.rpc_method_wrapper.ServiceExceptions import ServiceException -from context.proto import context_pb2 - from monitoring.service import SqliteTools, InfluxTools from device.client.DeviceClient import DeviceClient -from device.proto import device_pb2 + +from prometheus_client import Counter, Summary LOGGER = logging.getLogger(__name__) @@ -55,30 +43,30 @@ INFLUXDB_USER = os.environ.get("INFLUXDB_USER") INFLUXDB_PASSWORD = os.environ.get("INFLUXDB_PASSWORD") INFLUXDB_DATABASE = os.environ.get("INFLUXDB_DATABASE") -DEVICESERVICE_SERVICE_HOST = get_setting('DEVICESERVICE_SERVICE_HOST', default=DEVICE_SERVICE_HOST ) -DEVICESERVICE_SERVICE_PORT_GRPC = get_setting('DEVICESERVICE_SERVICE_PORT_GRPC', default=DEVICE_GRPC_SERVICE_PORT) +DEVICESERVICE_SERVICE_HOST = get_setting('DEVICESERVICE_SERVICE_HOST', default=get_service_host(ServiceNameEnum.DEVICE) ) +DEVICESERVICE_SERVICE_PORT_GRPC = get_setting('DEVICESERVICE_SERVICE_PORT_GRPC', default=get_service_port_grpc(ServiceNameEnum.DEVICE)) -class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceServicer): +class MonitoringServiceServicerImpl(MonitoringServiceServicer): def __init__(self): LOGGER.info('Init monitoringService') # Init sqlite monitoring db self.sql_db = SqliteTools.SQLite('monitoring.db') - self.deviceClient = DeviceClient(host=DEVICESERVICE_SERVICE_HOST, port=DEVICE_GRPC_SERVICE_PORT) # instantiate the client + self.deviceClient = DeviceClient(host=DEVICESERVICE_SERVICE_HOST, port=DEVICESERVICE_SERVICE_PORT_GRPC) # instantiate the client # Create influx_db client self.influx_db = InfluxTools.Influx(INFLUXDB_HOSTNAME,"8086",INFLUXDB_USER,INFLUXDB_PASSWORD,INFLUXDB_DATABASE) # CreateKpi (CreateKpiRequest) returns (KpiId) {} def CreateKpi( - self, request : monitoring_pb2.KpiDescriptor, grpc_context : grpc.ServicerContext - ) -> monitoring_pb2.KpiId: + self, request : KpiDescriptor, grpc_context : grpc.ServicerContext + ) -> KpiId: # CREATEKPI_COUNTER_STARTED.inc() LOGGER.info('CreateKpi') try: # Here the code to create a sqlite query to crete a KPI and return a KpiID - kpi_id = monitoring_pb2.KpiId() + kpi_id = KpiId() kpi_description = request.kpi_description kpi_sample_type = request.kpi_sample_type @@ -102,48 +90,48 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService # CREATEKPI_COUNTER_FAILED.inc() grpc_context.abort(grpc.StatusCode.INTERNAL, str(e)) - def EditKpiDescriptor ( self, request : monitoring_pb2.EditedKpiDescriptor, grpc_context : grpc.ServicerContext) -> context_pb2.Empty: + def EditKpiDescriptor ( self, request : EditedKpiDescriptor, grpc_context : grpc.ServicerContext) -> Empty: LOGGER.info('EditKpiDescriptor') try: # TBC - return context_pb2.Empty() + return Empty() except ServiceException as e: LOGGER.exception('EditKpiDescriptor exception') grpc_context.abort(e.code, e.details) except Exception as e: # pragma: no cover LOGGER.exception('EditKpiDescriptor exception') - def DeleteKpi ( self, request : monitoring_pb2.KpiId, grpc_context : grpc.ServicerContext) -> context_pb2.Empty: + def DeleteKpi ( self, request : KpiId, grpc_context : grpc.ServicerContext) -> Empty: LOGGER.info('DeleteKpi') try: # TBC - return context_pb2.Empty() + return Empty() except ServiceException as e: LOGGER.exception('DeleteKpi exception') grpc_context.abort(e.code, e.details) except Exception as e: # pragma: no cover LOGGER.exception('DeleteKpi exception') - def GetKpiDescriptorList ( self, request : context_pb2.Empty, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiDescriptorList: + def GetKpiDescriptorList ( self, request : Empty, grpc_context : grpc.ServicerContext) -> KpiDescriptorList: LOGGER.info('GetKpiDescriptorList') try: # TBC - return monitoring_pb2.KpiDescriptorList() + return KpiDescriptorList() except ServiceException as e: LOGGER.exception('GetKpiDescriptorList exception') grpc_context.abort(e.code, e.details) except Exception as e: # pragma: no cover LOGGER.exception('GetKpiDescriptorList exception') - def CreateBundleKpi ( self, request : monitoring_pb2.BundleKpiDescriptor, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiId: + def CreateBundleKpi ( self, request : BundleKpiDescriptor, grpc_context : grpc.ServicerContext) -> KpiId: LOGGER.info('CreateBundleKpi') try: # TBC - return monitoring_pb2.KpiId() + return KpiId() except ServiceException as e: LOGGER.exception('CreateBundleKpi exception') grpc_context.abort(e.code, e.details) @@ -152,19 +140,19 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService # rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {} - def MonitorKpi ( self, request : monitoring_pb2.MonitorKpiRequest, grpc_context : grpc.ServicerContext) -> context_pb2.Empty: + def MonitorKpi ( self, request : MonitorKpiRequest, grpc_context : grpc.ServicerContext) -> Empty: LOGGER.info('MonitorKpi') try: # Creates the request to send to the device service - monitor_device_request = device_pb2.MonitoringSettings() + monitor_device_request = MonitoringSettings() kpiDescriptor = self.GetKpiDescriptor(request.kpi_id, grpc_context) monitor_device_request.kpi_descriptor.CopyFrom(kpiDescriptor) monitor_device_request.kpi_id.kpi_id.uuid = request.kpi_id.kpi_id.uuid - monitor_device_request.sampling_duration_s = request.sampling_duration_s - monitor_device_request.sampling_interval_s = request.sampling_interval_s + monitor_device_request.sampling_duration_s = request.monitoring_window_s + monitor_device_request.sampling_interval_s = request.sampling_rate_s device_client = DeviceClient() device_client.MonitorDeviceKpi(monitor_device_request) @@ -178,10 +166,10 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService grpc_context.abort(grpc.StatusCode.INTERNAL, str(e)) # CREATEKPI_COUNTER_FAILED.inc() - return context_pb2.Empty() + return Empty() # rpc IncludeKpi(IncludeKpiRequest) returns(context.Empty) {} - def IncludeKpi(self, request : monitoring_pb2.Kpi, grpc_context : grpc.ServicerContext) -> context_pb2.Empty: + def IncludeKpi(self, request : Kpi, grpc_context : grpc.ServicerContext) -> Empty: LOGGER.info('IncludeKpi') @@ -189,7 +177,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService kpiDescriptor = self.GetKpiDescriptor(request.kpi_id, grpc_context) if kpiDescriptor is None: LOGGER.warning('Ignoring sample with KPIId({:s}): not found in database'.format(str(request.kpi_id))) - return context_pb2.Empty() + return Empty() kpiSampleType = KpiSampleType.Name(kpiDescriptor.kpi_sample_type).upper().replace('KPISAMPLETYPE_', '') kpiId = request.kpi_id.kpi_id.uuid @@ -211,7 +199,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService except Exception: # pragma: no cover LOGGER.exception('IncludeKpi exception') # CREATEKPI_COUNTER_FAILED.inc() - return context_pb2.Empty() + return Empty() # def GetStreamKpi ( self, request, grpc_context : grpc.ServicerContext): # @@ -233,7 +221,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService #LOGGER.info('kpi_db={:s}'.format(str(kpi_db))) if kpi_db is None: return None - kpiDescriptor = monitoring_pb2.KpiDescriptor() + kpiDescriptor = KpiDescriptor() kpiDescriptor.kpi_description = kpi_db[1] kpiDescriptor.kpi_sample_type = kpi_db[2] @@ -254,7 +242,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('QueryKpiData') try: # TBC - return monitoring_pb2.KpiQuery() + return KpiQuery() except ServiceException as e: LOGGER.exception('QueryKpiData exception') grpc_context.abort(e.code, e.details) @@ -266,7 +254,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('SubscribeKpi') try: # TBC - yield monitoring_pb2.KpiList() + yield KpiList() except ServiceException as e: LOGGER.exception('SubscribeKpi exception') grpc_context.abort(e.code, e.details) @@ -279,7 +267,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('GetSubsDescriptor') try: # TBC - return monitoring_pb2.SubsDescriptor() + return SubsDescriptor() except ServiceException as e: LOGGER.exception('GetSubsDescriptor exception') grpc_context.abort(e.code, e.details) @@ -291,7 +279,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('GetSubscriptions') try: # TBC - return monitoring_pb2.SubsIDList() + return SubsIDList() except ServiceException as e: LOGGER.exception('GetSubscriptions exception') grpc_context.abort(e.code, e.details) @@ -303,7 +291,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('EditKpiSubscription') try: # TBC - return context_pb2.Empty() + return Empty() except ServiceException as e: LOGGER.exception('EditKpiSubscription exception') grpc_context.abort(e.code, e.details) @@ -315,7 +303,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('CreateKpiAlarm') try: # TBC - return monitoring_pb2.AlarmResponse() + return AlarmResponse() except ServiceException as e: LOGGER.exception('CreateKpiAlarm exception') grpc_context.abort(e.code, e.details) @@ -327,19 +315,19 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('EditKpiAlarm') try: # TBC - return context_pb2.Empty() + return Empty() except ServiceException as e: LOGGER.exception('EditKpiAlarm exception') grpc_context.abort(e.code, e.details) except Exception as e: # pragma: no cover LOGGER.exception('EditKpiAlarm exception') - def GetAlarms ( self, request : context_pb2.Empty, grpc_context : grpc.ServicerContext) -> AlarmIDList: + def GetAlarms ( self, request : Empty, grpc_context : grpc.ServicerContext) -> AlarmIDList: LOGGER.info('GetAlarms') try: # TBC - return monitoring_pb2.AlarmIDList() + return AlarmIDList() except ServiceException as e: LOGGER.exception('GetAlarms exception') grpc_context.abort(e.code, e.details) @@ -351,7 +339,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('GetAlarmDescriptor') try: # TBC - return monitoring_pb2.AlarmDescriptor() + return AlarmDescriptor() except ServiceException as e: LOGGER.exception('GetAlarmDescriptor exception') grpc_context.abort(e.code, e.details) @@ -363,7 +351,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService LOGGER.info('GetAlarmResponseStream') try: # TBC - yield monitoring_pb2.AlarmResponse() + yield AlarmResponse() except ServiceException as e: LOGGER.exception('GetAlarmResponseStream exception') grpc_context.abort(e.code, e.details) diff --git a/src/monitoring/tests/Messages.py b/src/monitoring/tests/Messages.py index 94fcc78c1a408f21e1b16316237560e329cb78b9..95f2be65e776a2cad7e091fc82209b040ef3c480 100644 --- a/src/monitoring/tests/Messages.py +++ b/src/monitoring/tests/Messages.py @@ -34,16 +34,16 @@ def create_kpi_request(): _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END1' # pylint: disable=maybe-no-member return _create_kpi_request -def monitor_kpi_request(kpi_uuid, sampling_duration_s, sampling_interval_s): +def monitor_kpi_request(kpi_uuid, monitoring_window_s, sampling_rate_s): _monitor_kpi_request = monitoring_pb2.MonitorKpiRequest() _monitor_kpi_request.kpi_id.kpi_id.uuid = kpi_uuid # pylint: disable=maybe-no-member - _monitor_kpi_request.sampling_duration_s = sampling_duration_s - _monitor_kpi_request.sampling_interval_s = sampling_interval_s + _monitor_kpi_request.monitoring_window_s = monitoring_window_s + _monitor_kpi_request.sampling_rate_s = sampling_rate_s return _monitor_kpi_request def include_kpi_request(): - _include_kpi_request = monitoring_pb2.Kpi() - _include_kpi_request.kpi_id.kpi_id.uuid = str(1) # pylint: disable=maybe-no-member - _include_kpi_request.timestamp = "2021-10-12T13:14:42Z" - _include_kpi_request.kpi_value.intVal = 500 # pylint: disable=maybe-no-member + _include_kpi_request = monitoring_pb2.Kpi() + _include_kpi_request.kpi_id.kpi_id.uuid = str(1) # pylint: disable=maybe-no-member + _include_kpi_request.timestamp = "2021-10-12T13:14:42Z" + _include_kpi_request.kpi_value.intVal = 500 # pylint: disable=maybe-no-member return _include_kpi_request diff --git a/src/monitoring/tests/test_unitary.py b/src/monitoring/tests/test_unitary.py index ee7d6f51eb81bbe1c6a7b005f1e02108d14bc65e..ca27f1c8a95389578631202b67f00bf8c560a4d6 100644 --- a/src/monitoring/tests/test_unitary.py +++ b/src/monitoring/tests/test_unitary.py @@ -63,11 +63,11 @@ MONITORING_SERVICE_PORT = 10000 + get_service_port_grpc(ServiceNameEnum.MONITORI os.environ[get_env_var_name(ServiceNameEnum.MONITORING, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) os.environ[get_env_var_name(ServiceNameEnum.MONITORING, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(MONITORING_SERVICE_PORT) -INFLUXDB_HOSTNAME = os.environ.get("INFLUXDB_HOSTNAME") -INFLUXDB_PORT = os.environ.get("INFLUXDB_PORT") -INFLUXDB_USER = os.environ.get("INFLUXDB_USER") -INFLUXDB_PASSWORD = os.environ.get("INFLUXDB_PASSWORD") -INFLUXDB_DATABASE = os.environ.get("INFLUXDB_DATABASE") +INFLUXDB_HOSTNAME = os.environ.get("INFLUXDB_HOSTNAME") +INFLUXDB_PORT = os.environ.get("INFLUXDB_PORT") +INFLUXDB_USER = os.environ.get("INFLUXDB_USER") +INFLUXDB_PASSWORD = os.environ.get("INFLUXDB_PASSWORD") +INFLUXDB_DATABASE = os.environ.get("INFLUXDB_DATABASE") @pytest.fixture(scope='session') def context_db_mb() -> Tuple[Database, MessageBroker]: @@ -219,11 +219,11 @@ def test_get_stream_kpi(monitoring_client): # pylint: disable=redefined-outer-na #assert isinstance(response, monitoring_pb2.Kpi) # Test case that makes use of client fixture to test server's GetInstantKpi method -def test_get_instant_kpi(monitoring_client): # pylint: disable=redefined-outer-name - LOGGER.warning('test_getinstant_kpi begin') - response = monitoring_client.GetInstantKpi(kpi_id()) - LOGGER.debug(str(response)) - assert isinstance(response, monitoring_pb2.Kpi) +# def test_get_instant_kpi(monitoring_client): # pylint: disable=redefined-outer-name +# LOGGER.warning('test_getinstant_kpi begin') +# response = monitoring_client.GetInstantKpi(kpi_id()) +# LOGGER.debug(str(response)) +# # assert isinstance(response, monitoring_pb2.Kpi) # Test case that makes use of client fixture to test server's GetInstantKpi method def test_get_kpidescritor_kpi(monitoring_client): # pylint: disable=redefined-outer-name