Skip to content
Snippets Groups Projects
Commit 983a7c84 authored by Javi Moreno's avatar Javi Moreno
Browse files

Added GetKpiDescriptor Unit Test
parent fc11eda5
No related branches found
No related tags found
1 merge request!54Release 2.0.0
......@@ -47,6 +47,11 @@ class MonitoringClient:
LOGGER.info('GetInstantKpi result: {}'.format(response))
return monitoring_pb2.Kpi()
def GetKpiDescriptor(self, request):
LOGGER.info('GetKpiDescriptor: {}'.format(request))
response = self.server.GetKpiDescriptor(request)
LOGGER.info('GetKpiDescriptor result: {}'.format(response))
return monitoring_pb2.KpiDescriptor()
if __name__ == '__main__':
# get port
......
......@@ -2,7 +2,6 @@ from concurrent import futures
import grpc
from monitoring.proto import monitoring_pb2_grpc
from monitoring.service.MonitoringServiceServicerImpl import MonitoringServiceServicerImpl
from monitoring.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD
......
import os
import grpc
import os,grpc,threading
from common.rpc_method_wrapper.ServiceExceptions import ServiceException
from common.logger import getJSONLogger
from context.client.ContextClient import ContextClient
from monitoring.proto.context_pb2 import Empty
from device.Config import GRPC_SERVICE_PORT
from device.client.DeviceClient import DeviceClient
from device.proto import device_pb2
from monitoring.proto import context_pb2
from monitoring.service import sqlite_tools, influx_tools
from monitoring.proto import monitoring_pb2
from monitoring.proto import monitoring_pb2_grpc
from common.logger import getJSONLogger
from queue import Queue
LOGGER = getJSONLogger('monitoringservice-server')
LOGGER.setLevel('DEBUG')
......@@ -100,7 +105,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
# Creates the request to send to the device service
monitor_device_request = device_pb2.MonitoringSettings()
kpiDescriptor = self.get_KpiDescriptor(request.kpi_id)
kpiDescriptor = self.GetKpiDescriptor(request.kpi_id, grpc_context)
monitor_device_request.kpi_id.kpi_id.uuid = request.kpi_id.kpi_id.uuid
monitor_device_request.kpi_descriptor.kpi_description = kpiDescriptor.kpi_description
......@@ -130,7 +135,7 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
LOGGER.info('IncludeKpi')
try:
kpiDescriptor = self.get_KpiDescriptor(request.kpi_id)
kpiDescriptor = self.GetKpiDescriptor(request.kpi_id, grpc_context)
kpiSampleType = kpiDescriptor.kpi_sample_type
kpiId = request.kpi_id.kpi_id.uuid
......@@ -165,10 +170,13 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
LOGGER.info('GetInstantKpi')
return monitoring_pb2.Kpi()
def get_KpiDescriptor(self, kpiId):
def GetKpiDescriptor(self, request : monitoring_pb2.KpiId, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiDescriptor:
LOGGER.info('getting Kpi by KpiID')
kpi_db = self.sql_db.get_KPI(int(kpiId.kpi_id.uuid))
try:
kpi_db = self.sql_db.get_KPI(int(request.kpi_id.uuid))
print(kpi_db)
kpiDescriptor = monitoring_pb2.KpiDescriptor()
......@@ -179,3 +187,38 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
kpiDescriptor.service_id.service_uuid.uuid = str(kpi_db[5])
return kpiDescriptor
except ServiceException as e:
LOGGER.exception('GetKpiDescriptor exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetKpiDescriptor exception')
class EventsCollector:
def __init__(self, context_client_grpc : ContextClient) -> None: # pylint: disable=redefined-outer-name
self._events_queue = Queue()
self._device_stream = context_client_grpc.GetDeviceEvents(Empty())
self._device_thread = threading.Thread(target=self._collect, args=(self._device_stream ,), daemon=False)
def _collect(self, events_stream) -> None:
try:
for event in events_stream:
self._events_queue.put_nowait(event)
except grpc.RpcError as e:
if e.code() != grpc.StatusCode.CANCELLED: # pylint: disable=no-member
raise # pragma: no cover
def start(self):
self._device_thread.start()
def get_event(self, block : bool = True, timeout : float = 0.1):
return self._events_queue.get(block=block, timeout=timeout)
def stop(self):
self._device_stream.cancel()
self._device_thread.join()
......@@ -63,7 +63,7 @@ def kpi_id():
# form request
kpi_id = monitoring_pb2.KpiId()
kpi_id.kpi_id.uuid = 'KPIID0000'
kpi_id.kpi_id.uuid = str(1)
return kpi_id
......@@ -144,3 +144,10 @@ def test_getinstant_kpi(monitoring_client,kpi_id):
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_getkpidescritor_kpi(monitoring_client,kpi_id):
LOGGER.warning('test_getkpidescritor_kpi begin')
response = monitoring_client.GetKpiDescriptor(kpi_id)
LOGGER.debug(str(response))
assert isinstance(response, monitoring_pb2.KpiDescriptor)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment