#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Тестовый скрипт для проверки WebSocket соединений LogBoard+ Автор: Сергей Антропов Сайт: https://devops.org.ru """ import asyncio import websockets import json import requests async def test_websocket(): """Тестирование WebSocket соединений""" 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"] print(" ✅ Токен получен") except Exception as e: print(f" ❌ Ошибка входа: {e}") return # 2. Получаем список контейнеров print("\n🔍 Получение контейнеров...") headers = {"Authorization": f"Bearer {token}"} 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 first_container = containers[0] container_id = first_container.get('id') container_name = first_container.get('name') print(f" 📦 Тестируем контейнер: {container_name} ({container_id})") except Exception as e: print(f" ❌ Ошибка получения контейнеров: {e}") return # 3. Тестируем WebSocket соединение print(f"\n🔌 Тестирование WebSocket для {container_name}...") # Формируем WebSocket URL ws_url = f"ws://localhost:9001/api/websocket/logs/{container_id}?tail=10&token={token}&service={container_name}" print(f" 🔗 WebSocket URL: {ws_url}") try: async with websockets.connect(ws_url) as websocket: print(" ✅ WebSocket соединение установлено") # Ждем сообщения print(" 📡 Ожидание сообщений...") message_count = 0 max_messages = 5 async for message in websocket: message_count += 1 print(f" 📨 Сообщение {message_count}: {message[:100]}...") if message_count >= max_messages: print(f" ✅ Получено {message_count} сообщений") break except Exception as e: print(f" ❌ Ошибка WebSocket: {e}") if __name__ == "__main__": asyncio.run(test_websocket())