Refactor metrics handling and improve logging
- Removed the MetricsManager initialization from `run_helper.py` to avoid duplication, as metrics are now handled in `main.py`. - Updated logging levels in `server_prometheus.py` and `metrics_middleware.py` to use debug instead of info for less critical messages. - Added metrics configuration to `BaseDependencyFactory` for better management of metrics settings. - Deleted the obsolete `metrics_exporter.py` file to streamline the codebase. - Updated various tests to reflect changes in the metrics handling and ensure proper functionality.
This commit is contained in:
@@ -32,19 +32,19 @@ class TestAutoUnbanIntegration:
|
||||
user_id INTEGER PRIMARY KEY,
|
||||
user_name TEXT,
|
||||
message_for_user TEXT,
|
||||
date_to_unban TEXT
|
||||
date_to_unban INTEGER
|
||||
)
|
||||
''')
|
||||
|
||||
# Добавляем тестовые данные
|
||||
today = datetime.now(timezone(timedelta(hours=3))).strftime("%Y-%m-%d")
|
||||
tomorrow = (datetime.now(timezone(timedelta(hours=3))) + timedelta(days=1)).strftime("%Y-%m-%d")
|
||||
today_timestamp = int(datetime.now(timezone(timedelta(hours=3))).timestamp())
|
||||
tomorrow_timestamp = int((datetime.now(timezone(timedelta(hours=3))) + timedelta(days=1)).timestamp())
|
||||
|
||||
test_data = [
|
||||
(123, "test_user1", "Test ban 1", today), # Разблокируется сегодня
|
||||
(456, "test_user2", "Test ban 2", today), # Разблокируется сегодня
|
||||
(789, "test_user3", "Test ban 3", tomorrow), # Разблокируется завтра
|
||||
(999, "test_user4", "Test ban 4", None), # Навсегда заблокирован
|
||||
(123, "test_user1", "Test ban 1", today_timestamp), # Разблокируется сегодня
|
||||
(456, "test_user2", "Test ban 2", today_timestamp), # Разблокируется сегодня
|
||||
(789, "test_user3", "Test ban 3", tomorrow_timestamp), # Разблокируется завтра
|
||||
(999, "test_user4", "Test ban 4", None), # Навсегда заблокирован
|
||||
]
|
||||
|
||||
cursor.executemany(
|
||||
@@ -73,10 +73,9 @@ class TestAutoUnbanIntegration:
|
||||
}
|
||||
|
||||
# Создаем реальный экземпляр базы данных с тестовым файлом
|
||||
from database.db import BotDB
|
||||
from database.async_db import AsyncBotDB
|
||||
import os
|
||||
current_dir = os.getcwd()
|
||||
mock_factory.database = BotDB(current_dir, test_db_path)
|
||||
mock_factory.database = AsyncBotDB(test_db_path)
|
||||
|
||||
return mock_factory
|
||||
|
||||
@@ -110,14 +109,15 @@ class TestAutoUnbanIntegration:
|
||||
await scheduler.auto_unban_users()
|
||||
|
||||
# Проверяем, что пользователи с сегодняшней датой разблокированы
|
||||
cursor.execute("SELECT COUNT(*) FROM blacklist WHERE date_to_unban = ?",
|
||||
(datetime.now(timezone(timedelta(hours=3))).strftime("%Y-%m-%d"),))
|
||||
current_timestamp = int(datetime.now(timezone(timedelta(hours=3))).timestamp())
|
||||
cursor.execute("SELECT COUNT(*) FROM blacklist WHERE date_to_unban IS NOT NULL AND date_to_unban <= ?",
|
||||
(current_timestamp,))
|
||||
today_count = cursor.fetchone()[0]
|
||||
assert today_count == 0
|
||||
|
||||
# Проверяем, что пользователи с завтрашней датой остались
|
||||
tomorrow = (datetime.now(timezone(timedelta(hours=3))) + timedelta(days=1)).strftime("%Y-%m-%d")
|
||||
cursor.execute("SELECT COUNT(*) FROM blacklist WHERE date_to_unban = ?", (tomorrow,))
|
||||
cursor.execute("SELECT COUNT(*) FROM blacklist WHERE date_to_unban IS NOT NULL AND date_to_unban > ?",
|
||||
(current_timestamp,))
|
||||
tomorrow_count = cursor.fetchone()[0]
|
||||
assert tomorrow_count == 1
|
||||
|
||||
@@ -146,8 +146,8 @@ class TestAutoUnbanIntegration:
|
||||
# Удаляем пользователей с сегодняшней датой
|
||||
conn = sqlite3.connect(setup_test_db)
|
||||
cursor = conn.cursor()
|
||||
today = datetime.now(timezone(timedelta(hours=3))).strftime("%Y-%m-%d")
|
||||
cursor.execute("DELETE FROM blacklist WHERE date_to_unban = ?", (today,))
|
||||
current_timestamp = int(datetime.now(timezone(timedelta(hours=3))).timestamp())
|
||||
cursor.execute("DELETE FROM blacklist WHERE date_to_unban IS NOT NULL AND date_to_unban <= ?", (current_timestamp,))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
@@ -195,7 +195,7 @@ class TestAutoUnbanIntegration:
|
||||
scheduler = AutoUnbanScheduler()
|
||||
scheduler.bot_db = mock_bdf.database
|
||||
|
||||
# Проверяем, что дата в базе соответствует ожидаемому формату
|
||||
# Проверяем, что дата в базе соответствует ожидаемому формату (timestamp)
|
||||
conn = sqlite3.connect(setup_test_db)
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT date_to_unban FROM blacklist WHERE date_to_unban IS NOT NULL LIMIT 1")
|
||||
@@ -203,13 +203,13 @@ class TestAutoUnbanIntegration:
|
||||
conn.close()
|
||||
|
||||
if result and result[0]:
|
||||
date_str = result[0]
|
||||
# Проверяем формат YYYY-MM-DD
|
||||
assert len(date_str) == 10
|
||||
assert date_str.count('-') == 2
|
||||
assert date_str[:4].isdigit() # Год
|
||||
assert date_str[5:7].isdigit() # Месяц
|
||||
assert date_str[8:10].isdigit() # День
|
||||
timestamp = result[0]
|
||||
# Проверяем, что это валидный timestamp (целое число)
|
||||
assert isinstance(timestamp, int)
|
||||
assert timestamp > 0
|
||||
# Проверяем, что timestamp можно преобразовать в дату
|
||||
date_obj = datetime.fromtimestamp(timestamp)
|
||||
assert isinstance(date_obj, datetime)
|
||||
|
||||
|
||||
class TestSchedulerLifecycle:
|
||||
|
||||
Reference in New Issue
Block a user