diff --git a/proto/monitoring.proto b/proto/monitoring.proto index 64d7bdbfe3528e87151aefb0909c7f155699104a..156cb32babfdc890d0519bb5c58df597060ff8da 100644 --- a/proto/monitoring.proto +++ b/proto/monitoring.proto @@ -35,8 +35,8 @@ service MonitoringService { rpc CreateKpiAlarm (AlarmDescriptor ) returns (AlarmID ) {} rpc EditKpiAlarm (AlarmDescriptor ) returns (context.Empty ) {} rpc GetAlarms (context.Empty ) returns (AlarmIDList ) {} - rpc GetAlarmDescriptor (AlarmSubscription ) returns (AlarmDescriptor ) {} - rpc GetAlarmResponseStream(AlarmID ) returns (stream AlarmResponse) {} + rpc GetAlarmDescriptor (AlarmID ) returns (AlarmDescriptor ) {} + rpc GetAlarmResponseStream(AlarmSubscription ) returns (stream AlarmResponse) {} rpc GetStreamKpi (KpiId ) returns (stream Kpi ) {} rpc GetInstantKpi (KpiId ) returns (KpiList ) {} } diff --git a/src/monitoring/client/MonitoringClient.py b/src/monitoring/client/MonitoringClient.py index 50ef008b2f07a6df968a00dd6e3f2ab63d3fe056..637a88164afdde7254cc73413448dbdd0513c75d 100644 --- a/src/monitoring/client/MonitoringClient.py +++ b/src/monitoring/client/MonitoringClient.py @@ -22,7 +22,7 @@ from common.tools.grpc.Tools import grpc_message_to_json_string 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 + AlarmDescriptor, AlarmID, AlarmIDList, AlarmResponse, AlarmSubscription from common.proto.monitoring_pb2_grpc import MonitoringServiceStub LOGGER = logging.getLogger(__name__) @@ -168,7 +168,7 @@ class MonitoringClient: LOGGER.debug('GetAlarmDescriptor result: {:s}'.format(grpc_message_to_json_string(response))) return response - def GetAlarmResponseStream(self, request : AlarmID) -> AlarmResponse: + def GetAlarmResponseStream(self, request : AlarmSubscription) -> AlarmResponse: LOGGER.debug('GetAlarmResponseStream: {:s}'.format(grpc_message_to_json_string(request))) response = self.stub.GetAlarmResponseStream(request) LOGGER.debug('GetAlarmResponseStream result: {:s}'.format(grpc_message_to_json_string(response))) diff --git a/src/monitoring/service/MonitoringServiceServicerImpl.py b/src/monitoring/service/MonitoringServiceServicerImpl.py index e8db5943ebe01fbf95b9557fd8545a37d6ca246f..79a0519293307902fe1e6a405929ef7b9e2ada59 100644 --- a/src/monitoring/service/MonitoringServiceServicerImpl.py +++ b/src/monitoring/service/MonitoringServiceServicerImpl.py @@ -24,8 +24,9 @@ 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 + BundleKpiDescriptor, MonitorKpiRequest, Kpi, AlarmSubscription from common.rpc_method_wrapper.ServiceExceptions import ServiceException +from common.tools.timestamp.Converters import timestamp_float_to_string from monitoring.service import SqliteTools, InfluxTools from device.client.DeviceClient import DeviceClient @@ -184,7 +185,7 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer): deviceId = kpiDescriptor.device_id.device_uuid.uuid endpointId = kpiDescriptor.endpoint_id.endpoint_uuid.uuid serviceId = kpiDescriptor.service_id.service_uuid.uuid - time_stamp = request.timestamp + time_stamp = timestamp_float_to_string(request.timestamp.timestamp) kpi_value = getattr(request.kpi_value, request.kpi_value.WhichOneof('value')) # Build the structure to be included as point in the influxDB @@ -346,7 +347,7 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer): except Exception as e: # pragma: no cover LOGGER.exception('GetAlarmDescriptor exception') - def GetAlarmResponseStream(self, request : AlarmID, grpc_context : grpc.ServicerContext) -> Iterator[AlarmResponse]: + def GetAlarmResponseStream(self, request : AlarmSubscription, grpc_context : grpc.ServicerContext) -> Iterator[AlarmResponse]: LOGGER.info('GetAlarmResponseStream') try: diff --git a/src/monitoring/tests/Messages.py b/src/monitoring/tests/Messages.py index 95f2be65e776a2cad7e091fc82209b040ef3c480..7b7f4150e5c084bbf25c6a4d9c1c47b70e3f76a0 100644 --- a/src/monitoring/tests/Messages.py +++ b/src/monitoring/tests/Messages.py @@ -14,6 +14,8 @@ from common.proto import monitoring_pb2 from common.proto.kpi_sample_types_pb2 import KpiSampleType +from common.tools.timestamp.Converters import timestamp_string_to_float + def kpi(): _kpi = monitoring_pb2.Kpi() @@ -44,6 +46,6 @@ def monitor_kpi_request(kpi_uuid, monitoring_window_s, sampling_rate_s): 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.timestamp.timestamp = timestamp_string_to_float("2021-10-12T13:14:42Z") + _include_kpi_request.kpi_value.int32Val = 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 87a4b4d3e33d3ea6c69b569f4008d794574226f6..913c6003b56689cdf74cbc04142a8bd9858becfc 100644 --- a/src/monitoring/tests/test_unitary.py +++ b/src/monitoring/tests/test_unitary.py @@ -22,10 +22,11 @@ from common.orm.Database import Database from common.orm.Factory import get_database_backend, BackendEnum as DatabaseBackendEnum from common.message_broker.Factory import get_messagebroker_backend, BackendEnum as MessageBrokerBackendEnum from common.message_broker.MessageBroker import MessageBroker +from common.proto.monitoring_pb2 import KpiId, KpiDescriptor from context.client.ContextClient import ContextClient from context.service.grpc_server.ContextService import ContextService -from common.proto.context_pb2 import EventTypeEnum, DeviceEvent, Device +from common.proto.context_pb2 import EventTypeEnum, DeviceEvent, Device, Empty from device.client.DeviceClient import DeviceClient from device.service.DeviceService import DeviceService @@ -166,7 +167,7 @@ def test_create_kpi(monitoring_client): # pylint: disable=redefined-outer-name LOGGER.warning('test_create_kpi requesting') response = monitoring_client.CreateKpi(create_kpi_request()) LOGGER.debug(str(response)) - assert isinstance(response, monitoring_pb2.KpiId) + assert isinstance(response, KpiId) # Test case that makes use of client fixture to test server's MonitorKpi method def test_monitor_kpi( @@ -201,7 +202,7 @@ def test_monitor_kpi( _monitor_kpi_request = monitor_kpi_request(response.kpi_id.uuid, 120, 5) # pylint: disable=maybe-no-member response = monitoring_client.MonitorKpi(_monitor_kpi_request) LOGGER.debug(str(response)) - assert isinstance(response, context_pb2.Empty) + assert isinstance(response, Empty) # Test case that makes use of client fixture to test server's IncludeKpi method @@ -210,21 +211,21 @@ def test_include_kpi(monitoring_client): # pylint: disable=redefined-outer-name LOGGER.warning('test_include_kpi requesting') response = monitoring_client.IncludeKpi(include_kpi_request()) LOGGER.debug(str(response)) - assert isinstance(response, context_pb2.Empty) + assert isinstance(response, Empty) # Test case that makes use of client fixture to test server's GetStreamKpi method def test_get_stream_kpi(monitoring_client): # pylint: disable=redefined-outer-name LOGGER.warning('test_getstream_kpi begin') response = monitoring_client.GetStreamKpi(kpi()) LOGGER.debug(str(response)) - #assert isinstance(response, monitoring_pb2.Kpi) + #assert isinstance(response, 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) +# # assert isinstance(response, 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 @@ -232,7 +233,7 @@ def test_get_kpidescritor_kpi(monitoring_client): # pylint: disable=redefined-ou response = monitoring_client.CreateKpi(create_kpi_request()) response = monitoring_client.GetKpiDescriptor(response) LOGGER.debug(str(response)) - assert isinstance(response, monitoring_pb2.KpiDescriptor) + assert isinstance(response, KpiDescriptor) def test_sqlitedb_tools_insert_kpi(sql_db): # pylint: disable=redefined-outer-name LOGGER.warning('test_sqlitedb_tools_insert_kpi begin')