diff --git a/src/opticalattackdetector/.gitlab-ci.yml b/src/opticalattackdetector/.gitlab-ci.yml index 6d9d0313c2a7e98175b51d628a72d85cb4d7de5e..917ce53ba8cdfc165a1854c67d07a5b1e62a572f 100644 --- a/src/opticalattackdetector/.gitlab-ci.yml +++ b/src/opticalattackdetector/.gitlab-ci.yml @@ -54,7 +54,7 @@ unit_test opticalattackdetector: script: - export REDIS_PASSWORD=$(uuidgen) - docker pull "redis:7.0-alpine" - - docker run --name redis -d --network=teraflowbridge -p 6379:6379 -e REDIS_PASSWORD=${REDIS_PASSWORD} --rm redis:7.0-alpine redis-server --requirepass ${REDIS_PASSWORD} + - docker run --name redis -d --network=teraflowbridge -p 16379:6379 -e REDIS_PASSWORD=${REDIS_PASSWORD} --rm redis:7.0-alpine redis-server --requirepass ${REDIS_PASSWORD} - docker logs redis - REDIS_ADDRESS=$(docker inspect redis --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - docker pull "$CI_REGISTRY_IMAGE/dbscanserving:$IMAGE_TAG" diff --git a/src/opticalattackdetector/tests/test_unitary.py b/src/opticalattackdetector/tests/test_unitary.py index 90af220753da442f2f9a026eeaed88f3fb77a23f..586a724dfaf8eb1ae09fa7da83cbdae0d5fc68e8 100644 --- a/src/opticalattackdetector/tests/test_unitary.py +++ b/src/opticalattackdetector/tests/test_unitary.py @@ -13,13 +13,15 @@ # limitations under the License. import logging -import os +import uuid +import queue from unittest.mock import patch import pytest from common.proto import dbscanserving_pb2 as dbscan from common.proto.optical_attack_detector_pb2 import DetectionRequest +from common.tests.MockServicerImpl_Monitoring import MockServicerImpl_Monitoring from opticalattackdetector.client.OpticalAttackDetectorClient import \ OpticalAttackDetectorClient @@ -48,25 +50,30 @@ def optical_attack_detector_client(optical_attack_detector_service): def test_detect_attack( + optical_attack_detector_service: OpticalAttackDetectorService, optical_attack_detector_client: OpticalAttackDetectorClient, ): message = dbscan.DetectionResponse() message.cluster_indices.extend([0, 1, -1, -1, -1]) + + monitoring_mock = MockServicerImpl_Monitoring(queue_samples = queue.Queue()) with patch( "opticalattackdetector.service.OpticalAttackDetectorServiceServicerImpl.attack_mitigator_client" ) as mitigator, patch( - "opticalattackdetector.service.OpticalAttackDetectorServiceServicerImpl.monitoring_client" + "opticalattackdetector.service.OpticalAttackDetectorServiceServicerImpl.monitoring_client", + monitoring_mock, ) as monitoring, patch( "opticalattackdetector.service.OpticalAttackDetectorServiceServicerImpl.dbscanserving_client.Detect", # TODO: return dumb object with "cluster_indices" attribute # idea: create new response object return_value=message, ) as dbscanserving: - request: DetectionRequest = DetectionRequest() - request.service_id.context_id.context_uuid.uuid = "" - request.service_id.service_uuid.uuid = str("") - request.kpi_id.kpi_id.uuid = "" - optical_attack_detector_client.DetectAttack(request) - mitigator.NotifyAttack.assert_called_once() - monitoring.IncludeKpi.assert_called_once() - dbscanserving.assert_called_once() + for _ in range(10): + request: DetectionRequest = DetectionRequest() + request.service_id.context_id.context_uuid.uuid = str(uuid.uuid4()) + request.service_id.service_uuid.uuid = str(uuid.uuid4()) + request.kpi_id.kpi_id.uuid = "1" + optical_attack_detector_client.DetectAttack(request) + dbscanserving.assert_called_once() + monitoring.IncludeKpi.assert_called_once() + mitigator.NotifyAttack.assert_called() diff --git a/src/opticalattackmanager/utils/monitor.py b/src/opticalattackmanager/utils/monitor.py index c34ac217c0d29b086101e7fafc7d6cefef1fa114..9889c0caf61129c30bc3f1681dceda1e1a4adfad 100644 --- a/src/opticalattackmanager/utils/monitor.py +++ b/src/opticalattackmanager/utils/monitor.py @@ -17,7 +17,6 @@ import logging import traceback from grpclib.client import Channel -from prometheus_client import Counter from common.proto.asyncio.optical_attack_detector_grpc import \ OpticalAttackDetectorServiceStub diff --git a/src/tests/scenario3/optical/ofc23/run_experiment_demo.py b/src/tests/scenario3/optical/ofc23/run_experiment_demo.py index 16ddb9c315784c39258aaf0f342ebd8da35b17e8..2f09f8d5aba38c865a20a2e57d22630d380a2b1b 100644 --- a/src/tests/scenario3/optical/ofc23/run_experiment_demo.py +++ b/src/tests/scenario3/optical/ofc23/run_experiment_demo.py @@ -21,8 +21,7 @@ import threading import redis from kubernetes import client, config -from common.Constants import ServiceNameEnum -from common.Settings import get_service_host, get_setting, wait_for_environment_variables +from common.Settings import get_setting, wait_for_environment_variables # Configs can be set in Configuration class directly or using helper utility namespace = get_setting("TFS_K8S_NAMESPACE", default="tfs")