Enhance monitoring configuration by adding status update interval and alert delays for CPU, RAM, and disk metrics. Update Makefile to include dependency checks for testing, and modify requirements to include requests library. Refactor message sender and metrics collector for improved logging and alert handling.

This commit is contained in:
2025-09-04 00:45:06 +03:00
parent 18d6f3d441
commit 567e5b3aa3
14 changed files with 1337 additions and 184 deletions

View File

@@ -0,0 +1,92 @@
#!/usr/bin/env python3
"""
Тесты для MessageSender
"""
import pytest
import sys
import os
# Добавляем путь к модулям мониторинга
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../infra/monitoring'))
from infra.monitoring.message_sender import MessageSender
class TestMessageSender:
"""Тесты для класса MessageSender"""
@pytest.fixture
def message_sender(self):
"""Создает экземпляр MessageSender для тестов"""
return MessageSender()
def test_get_cpu_emoji(self, message_sender):
"""Тест получения эмодзи для CPU"""
# Тест зеленого уровня (нормальная нагрузка)
assert message_sender._get_cpu_emoji(25.0) == "🟢"
assert message_sender._get_cpu_emoji(49.9) == "🟢"
# Тест желтого уровня (средняя нагрузка)
assert message_sender._get_cpu_emoji(50.0) == "⚠️"
assert message_sender._get_cpu_emoji(79.9) == "⚠️"
# Тест красного уровня (высокая нагрузка)
assert message_sender._get_cpu_emoji(80.0) == "🚨"
assert message_sender._get_cpu_emoji(95.0) == "🚨"
def test_get_memory_emoji(self, message_sender):
"""Тест получения эмодзи для памяти"""
# Тест зеленого уровня (нормальное использование)
assert message_sender._get_memory_emoji(30.0) == "🟢"
assert message_sender._get_memory_emoji(59.9) == "🟢"
# Тест желтого уровня (среднее использование)
assert message_sender._get_memory_emoji(60.0) == "⚠️"
assert message_sender._get_memory_emoji(84.9) == "⚠️"
# Тест красного уровня (высокое использование)
assert message_sender._get_memory_emoji(85.0) == "🚨"
assert message_sender._get_memory_emoji(95.0) == "🚨"
def test_get_load_average_emoji(self, message_sender):
"""Тест получения эмодзи для Load Average"""
# Тест зеленого уровня (нормальная нагрузка)
assert message_sender._get_load_average_emoji(4.0, 8) == "🟢" # 0.5 на ядро
assert message_sender._get_load_average_emoji(7.9, 8) == "🟢" # 0.9875 на ядро
# Тест желтого уровня (средняя нагрузка)
assert message_sender._get_load_average_emoji(8.0, 8) == "⚠️" # 1.0 на ядро
assert message_sender._get_load_average_emoji(15.9, 8) == "⚠️" # 1.9875 на ядро
# Тест красного уровня (высокая нагрузка)
assert message_sender._get_load_average_emoji(16.0, 8) == "🚨" # 2.0 на ядро
assert message_sender._get_load_average_emoji(24.0, 8) == "🚨" # 3.0 на ядро
def test_get_io_wait_emoji(self, message_sender):
"""Тест получения эмодзи для IO Wait"""
# Тест зеленого уровня (нормальный IO Wait)
assert message_sender._get_io_wait_emoji(2.0) == "🟢"
assert message_sender._get_io_wait_emoji(4.9) == "🟢"
# Тест желтого уровня (средний IO Wait)
assert message_sender._get_io_wait_emoji(5.0) == "⚠️"
assert message_sender._get_io_wait_emoji(19.9) == "⚠️"
# Тест красного уровня (высокий IO Wait)
assert message_sender._get_io_wait_emoji(20.0) == "🚨"
assert message_sender._get_io_wait_emoji(35.0) == "🚨"
def test_get_disk_space_emoji(self, message_sender):
"""Тест получения эмодзи для дискового пространства"""
# Тест зеленого уровня (нормальное использование)
assert message_sender._get_disk_space_emoji(30.0) == "🟢"
assert message_sender._get_disk_space_emoji(59.9) == "🟢"
# Тест желтого уровня (среднее использование)
assert message_sender._get_disk_space_emoji(60.0) == "⚠️"
assert message_sender._get_disk_space_emoji(89.9) == "⚠️"
# Тест красного уровня (высокое использование)
assert message_sender._get_disk_space_emoji(90.0) == "🚨"
assert message_sender._get_disk_space_emoji(95.0) == "🚨"