mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
Обновления проекта
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Интеграционный тест для системы мониторинга.
|
||||
Проверяет работу метрик, логов и алертов.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
import time
|
||||
import sys
|
||||
import io
|
||||
from core.config import Config
|
||||
from .monitoring import MetricsCollector, structured_logger
|
||||
from .alerts import AlertManager
|
||||
|
||||
# Установка UTF-8 кодировки для вывода
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
|
||||
async def test_monitoring_system():
|
||||
"""Тестирование системы мониторинга"""
|
||||
print("🚀 Запуск интеграционного теста системы мониторинга...")
|
||||
|
||||
# Инициализация с тестовыми настройками
|
||||
import os
|
||||
os.environ['BOT_TOKEN'] = 'test_token_for_monitoring'
|
||||
os.environ['ADMIN_IDS'] = '123456789'
|
||||
|
||||
config = Config()
|
||||
|
||||
metrics = MetricsCollector(config)
|
||||
alert_manager = AlertManager(config, metrics)
|
||||
|
||||
# Настройка логирования
|
||||
logger = structured_logger('test_monitoring', config)
|
||||
|
||||
print("✅ Системы инициализированы")
|
||||
|
||||
# Тест 1: Запись метрик
|
||||
print("\n📊 Тест записи метрик...")
|
||||
|
||||
# Записываем различные метрики
|
||||
metrics.record_error('TestError', 'test_handler', Exception('Test exception'))
|
||||
metrics.record_command('test_command', 'test_handler', 1.5)
|
||||
metrics.record_message('text')
|
||||
metrics.record_api_call('weather_api', 2.3)
|
||||
metrics.update_active_users(100)
|
||||
metrics.set_bot_status(1)
|
||||
|
||||
print("✅ Метрики записаны")
|
||||
|
||||
# Тест 2: Логирование
|
||||
print("\n📝 Тест логирования...")
|
||||
|
||||
logger.info("Test info message", extra={'user_id': 123, 'command': 'test'})
|
||||
logger.warning("Test warning message", extra={'handler': 'test_handler'})
|
||||
logger.error("Test error message", extra={'error_type': 'test_error'})
|
||||
|
||||
print("✅ Логи записаны")
|
||||
|
||||
# Тест 3: Алерты
|
||||
print("\n🚨 Тест системы алертов...")
|
||||
|
||||
# Имитируем условие для алерта
|
||||
metrics.error_counter.labels(error_type='TestError', handler='test_handler')._value.set(15)
|
||||
|
||||
await alert_manager.check_alerts()
|
||||
|
||||
print("✅ Проверка алертов завершена")
|
||||
|
||||
# Тест 4: Sentry (если включен)
|
||||
if config.bot_config.enable_sentry:
|
||||
print("\n🛡️ Тест Sentry интеграции...")
|
||||
metrics.send_sentry_message("Test message from integration test", "info")
|
||||
print("✅ Sentry сообщение отправлено")
|
||||
|
||||
print("\n🎉 Все тесты завершены успешно!")
|
||||
print("\n📋 Результаты:")
|
||||
print("• Метрики: записаны и доступны на /metrics")
|
||||
print("• Логи: структурированные JSON логи в bot.log")
|
||||
print("• Алерты: система готова к отправке уведомлений")
|
||||
print("• Sentry: интеграция настроена (если включена)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(test_monitoring_system())
|
||||
Reference in New Issue
Block a user