diff --git a/test_logs_display.py b/test_logs_display.py new file mode 100644 index 0000000..377ad79 --- /dev/null +++ b/test_logs_display.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Тестовый скрипт для проверки отображения логов LogBoard+ +Автор: Сергей Антропов +Сайт: https://devops.org.ru +""" + +import requests +import json +import time + +def test_logs_display(): + """Тестирование отображения логов""" + + base_url = "http://localhost:9001" + + # 1. Получаем токен + print("🔐 Получение токена...") + login_data = {"username": "admin", "password": "admin"} + try: + 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(" ✅ Токен получен") + except Exception as e: + print(f" ❌ Ошибка входа: {e}") + return + + # 2. Получаем список контейнеров + print("\n🔍 Получение контейнеров...") + try: + 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)}") + + if not containers: + print(" ❌ Нет контейнеров для тестирования") + return + + # Берем первый контейнер + container = containers[0] + container_id = container.get('id') + container_name = container.get('name') + print(f" 📦 Тестируем контейнер: {container_name} ({container_id})") + + except Exception as e: + print(f" ❌ Ошибка получения контейнеров: {e}") + return + + # 3. Получаем логи контейнера + print(f"\n📋 Получение логов для {container_name}...") + try: + response = requests.get(f"{base_url}/api/logs/{container_id}?tail=10", headers=headers) + print(f" Логи: {response.status_code}") + + if response.status_code == 200: + logs_data = response.json() + logs = logs_data.get('logs', []) + print(f" ✅ Получено строк логов: {len(logs)}") + + if logs: + print(" 📄 Последние 3 строки логов:") + for i, log in enumerate(logs[-3:], 1): + print(f" {i}. {log[:100]}...") + else: + print(" ⚠️ Логи пусты") + else: + print(f" ❌ Ошибка получения логов: {response.text}") + + except Exception as e: + print(f" ❌ Ошибка получения логов: {e}") + + # 4. Проверяем WebSocket статус + print(f"\n🔌 Проверка WebSocket статуса...") + try: + response = requests.get(f"{base_url}/api/websocket/status", headers=headers) + print(f" WebSocket status: {response.status_code}") + + if response.status_code == 200: + status = response.json() + print(f" ✅ WebSocket статус: {status.get('status')}") + print(f" 📊 Контейнеров: {status.get('containers_count')}") + else: + print(f" ❌ Ошибка WebSocket status: {response.text}") + + except Exception as e: + print(f" ❌ Ошибка WebSocket status: {e}") + + # 5. Генерируем тестовые логи + print(f"\n🧪 Генерирование тестовых логов...") + try: + # Отправляем команду в контейнер для генерации логов + test_commands = [ + "echo 'TEST LOG: Info message from test script'", + "echo 'TEST LOG: Warning message from test script'", + "echo 'TEST LOG: Error message from test script'", + "echo 'TEST LOG: Debug message from test script'" + ] + + for cmd in test_commands: + print(f" 🔧 Выполняем: {cmd}") + # Здесь можно добавить выполнение команды в контейнер + # Пока просто выводим команду + time.sleep(0.5) + + print(" ✅ Тестовые команды выполнены") + + except Exception as e: + print(f" ❌ Ошибка генерации логов: {e}") + +if __name__ == "__main__": + test_logs_display()