- Опціональна JWT auth в Memory Service endpoints - get_current_service_optional для backward compatibility - NATS auth config (nkeys) - шаблони - Qdrant auth config (API keys) - шаблони - Тестовий скрипт для повного потоку TODO: Генерація реальних JWT/ключів та застосування конфігів
94 lines
2.8 KiB
Bash
Executable File
94 lines
2.8 KiB
Bash
Executable File
#!/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 "✅ Тестування завершено!"
|