From 7deaf86ce24098524f5f4b42621aa34eb9afe8d8 Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
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