logboard/test_fixes.py
Сергей Антропов db8d08b8ab feat: убраны demo и test контейнеры из интерфейса
- Добавлена фильтрация demo и test контейнеров в list_containers_with_remote()
- Обновлен тестовый скрипт для исключения demo и test контейнеров
- Теперь в интерфейсе отображаются только рабочие контейнеры
- Убраны лишние тестовые контейнеры из статистики

Результат:
 Demo контейнеры убраны из интерфейса
 Test контейнеры убраны из интерфейса
 Остались только рабочие контейнеры
 Интерфейс стал чище и понятнее

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-08-20 20:35:11 +03:00

142 lines
6.9 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Тестовый скрипт для проверки исправлений LogBoard+ Server
Автор: Сергей Антропов
Сайт: https://devops.org.ru
"""
import requests
import json
def test_fixes():
"""Тестирование исправлений"""
base_url = "http://localhost:9001"
# 1. Вход в систему
print("🔐 Вход в систему...")
login_data = {"username": "admin", "password": "admin"}
response = requests.post(f"{base_url}/api/auth/login", json=login_data)
if response.status_code != 200:
print(f"❌ Ошибка входа: {response.status_code}")
return
token = response.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}
print("✅ Вход выполнен успешно")
# 2. Получение контейнеров
print("\n🐳 Получение контейнеров...")
response = requests.get(f"{base_url}/api/containers/services", headers=headers)
if response.status_code != 200:
print(f"❌ Ошибка получения контейнеров: {response.status_code}")
return
containers = response.json()
print(f"✅ Контейнеров получено: {len(containers)}")
# Анализируем контейнеры (исключаем demo и test контейнеры)
local_containers = [c for c in containers if not c.get('is_remote', False) and not any(x in c['name'].lower() for x in ['demo', 'test'])]
remote_containers = [c for c in containers if c.get('is_remote', False) and not any(x in c['name'].lower() for x in ['demo', 'test'])]
print(f"\n📊 Статистика контейнеров:")
print(f" 📍 Локальные контейнеры: {len(local_containers)}")
for container in local_containers:
print(f"{container['name']} ({container['status']})")
print(f"\n 🌐 Удаленные контейнеры: {len(remote_containers)}")
# Группируем удаленные контейнеры по хостам
containers_by_host = {}
for container in remote_containers:
hostname = container.get('hostname', 'unknown')
if hostname not in containers_by_host:
containers_by_host[hostname] = []
containers_by_host[hostname].append(container)
for hostname, host_containers in containers_by_host.items():
print(f" 🖥️ Хост: {hostname} ({len(host_containers)} контейнеров)")
for container in host_containers:
print(f"{container['name']} ({container['status']})")
# 3. Тестирование получения логов
print(f"\n📝 Тестирование получения логов...")
# Тестируем локальный контейнер
if local_containers:
test_container = local_containers[0]
print(f" Тестируем локальный контейнер: {test_container['name']}")
response = requests.get(f"{base_url}/api/logs/{test_container['id']}?tail=10", headers=headers)
if response.status_code == 200:
logs = response.json()
print(f" ✅ Логи получены: {len(logs.get('logs', []))} строк")
else:
print(f" ❌ Ошибка получения логов: {response.status_code}")
# Тестируем удаленный контейнер
if remote_containers:
test_remote_container = remote_containers[0]
print(f" Тестируем удаленный контейнер: {test_remote_container['name']}")
response = requests.get(f"{base_url}/api/logs/{test_remote_container['id']}?tail=10", headers=headers)
if response.status_code == 200:
logs = response.json()
print(f" ✅ Логи получены: {len(logs.get('logs', []))} строк")
else:
print(f" ❌ Ошибка получения логов: {response.status_code}")
# 4. Тестирование статистики
print(f"\n📊 Тестирование статистики...")
if local_containers:
test_container = local_containers[0]
response = requests.get(f"{base_url}/api/logs/stats/{test_container['id']}", headers=headers)
if response.status_code == 200:
stats = response.json()
print(f" ✅ Статистика получена для {test_container['name']}:")
print(f" DEBUG: {stats.get('debug', 0)}")
print(f" INFO: {stats.get('info', 0)}")
print(f" WARN: {stats.get('warn', 0)}")
print(f" ERROR: {stats.get('error', 0)}")
else:
print(f" ❌ Ошибка получения статистики: {response.status_code}")
# 5. Проверка структуры данных для tooltip
print(f"\n🔍 Проверка структуры данных для tooltip...")
for container in local_containers[:2]: # Проверяем первые 2 локальных контейнера
print(f" 📍 Локальный контейнер {container['name']}:")
print(f" Имя: {container['name']}")
print(f" Сервис: {container.get('service', 'N/A')}")
print(f" Проект: {container.get('project', 'standalone')}")
print(f" Статус: {container['status']}")
print(f" Хост: localhost")
if container.get('url'):
print(f" URL: {container['url']}")
if container.get('host_port'):
print(f" Порт: {container['host_port']}")
for container in remote_containers[:2]: # Проверяем первые 2 удаленных контейнера
print(f" 🌐 Удаленный контейнер {container['name']}:")
print(f" Имя: {container['name']}")
print(f" Сервис: {container.get('service', 'N/A')}")
print(f" Проект: {container.get('project', 'remote')}")
print(f" Статус: {container['status']}")
print(f" Хост: {container.get('hostname', 'unknown')}")
if container.get('last_modified'):
print(f" Обновлено: {container['last_modified']}")
print(f"\n🎉 Тестирование завершено!")
print(f"🌐 Откройте http://localhost:9001 в браузере")
print(f" 🔽 Проверьте сворачивание секций в sidebar")
print(f" 💡 Проверьте tooltip на карточках контейнеров")
print(f" 📝 Проверьте отображение логов при клике на карточки")
if __name__ == "__main__":
test_fixes()