diff --git a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py index 7e30c688cea229fd4761aaade0705c427a749b7e..287478f13da49986bc93a7406117f043abc62e54 100644 --- a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py +++ b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py @@ -27,6 +27,9 @@ from kpi_manager.database.KpiModel import Kpi as KpiModel LOGGER = logging.getLogger(__name__) METRICS_POOL = MetricsPool('KpiManager', 'NBIgRPC') +class IDNotFoundError(Exception): + ... + class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): def __init__(self, name_mapping : NameMapping): LOGGER.debug('Init KpiManagerService') @@ -57,11 +60,24 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) if row is not None: response = KpiModel.convert_row_to_KpiDescriptor(row) - return response + return response + if row is None: + print ('No matching row found for kpi id: {:}'.format(kpi_id_to_search)) + LOGGER.debug('No matching row found kpi id: {:}'.format(kpi_id_to_search)) + return Empty() except Exception as e: print ('Unable to search kpi id. {:}'.format(e)) LOGGER.debug('Unable to search kpi id. {:}'.format(e)) - + raise e + # kpi_id_to_search = request.kpi_id.uuid + # row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) + # if row is None: + # print ('Unable to search kpi id. {:}'.format(kpi_id_to_search)) + # LOGGER.debug('Unable to search kpi id. {:}'.format(kpi_id_to_search)) + # raise IDNotFoundError + # response = KpiModel.convert_row_to_KpiDescriptor(row) + # return response + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def DeleteKpiDescriptor(self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore ) -> Empty: # type: ignore diff --git a/src/kpi_manager/tests/test_kpi_manager.py b/src/kpi_manager/tests/test_kpi_manager.py index f29265cdddf610d31ef21e9dcc25d37c68bd59f9..e5bf17a5faf61514a70a19b45efea34fff7d21e3 100755 --- a/src/kpi_manager/tests/test_kpi_manager.py +++ b/src/kpi_manager/tests/test_kpi_manager.py @@ -36,6 +36,9 @@ from context.client.ContextClient import ContextClient from kpi_manager.tests.test_messages import create_kpi_descriptor_request, create_kpi_filter_request, create_kpi_descriptor_request_a from kpi_manager.service.KpiManagerService import KpiManagerService from kpi_manager.client.KpiManagerClient import KpiManagerClient +from kpi_manager.tests.test_messages import create_kpi_descriptor_request +from kpi_value_writer.tests.test_messages import create_kpi_id_request + from monitoring.service.NameMapping import NameMapping @@ -214,6 +217,11 @@ def test_GetKpiDescriptor(kpi_manager_client): # get KPI response = kpi_manager_client.GetKpiDescriptor(response_id) LOGGER.info("Response gRPC message object: {:}".format(response)) + + LOGGER.info(" >>> calling GetKpiDescriptor with random ID") + rand_response = kpi_manager_client.GetKpiDescriptor(create_kpi_id_request()) + LOGGER.info("Response gRPC message object: {:}".format(rand_response)) + assert isinstance(response, KpiDescriptor) # def test_SelectKpiDescriptor(kpi_manager_client): diff --git a/src/kpi_value_writer/tests/test_kpi_value_writer.py b/src/kpi_value_writer/tests/test_kpi_value_writer.py index 19a7d39159ebe81ba1fdbfae8292df3587cfc34f..4ac7b21c82234fcf863dc9e2ac5ebaf0f4b763a2 100755 --- a/src/kpi_value_writer/tests/test_kpi_value_writer.py +++ b/src/kpi_value_writer/tests/test_kpi_value_writer.py @@ -15,10 +15,30 @@ import logging from kpi_value_writer.service.KpiValueWriter import KpiValueWriter from common.tools.kafka.Variables import KafkaTopic - +from kpi_manager.client.KpiManagerClient import KpiManagerClient +from kpi_manager.tests.test_messages import create_kpi_descriptor_request +from common.proto.kpi_manager_pb2 import KpiDescriptor +from kpi_value_writer.tests.test_messages import create_kpi_id_request LOGGER = logging.getLogger(__name__) +def test_GetKpiDescriptor(): + LOGGER.info(" >>> test_GetKpiDescriptor: START <<< ") + kpi_manager_client = KpiManagerClient() + # adding KPI + LOGGER.info(" >>> calling SetKpiDescriptor ") + response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) + # get KPI + LOGGER.info(" >>> calling GetKpiDescriptor with response ID") + response = kpi_manager_client.GetKpiDescriptor(response_id) + LOGGER.info("Response gRPC message object: {:}".format(response)) + + LOGGER.info(" >>> calling GetKpiDescriptor with random ID") + rand_response = kpi_manager_client.GetKpiDescriptor(create_kpi_id_request()) + LOGGER.info("Response gRPC message object: {:}".format(rand_response)) + + LOGGER.info("\n------------------ TEST FINISHED ---------------------\n") + assert isinstance(response, KpiDescriptor) # -------- Initial Test ---------------- # def test_validate_kafka_topics(): @@ -26,9 +46,7 @@ LOGGER = logging.getLogger(__name__) # response = KafkaTopic.create_all_topics() # assert isinstance(response, bool) -def test_KafkaConsumer(): - LOGGER.debug(" --->>> test_kafka_consumer: START <<<--- ") - KpiValueWriter.RunKafkaConsumer() +# def test_KafkaConsumer(): +# LOGGER.debug(" --->>> test_kafka_consumer: START <<<--- ") +# KpiValueWriter.RunKafkaConsumer() -# def test_metric_composer_and_writer(): -# LOGGER.debug(" --->>> test_metric_composer_and_writer: START <<<--- ") diff --git a/src/kpi_value_writer/tests/test_messages.py b/src/kpi_value_writer/tests/test_messages.py index d9f4cf80a2d7043da0d49debdf01be6deba78ee2..d4b263c8089e5ce8b65d66d8a6e00c5976b9e997 100755 --- a/src/kpi_value_writer/tests/test_messages.py +++ b/src/kpi_value_writer/tests/test_messages.py @@ -18,6 +18,11 @@ from common.proto import kpi_manager_pb2 from common.proto.kpi_value_api_pb2 import KpiValue from common.proto.kpi_sample_types_pb2 import KpiSampleType +def create_kpi_id_request(): + _create_kpi_id = kpi_manager_pb2.KpiId() + _create_kpi_id.kpi_id.uuid = str(uuid.uuid4()) + return _create_kpi_id + def create_kpi_descriptor_request(description: str = "Test Description"): _create_kpi_request = kpi_manager_pb2.KpiDescriptor() @@ -33,8 +38,8 @@ def create_kpi_descriptor_request(description: str = "Test Description"): return _create_kpi_request def create_kpi_value_request(): - _create_kpi_value_request = KpiValue() - _create_kpi_value_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) - _create_kpi_value_request.timestamp.timestamp = time.time() + _create_kpi_value_request = KpiValue() + _create_kpi_value_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) + _create_kpi_value_request.timestamp.timestamp = time.time() _create_kpi_value_request.kpi_value_type.floatVal = random.randint(10, 10000) return _create_kpi_value_request \ No newline at end of file