mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
Подготовка к релизу
This commit is contained in:
+119
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Финальное тестирование всей системы мониторинга.
|
||||
Проверяет интеграцию всех компонентов.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
import io
|
||||
from datetime import datetime
|
||||
|
||||
# Установка UTF-8 кодировки
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||
|
||||
print("🚀 Финальное тестирование системы мониторинга...")
|
||||
|
||||
async def test_monitoring_integration():
|
||||
"""Тестирование интеграции мониторинга"""
|
||||
|
||||
try:
|
||||
# Тест 1: Проверка импорта модулей
|
||||
print("\n📦 Тест импорта модулей...")
|
||||
from core.monitoring import MetricsCollector, structured_logger
|
||||
from core.alerts import AlertManager
|
||||
from core.config import Config
|
||||
print("✅ Все модули импортированы успешно")
|
||||
|
||||
# Тест 2: Проверка конфигурации
|
||||
print("\n⚙️ Тест конфигурации...")
|
||||
import os
|
||||
os.environ['BOT_TOKEN'] = 'test_token_for_monitoring'
|
||||
os.environ['ADMIN_IDS'] = '123456789'
|
||||
|
||||
config = Config()
|
||||
print("✅ Конфигурация загружена")
|
||||
|
||||
# Тест 3: Проверка метрик
|
||||
print("\n📊 Тест системы метрик...")
|
||||
metrics = MetricsCollector(config)
|
||||
|
||||
# Записываем тестовые метрики
|
||||
metrics.record_error('TestError', 'test_handler', Exception('Test exception'))
|
||||
metrics.record_command('start', 'user_handler', 1.2)
|
||||
metrics.record_message('text')
|
||||
metrics.update_active_users(100)
|
||||
metrics.set_bot_status(1)
|
||||
|
||||
print("✅ Метрики записаны")
|
||||
|
||||
# Тест 4: Проверка логирования
|
||||
print("\n📝 Тест логирования...")
|
||||
logger = structured_logger('final_test', config)
|
||||
|
||||
# Тестируем разные уровни логирования
|
||||
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("✅ Логи записаны в JSON формате")
|
||||
|
||||
# Тест 5: Проверка алертов
|
||||
print("\n🚨 Тест системы алертов...")
|
||||
alert_manager = AlertManager(config, metrics)
|
||||
|
||||
# Имитируем условие для алерта
|
||||
metrics.error_counter.labels(error_type='TestError', handler='test_handler')._value.set(15)
|
||||
|
||||
await alert_manager.check_alerts()
|
||||
print("✅ Система алертов проверена")
|
||||
|
||||
# Тест 6: Проверка файла логов
|
||||
print("\n📄 Тест файла логов...")
|
||||
try:
|
||||
with open('bot.log', 'r', encoding='utf-8') as f:
|
||||
logs = f.readlines()
|
||||
if logs:
|
||||
# Проверяем, что логи в JSON формате
|
||||
first_log = logs[-1].strip()
|
||||
try:
|
||||
json.loads(first_log)
|
||||
print("✅ Логи записываются в JSON формате")
|
||||
except json.JSONDecodeError:
|
||||
print("⚠️ Логи не в JSON формате")
|
||||
else:
|
||||
print("⚠️ Лог файл пуст")
|
||||
except FileNotFoundError:
|
||||
print("⚠️ Лог файл не найден")
|
||||
|
||||
print("\n🎉 Все тесты завершены успешно!")
|
||||
print("\n📋 Результаты тестирования:")
|
||||
print("✅ Мониторинг: система работает корректно")
|
||||
print("✅ Метрики: Prometheus метрики записываются")
|
||||
print("✅ Логи: структурированные JSON логи")
|
||||
print("✅ Алерты: система алертов инициализирована")
|
||||
print("✅ Конфигурация: все настройки загружаются")
|
||||
|
||||
print("\n🚀 Система мониторинга готова к использованию!")
|
||||
print("\n📚 Документация:")
|
||||
print("• MONITORING.md - подробная документация")
|
||||
print("• README_MONITORING.md - быстрый старт")
|
||||
print("• GLITCHTIP_SETUP.md - настройка GlitchTip")
|
||||
print("• START_MONITORING.md - инструкция по запуску")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Ошибка при тестировании: {e}")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = asyncio.run(test_monitoring_integration())
|
||||
if success:
|
||||
print("\n🏆 Система мониторинга прошла все тесты!")
|
||||
else:
|
||||
print("\n💥 В системе мониторинга найдены проблемы!")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user