Skip to content
test_unitary.py 2.29 KiB
Newer Older
ldemarcosm's avatar
ldemarcosm committed
import copy
import grpc
import logging
import pytest
import multiprocessing
ldemarcosm's avatar
ldemarcosm committed
import subprocess
ldemarcosm's avatar
ldemarcosm committed
import time
from l3_attackmitigator.proto.monitoring_pb2 import Kpi, KpiList
from common.orm.Factory import get_database_backend as get_database, BackendEnum as DatabaseEngineEnum
from l3_attackmitigator.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD
from l3_attackmitigator.client.l3_attackmitigatorClient import l3_attackmitigatorClient
from l3_attackmitigator.service.l3_attackmitigatorService import l3_attackmitigatorService
from l3_attackmitigator.proto.l3_attackmitigator_pb2 import (
ldemarcosm's avatar
ldemarcosm committed
    Output,
ldemarcosm's avatar
ldemarcosm committed
)
from l3_attackmitigator.proto.l3_attackmitigator_pb2_grpc import (
ldemarcosm's avatar
ldemarcosm committed
    L3AttackmitigatorStub,
ldemarcosm's avatar
ldemarcosm committed
)

port = 10000 + GRPC_SERVICE_PORT  # avoid privileged ports

LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)

@pytest.fixture(scope='session')
ldemarcosm's avatar
ldemarcosm committed
def l3_attackmitigator_service():
ldemarcosm's avatar
ldemarcosm committed
    _service = l3_attackmitigatorService(
ldemarcosm's avatar
ldemarcosm committed
        port=port, max_workers=GRPC_MAX_WORKERS, grace_period=GRPC_GRACE_PERIOD)
ldemarcosm's avatar
ldemarcosm committed
    _service.start()
ldemarcosm's avatar
ldemarcosm committed
    LOGGER.info('Server started on '+str(port))
ldemarcosm's avatar
ldemarcosm committed
    yield _service
    _service.stop()


@pytest.fixture(scope='session')
def l3_attackmitigator_client(l3_attackmitigator_service):
    _client = l3_attackmitigatorClient(address='127.0.0.1', port=port)
    yield _client
    _client.close()
ldemarcosm's avatar
ldemarcosm committed

ldemarcosm's avatar
ldemarcosm committed

def test_demo():
ldemarcosm's avatar
ldemarcosm committed
    LOGGER.info('Demo Test')
ldemarcosm's avatar
ldemarcosm committed
    pass

ldemarcosm's avatar
ldemarcosm committed
def test_grpc_server(l3_attackmitigator_service):
ldemarcosm's avatar
ldemarcosm committed
    output_message = {
            "confidence": 0.8,
            "timestamp": "date",
            "ip_o": "randomIP",
            "tag_name": "HTTP",
            "tag": 0,
            "flow_id": "FlowID",
            "protocol": "RandomProtocol",
            "port_d": "3456",
            "ml_id": "RandomForest",
            "time_start": 0.0,
            "time_end": 10.0,
        }
    
    def open_channel(input_information):
ldemarcosm's avatar
ldemarcosm committed
        LOGGER.info(str(f"localhost:{port}"))
        with grpc.insecure_channel(f"localhost:{port}") as channel:
ldemarcosm's avatar
ldemarcosm committed
            stub = L3AttackmitigatorStub(channel)
ldemarcosm's avatar
ldemarcosm committed
            response = stub.SendOutput(input_information)
ldemarcosm's avatar
ldemarcosm committed
            LOGGER.info("Inferencer send_input sent and received: "+str(response.message))
ldemarcosm's avatar
ldemarcosm committed
    try:
ldemarcosm's avatar
ldemarcosm committed
        open_channel(Output(**output_message))
ldemarcosm's avatar
ldemarcosm committed
        LOGGER.info('Success!')
ldemarcosm's avatar
ldemarcosm committed
    except:
ldemarcosm's avatar
ldemarcosm committed
        assert 0=="GRPC server failed"
ldemarcosm's avatar
ldemarcosm committed