Newer
Older
from src.monitoring.proto import context_pb2
from src.monitoring.proto import monitoring_pb2
from src.monitoring.client.monitoring_client import MonitoringClient
from src.monitoring.service.monitoring_server import start_server, stop_server
Javi Moreno
committed
# from src.monitoring.tests.test_monitoring import kpi_request
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
SERVER_ADDRESS = '127.0.0.1'
LISTEN_ADDRESS = '[::]'
PORT = 7070
###########################
# Tests Setup
###########################
# This fixture will be requested by test cases and last during testing session
@pytest.fixture(scope='session')
def monitoring_service():
LOGGER.warning('monitoring_service begin')
LOGGER.info('Initializing MonitoringService...')
server = start_server(address=LISTEN_ADDRESS, port=PORT)
# yield the server, when test finishes, execution will resume to stop it
LOGGER.warning('monitoring_service yielding')
yield server
LOGGER.info('Terminating MonitoringService...')
stop_server(server)
# This fixture will be requested by test cases and last during testing session.
# The client requires the server, so client fixture has the server as dependency.
@pytest.fixture(scope='session')
def monitoring_client(monitoring_service):
LOGGER.warning('monitoring_client begin')
client = MonitoringClient(server=SERVER_ADDRESS, port=PORT) # instantiate the client
LOGGER.warning('monitoring_client returning')
return client
# This fixture will be requested by test cases and last during testing session.
@pytest.fixture(scope='session')
def kpi():
LOGGER.warning('test_include_kpi begin')
# form request
kpi = monitoring_pb2.Kpi()
kpi.kpi_id.kpi_id.uuid = 'KPIID0000' # pylint: disable=maybe-no-member
kpi.kpiDescription = 'KPI Desc'
Javi Moreno
committed
@pytest.fixture(scope='session')
def kpi_id():
LOGGER.warning('test_include_kpi begin')
# form request
kpi_id = monitoring_pb2.KpiId()
kpi_id.kpi_id.uuid = 'KPIID0000'
return kpi_id
@pytest.fixture(scope='session')
def create_kpi_request():
Javi Moreno
committed
LOGGER.warning('test_include_kpi begin')
create_kpi_request = monitoring_pb2.CreateKpiRequest()
create_kpi_request.device_id.device_id.uuid = 'DEV1' # pylint: disable=maybe-no-member
create_kpi_request.kpiDescription = 'KPI Description'
create_kpi_request.kpi_sample_type = monitoring_pb2.KpiSampleType.PACKETS_TRANSMITTED
return create_kpi_request
@pytest.fixture(scope='session')
def monitor_kpi_request():
LOGGER.warning('test_monitor_kpi begin')
monitor_kpi_request = monitoring_pb2.MonitorKpiRequest()
monitor_kpi_request.kpi_id.kpi_id.uuid = 'KPIID0000'
monitor_kpi_request.connexion_time_s = 120
monitor_kpi_request.sample_rate_ms = 5
return monitor_kpi_request
Javi Moreno
committed
@pytest.fixture(scope='session')
def monitor_device_kpi_request():
LOGGER.warning('test_monitor_kpi begin')
monitor_device_kpi_request = monitoring_pb2.MonitorDeviceKpiRequest()
monitor_device_kpi_request.connexion_time_s = 120
monitor_device_kpi_request.sample_rate_ms = 5
return monitor_device_kpi_request
###########################
# Tests Implementation
###########################
# Test case that makes use of client fixture to test server's CreateKpi method
def test_create_kpi(monitoring_client,create_kpi_request):
# make call to server
LOGGER.warning('test_create_kpi requesting')
response = monitoring_client.CreateKpi(create_kpi_request)
LOGGER.debug(str(response))
Javi Moreno
committed
assert isinstance(response, monitoring_pb2.KpiId)
# Test case that makes use of client fixture to test server's MonitorKpi method
def test_monitor_kpi(monitoring_client,monitor_kpi_request):
response = monitoring_client.MonitorKpi(monitor_kpi_request)
assert isinstance(response, context_pb2.Empty)
# Test case that makes use of client fixture to test server's MonitorDeviceKpi method
def test_monitor_device_kpi(monitoring_client,monitor_device_kpi_request):
LOGGER.warning('test_monitor_device_kpi begin')
response = monitoring_client.MonitorDeviceKpi(monitor_device_kpi_request)
LOGGER.debug(str(response))
assert isinstance(response, context_pb2.Empty)
# Test case that makes use of client fixture to test server's IncludeKpi method
def test_include_kpi(monitoring_client,kpi_request):
# make call to server
LOGGER.warning('test_include_kpi requesting')
response = monitoring_client.IncludeKpi(kpi_request)
LOGGER.debug(str(response))
assert isinstance(response, context_pb2.Empty)
# Test case that makes use of client fixture to test server's GetStreamKpi method
response = monitoring_client.GetStreamKpi(kpi)
# Test case that makes use of client fixture to test server's GetInstantKpi method
Javi Moreno
committed
def test_getinstant_kpi(monitoring_client,kpi_id):
Javi Moreno
committed
response = monitoring_client.GetInstantKpi(kpi_id)
LOGGER.debug(str(response))
assert isinstance(response, monitoring_pb2.Kpi)