Commit 14428242 authored by Carlos Natalino's avatar Carlos Natalino
Browse files

Improving tests for the OAD.

parent 444bee86
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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"
+17 −10
Original line number Diff line number Diff line
@@ -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:
        for _ in range(10):
            request: DetectionRequest = DetectionRequest()
        request.service_id.context_id.context_uuid.uuid = ""
        request.service_id.service_uuid.uuid = str("")
        request.kpi_id.kpi_id.uuid = ""
            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)
        mitigator.NotifyAttack.assert_called_once()
        monitoring.IncludeKpi.assert_called_once()
            dbscanserving.assert_called_once()
            monitoring.IncludeKpi.assert_called_once()
        mitigator.NotifyAttack.assert_called()
+0 −1
Original line number Diff line number Diff line
@@ -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
+1 −2
Original line number Diff line number Diff line
@@ -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")