diff --git a/tests-deploy/.env.local.example b/tests-deploy/.env.local.example new file mode 100644 index 0000000..a36c8d2 --- /dev/null +++ b/tests-deploy/.env.local.example @@ -0,0 +1,8 @@ +# .env.local.example — Переопределения параметров тестов +# Скопируй в .env.local и измени значения если нужно + +# Переопределить endpoint SQS (если другой домен) +# BASE_URL="https://my-custom-sqs.example.com" + +# Переопределить admin token (если другой токен) +# ADMIN_TOKEN="my-custom-admin-token-123" diff --git a/tests-deploy/README.md b/tests-deploy/README.md new file mode 100644 index 0000000..c3eecee --- /dev/null +++ b/tests-deploy/README.md @@ -0,0 +1,50 @@ +# 🧪 Тесты для shared-SQS + +Папка для запуска функциональных и стресс-тестов shared-SQS сервиса. + +## ⚡ Быстрый старт + +\`\`\`bash +bash run.sh +\`\`\` + +Готово! Скрипт: +1. 📖 Читает параметры из \`deploy/values.yaml\` +2. 🔍 Проверяет доступность сервиса +3. 🚀 Запускает quick_test.sh (31 проверка, ~1 минута) + +## 🎯 Как использовать? + +### Вариант 1: Быстро (из значений values.yaml) +\`\`\`bash +cd tests-deploy +bash run.sh +\`\`\` + +### Вариант 2: Переопределить параметры +\`\`\`bash +cp .env.local.example .env.local +# Отредактируй .env.local с твоими параметрами +bash run.sh +\`\`\` + +### Вариант 3: Через env-переменные (для CI/CD) +\`\`\`bash +BASE_URL=https://my-sqs.example.com ADMIN_TOKEN=my-token bash run.sh +\`\`\` + +## 📊 Что проверяется? + +✅ Health check +✅ Admin API (CRUD тенантов) +✅ SQS операции (CreateQueue, SendMessage, etc) +✅ Batch операции +✅ Tags API +✅ UI API с JWT + +## 🚨 Если не работает + +1. Проверь, что values.yaml содержит правильный домен и токен +2. Убедись, что сервис deployed и готов +3. Проверь DNS: \`nslookup qu.kube5s.ru\` + diff --git a/tests-deploy/quick.sh b/tests-deploy/quick.sh new file mode 100755 index 0000000..e913566 --- /dev/null +++ b/tests-deploy/quick.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# quick.sh — Только быстрые тесты (31 проверка, ~1 минута) +set -e +SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)" +REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")" +VALUES_FILE=\${REPO_ROOT}/deploy/values.yaml +INGRESS_HOST=\$(grep -A5 \"^ingress:\" \"\$VALUES_FILE\" | grep \"host:\" | awk -F" '{print \$2}') +ADMIN_TOKEN=\$(grep \"token:\" \"\$VALUES_FILE\" | head -1 | awk -F" '{print \$2}') +BASE_URL=\"https://\${INGRESS_HOST}\" +[ -f \"\$SCRIPT_DIR/.env.local\" ] && source \"\$SCRIPT_DIR/.env.local\" +cd \"\$REPO_ROOT\" +BASE_URL=\"\$BASE_URL\" ADMIN_TOKEN=\"\$ADMIN_TOKEN\" bash tests/quick_test.sh diff --git a/tests-deploy/run.sh b/tests-deploy/run.sh new file mode 100755 index 0000000..cf01db7 --- /dev/null +++ b/tests-deploy/run.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# run.sh — Запуск тестов shared-SQS с параметрами из values.yaml +set -e + +RED='\\033[0;31m' +GREEN='\\033[0;32m' +YELLOW='\\033[1;33m' +NC='\\033[0m' + +SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)" +REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")" +VALUES_FILE="\${REPO_ROOT}/deploy/values.yaml" + +echo -e "\${GREEN}╔════════════════════════════════════════════╗\${NC}" +echo -e "\${GREEN}║ shared-sqs Тесты (из values.yaml) ║\${NC}" +echo -e "\${GREEN}╚════════════════════════════════════════════╝\${NC}" +echo "" + +if [ ! -f "\$VALUES_FILE" ]; then + echo -e "\${RED}❌ Файл не найден: \$VALUES_FILE\${NC}" + echo " Убедись что находишься в корне репозитория shared-SQS" + exit 1 +fi + +echo -e "\${YELLOW}📄 Читаю параметры из deploy/values.yaml...\${NC}" + +INGRESS_HOST=\$(grep -A5 \"^ingress:\" \"\$VALUES_FILE\" | grep \"host:\" | awk -F" '{print \$2}') +ADMIN_TOKEN=\$(grep \"token:\" \"\$VALUES_FILE\" | head -1 | awk -F" '{print \$2}') + +if [ -z \"\$INGRESS_HOST\" ] || [ -z \"\$ADMIN_TOKEN\" ]; then + echo -e \"\${RED}❌ Не удалось прочитать параметры\${NC}\" + exit 1 +fi + +BASE_URL=\"https://\${INGRESS_HOST}\" + +if [ -f \"\$SCRIPT_DIR/.env.local\" ]; then + source \"\$SCRIPT_DIR/.env.local\" +fi + +echo \"\" +echo -e \"\${GREEN}✅ Параметры загружены:\${NC}\" +echo \" BASE_URL: \$BASE_URL\" +echo \" ADMIN_TOKEN: \${ADMIN_TOKEN:0:20}...\" +echo \"\" + +echo -e \"\${YELLOW}🔍 Проверяю доступность...\${NC}\" +if curl -sf --max-time 5 \"\${BASE_URL}/health\" > /dev/null 2>&1; then + echo -e \"\${GREEN}✅ Сервис доступен\${NC}\" +else + echo -e \"\${RED}❌ Сервис НЕ доступен: \$BASE_URL\${NC}\" + exit 1 +fi + +echo \"\" +echo -e \"\${GREEN}════════════════════════════════════════════\${NC}\" +echo -e \"\${GREEN}🚀 Запускаю quick_test.sh...\${NC}\" +echo -e \"\${GREEN}════════════════════════════════════════════\${NC}\" +echo \"\" + +cd \"\$REPO_ROOT\" +if BASE_URL=\"\$BASE_URL\" ADMIN_TOKEN=\"\$ADMIN_TOKEN\" bash tests/quick_test.sh; then + QUICK_RESULT=0 + echo -e \"\${GREEN}✅ quick_test.sh PASSED\${NC}\" +else + QUICK_RESULT=1 + echo -e \"\${RED}❌ quick_test.sh FAILED\${NC}\" +fi + +echo \"\" +exit \$QUICK_RESULT diff --git a/tests-deploy/stress.sh b/tests-deploy/stress.sh new file mode 100755 index 0000000..45cc491 --- /dev/null +++ b/tests-deploy/stress.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# stress.sh — Стресс-тесты (23 проверки, ~7 минут) +set -e +SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)" +REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")" +VALUES_FILE=\${REPO_ROOT}/deploy/values.yaml +INGRESS_HOST=\$(grep -A5 \"^ingress:\" \"\$VALUES_FILE\" | grep \"host:\" | awk -F" '{print \$2}') +ADMIN_TOKEN=\$(grep \"token:\" \"\$VALUES_FILE\" | head -1 | awk -F" '{print \$2}') +BASE_URL=\"https://\${INGRESS_HOST}\" +[ -f \"\$SCRIPT_DIR/.env.local\" ] && source \"\$SCRIPT_DIR/.env.local\" +cd \"\$REPO_ROOT\" +BASE_URL=\"\$BASE_URL\" ADMIN_TOKEN=\"\$ADMIN_TOKEN\" bash tests/stress_test.sh