From 7deaf86ce24098524f5f4b42621aa34eb9afe8d8 Mon Sep 17 00:00:00 2001 From: gifrerenom Date: Wed, 20 Dec 2023 11:33:22 +0000 Subject: [PATCH] Context component: - Fix management of field used_capacity_gbps in Link entity - Fix related unitary test --- src/context/service/database/Link.py | 7 +++++-- src/context/tests/test_link.py | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/context/service/database/Link.py b/src/context/service/database/Link.py index 4ca3cee68..e2060c454 100644 --- a/src/context/service/database/Link.py +++ b/src/context/service/database/Link.py @@ -102,14 +102,17 @@ def link_set(db_engine : Engine, messagebroker : MessageBroker, request : Link) total_capacity_gbps, used_capacity_gbps = None, None if request.HasField('attributes'): attributes = request.attributes + # In proto3, HasField() does not work for scalar fields, using ListFields() instead. attribute_names = set([field.name for field,_ in attributes.ListFields()]) + if 'total_capacity_gbps' in attribute_names: total_capacity_gbps = attributes.total_capacity_gbps + if 'used_capacity_gbps' in attribute_names: used_capacity_gbps = attributes.used_capacity_gbps - elif total_capacity_gbps is not None: - used_capacity_gbps = total_capacity_gbps + else: + used_capacity_gbps = 0.0 link_data = [{ 'link_uuid' : link_uuid, diff --git a/src/context/tests/test_link.py b/src/context/tests/test_link.py index 8b07f0230..5b5abb0d5 100644 --- a/src/context/tests/test_link.py +++ b/src/context/tests/test_link.py @@ -100,8 +100,13 @@ def test_link(context_client : ContextClient) -> None: attribute_names = set([field.name for field,_ in response.attributes.ListFields()]) assert 'total_capacity_gbps' in attribute_names assert abs(response.attributes.total_capacity_gbps - 100) < 1.e-12 - assert 'used_capacity_gbps' in attribute_names - assert abs(response.attributes.used_capacity_gbps - response.attributes.total_capacity_gbps) < 1.e-12 + assert ( + ('used_capacity_gbps' not in attribute_names) or ( + ('used_capacity_gbps' in attribute_names) and ( + abs(response.attributes.used_capacity_gbps - response.attributes.total_capacity_gbps) < 1.e-12 + ) + ) + ) # ----- List when the object exists -------------------------------------------------------------------------------- response = context_client.ListLinkIds(Empty()) -- GitLab