#!/bin/bash # Тестування повного потоку: Matrix → Gateway → NATS → Worker → Memory Service set -e echo "🧪 Тестування повного потоку..." echo "" # Кольори для виводу GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Перевірка компонентів echo "=== Перевірка компонентів ===" # 1. NATS echo -n "NATS JetStream: " if kubectl get pods -n nats -l app=nats --field-selector=status.phase=Running 2>/dev/null | grep -q nats; then echo -e "${GREEN}✅ Running${NC}" else echo -e "${RED}❌ Not running${NC}" exit 1 fi # 2. Memory Service echo -n "Memory Service: " if kubectl get pods -n daarion -l app=memory-service --field-selector=status.phase=Running 2>/dev/null | grep -q memory-service; then echo -e "${GREEN}✅ Running${NC}" else echo -e "${YELLOW}⚠️ Not running (може бути нормально)${NC}" fi # 3. Qdrant echo -n "Qdrant: " if kubectl get pods -n qdrant -l app=qdrant --field-selector=status.phase=Running 2>/dev/null | grep -q qdrant; then echo -e "${GREEN}✅ Running${NC}" else echo -e "${YELLOW}⚠️ Not running (може бути нормально)${NC}" fi echo "" echo "=== Перевірка NATS streams ===" NATS_POD=$(kubectl get pods -n nats -l app=nats -o jsonpath='{.items[0].metadata.name}' 2>/dev/null) if [ -n "$NATS_POD" ]; then kubectl exec -n nats "$NATS_POD" -- wget -qO- http://localhost:8222/jsz 2>/dev/null | python3 -m json.tool 2>/dev/null | grep -E '"streams"|"name"' | head -10 || echo "Streams не знайдено" else echo "NATS pod не знайдено" fi echo "" echo "=== Тест створення job ===" echo "Створюю тестовий job через Python..." cat << 'PYEOF' | python3 import asyncio import json from nats.js import api from nats.aio.client import Client as NATS async def test_job(): nc = NATS() try: await nc.connect("nats://nats-client.nats:4222") js = nc.jetstream() # Тестовий job job = { "job_id": "test-001", "idempotency_key": "sha256:test", "type": "embed", "priority": "online", "input": { "text": ["Тестовий текст для embedding"], "model": "cohere/embed-multilingual-v3.0", "dims": 1024 } } # Публікація ack = await js.publish("mm.embed.online", json.dumps(job).encode()) print(f"✅ Job опубліковано: seq={ack.seq}") await nc.close() except Exception as e: print(f"❌ Помилка: {e}") asyncio.run(test_job()) PYEOF echo "" echo "✅ Тестування завершено!"