From 15f1cd92cb3d33e1e00a49db032060c40ab2061e Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Mon, 9 Jun 2025 12:00:54 -0300 Subject: [PATCH] SIENTIAPDE-1030 Add tests for loading OPC slots without decoding and connector configurations --- .../activities/test_slot_manager.py | 22 ++++++++ .../utils/test_connectors_config.py | 51 +++++++++++++++++++ tests/orchestrator/utils/test_converters.py | 15 ++++++ 3 files changed, 88 insertions(+) create mode 100644 tests/orchestrator/utils/test_connectors_config.py create mode 100644 tests/orchestrator/utils/test_converters.py diff --git a/tests/orchestrator/activities/test_slot_manager.py b/tests/orchestrator/activities/test_slot_manager.py index 0fdd410..ca2adfa 100644 --- a/tests/orchestrator/activities/test_slot_manager.py +++ b/tests/orchestrator/activities/test_slot_manager.py @@ -51,6 +51,28 @@ async def test_load_opc_slots(slot_manager): } +@mark.asyncio +async def test_load_opc_slots_no_decode(slot_manager): + slot_manager.redis_client.keys.return_value = [ + "slot:opc_tags:1", "slot:opc_tags:2", "slot:opc_tags:3"] + + slot_manager.get = MagicMock( + side_effect=[ + "value1", + "value2", + None + ] + ) + + response = await slot_manager.load_opc_slots() + + assert response == { + "slot:opc_tags:1": "value1", + "slot:opc_tags:2": "value2", + "slot:opc_tags:3": None + } + + @mark.asyncio async def test_load_active_ingestors(slot_manager): slot_manager.redis_client.keys.return_value = [ diff --git a/tests/orchestrator/utils/test_connectors_config.py b/tests/orchestrator/utils/test_connectors_config.py new file mode 100644 index 0000000..3cf4dac --- /dev/null +++ b/tests/orchestrator/utils/test_connectors_config.py @@ -0,0 +1,51 @@ +from os import environ +from orchestrator.utils.connectors_config import (build_redis_config, + build_couchbase_config) + + +def test_build_redis_config_with_env_vars(): + environ['REDIS_HOST'] = 'localhost' + environ['REDIS_PORT'] = '6379' + environ['REDIS_USERNAME'] = 'sientia' + environ['REDIS_PASSWORD'] = 'sientia' + assert build_redis_config() == { + 'host': 'localhost', + 'port': 6379, + 'username': 'sientia', + 'password': 'sientia' + } + + +def test_build_couchbase_config_with_env_vars(): + environ['COUCHBASE_CONNECTION_STRING'] = 'couchbase://localhost' + environ['COUCHBASE_USERNAME'] = 'sientia' + environ['COUCHBASE_PASSWORD'] = 'sientia' + assert build_couchbase_config() == { + 'connection_string': 'couchbase://localhost', + 'username': 'sientia', + 'password': 'sientia' + } + + +def test_build_redis_config_with_defaults(): + environ.pop('REDIS_HOST', None) + environ.pop('REDIS_PORT', None) + environ.pop('REDIS_USERNAME', None) + environ.pop('REDIS_PASSWORD', None) + assert build_redis_config() == { + 'host': 'localhost', + 'port': 6379, + 'username': None, + 'password': None + } + + +def test_build_couchbase_config_with_defaults(): + environ.pop('COUCHBASE_CONNECTION_STRING', None) + environ.pop('COUCHBASE_USERNAME', None) + environ.pop('COUCHBASE_PASSWORD', None) + assert build_couchbase_config() == { + 'connection_string': 'couchbase://localhost', + 'username': 'sientia', + 'password': 'sientia' + } diff --git a/tests/orchestrator/utils/test_converters.py b/tests/orchestrator/utils/test_converters.py new file mode 100644 index 0000000..430316e --- /dev/null +++ b/tests/orchestrator/utils/test_converters.py @@ -0,0 +1,15 @@ +from orchestrator.utils.converters import parse_frequency + + +def test_parse_frequency(): + assert parse_frequency("1s") == 1 + assert parse_frequency("1m") == 60 + assert parse_frequency("1h") == 60 * 60 + assert parse_frequency("1d") == 60 * 60 * 24 + + try: + parse_frequency("1") + except ValueError as e: + assert str(e) == "Invalid frequency" + else: + assert False