#!/usr/bin/env python3 """ Тесты для инфраструктуры мониторинга """ import pytest import sys import os # Добавляем путь к модулям мониторинга sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../infra/monitoring')) def test_imports(): """Тест импорта основных модулей""" try: from metrics_collector import MetricsCollector from message_sender import MessageSender from prometheus_server import PrometheusServer from server_monitor import ServerMonitor assert True except ImportError as e: pytest.fail(f"Failed to import modules: {e}") def test_metrics_collector_creation(): """Тест создания MetricsCollector""" try: from metrics_collector import MetricsCollector collector = MetricsCollector() assert collector is not None assert hasattr(collector, 'get_system_info') assert hasattr(collector, 'get_metrics_data') except Exception as e: pytest.fail(f"Failed to create MetricsCollector: {e}") def test_message_sender_creation(): """Тест создания MessageSender""" try: from message_sender import MessageSender sender = MessageSender() assert sender is not None except Exception as e: pytest.fail(f"Failed to create MessageSender: {e}") def test_prometheus_server_creation(): """Тест создания PrometheusServer""" try: from prometheus_server import PrometheusServer server = PrometheusServer() assert server is not None assert hasattr(server, 'host') assert hasattr(server, 'port') except Exception as e: pytest.fail(f"Failed to create PrometheusServer: {e}") def test_server_monitor_creation(): """Тест создания ServerMonitor""" try: from server_monitor import ServerMonitor monitor = ServerMonitor() assert monitor is not None assert hasattr(monitor, 'metrics_collector') assert hasattr(monitor, 'message_sender') assert hasattr(monitor, 'prometheus_server') except Exception as e: pytest.fail(f"Failed to create ServerMonitor: {e}") def test_system_info_structure(): """Тест структуры системной информации""" try: from metrics_collector import MetricsCollector collector = MetricsCollector() system_info = collector.get_system_info() # Проверяем, что system_info это словарь assert isinstance(system_info, dict) # Проверяем наличие основных ключей expected_keys = ['cpu_percent', 'ram_percent', 'disk_percent', 'server_hostname'] for key in expected_keys: assert key in system_info, f"Missing key: {key}" except Exception as e: pytest.fail(f"Failed to get system info: {e}") def test_metrics_data_structure(): """Тест структуры метрик""" try: from metrics_collector import MetricsCollector collector = MetricsCollector() metrics = collector.get_metrics_data() # Проверяем, что metrics это словарь assert isinstance(metrics, dict) # Проверяем, что есть хотя бы одна метрика assert len(metrics) > 0, "Metrics should not be empty" except Exception as e: pytest.fail(f"Failed to get metrics data: {e}") if __name__ == "__main__": pytest.main([__file__, "-v"])