103 lines
3.6 KiB
Python
103 lines
3.6 KiB
Python
#!/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"])
|