fix: тесты работают, параметры извлекаются из deploy/values.yaml
This commit is contained in:
+16
-28
@@ -30,15 +30,22 @@ image:
|
|||||||
# addr: адрес в формате host:port (внутренний K8s DNS или внешний IP)
|
# addr: адрес в формате host:port (внутренний K8s DNS или внешний IP)
|
||||||
# user: Redis-пользователь (по умолчанию "default" — стандартный встроенный пользователь Redis)
|
# user: Redis-пользователь (по умолчанию "default" — стандартный встроенный пользователь Redis)
|
||||||
redis:
|
redis:
|
||||||
addr: "your-redis-host:6379"
|
addr: "rfrm-redisk8s.54467f74-67f5-4ca7-9b4a-bdd50e8c23d6.svc:6379"
|
||||||
user: "default"
|
user: "default"
|
||||||
password: "your-redis-password"
|
password: "your-redis-password"
|
||||||
|
|
||||||
|
# Ingress — домен и TLS сертификат
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
host: "qu.kube5s.ru"
|
||||||
|
tls:
|
||||||
|
enabled: true
|
||||||
|
issuer: "letsencrypt-prod"
|
||||||
|
|
||||||
# Токен для административного API (/admin/*).
|
# Токен для административного API (/admin/*).
|
||||||
# Используется для создания тенантов и управления ими.
|
# Используется для создания тенантов и управления ими.
|
||||||
# Придумайте любую строку, например: openssl rand -hex 20
|
|
||||||
admin:
|
admin:
|
||||||
token: "your-admin-token"
|
token: "sqs-admin-7a7d8bd0c060a75c198d48680f34077a"
|
||||||
|
|
||||||
# Создать demo-тенанта при первом старте (удобно для проверки работы).
|
# Создать demo-тенанта при первом старте (удобно для проверки работы).
|
||||||
# В продакшне можно поставить false.
|
# В продакшне можно поставить false.
|
||||||
@@ -53,32 +60,13 @@ resources:
|
|||||||
memory: "256Mi"
|
memory: "256Mi"
|
||||||
cpu: "500m"
|
cpu: "500m"
|
||||||
|
|
||||||
# Ingress — открывает сервис наружу по домену.
|
# PostgreSQL — для биллинга
|
||||||
# host: ваш домен, должен указывать на IP ingress-контроллера кластера.
|
|
||||||
# После деплоя cert-manager автоматически выпустит TLS-сертификат.
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
className: nginx
|
|
||||||
host: "sqs.your-domain.com"
|
|
||||||
annotations:
|
|
||||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
|
||||||
nginx.ingress.kubernetes.io/proxy-body-size: "10m"
|
|
||||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "30"
|
|
||||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "30"
|
|
||||||
tls:
|
|
||||||
enabled: true
|
|
||||||
secretName: shared-sqs-tls
|
|
||||||
|
|
||||||
# Биллинг — запись статистики по всем SQS-операциям в PostgreSQL.
|
|
||||||
# Если PostgreSQL нет — поставьте enabled: false, остальное игнорируется.
|
|
||||||
billing:
|
billing:
|
||||||
enabled: false
|
enabled: true
|
||||||
postgres:
|
postgres:
|
||||||
host: "your-postgres-host"
|
host: "postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local"
|
||||||
port: "5432"
|
port: 5432
|
||||||
# База данных должна существовать заранее (CREATE DATABASE sqsdb)
|
|
||||||
database: "sqsdb"
|
database: "sqsdb"
|
||||||
user: "postgres"
|
user: "super"
|
||||||
password: "your-postgres-password"
|
|
||||||
# disable — если PostgreSQL без SSL (например локальный)
|
|
||||||
sslmode: "require"
|
sslmode: "require"
|
||||||
|
password: "your-postgres-password"
|
||||||
|
|||||||
+4
-11
@@ -1,12 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# quick.sh — Только быстрые тесты (31 проверка, ~1 минута)
|
# quick.sh — запуск быстрых тестов (7 основных операций SQS)
|
||||||
set -e
|
|
||||||
SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)"
|
REPO_ROOT="$(dirname "$(cd "$(dirname "$0")" && pwd)")"
|
||||||
REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")"
|
"$REPO_ROOT/tests-deploy/run.sh" 2>&1
|
||||||
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
|
|
||||||
|
|||||||
+62
-51
@@ -1,71 +1,82 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# run.sh — Запуск тестов shared-SQS с параметрами из values.yaml
|
# run.sh — запуск тестов shared-sqs для verification деплоя
|
||||||
|
# 2026-04-13 — автоматическое извлечение параметров из deploy/values.yaml
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
RED='\\033[0;31m'
|
echo "shared-sqs Тесты"
|
||||||
GREEN='\\033[0;32m'
|
echo
|
||||||
YELLOW='\\033[1;33m'
|
|
||||||
NC='\\033[0m'
|
|
||||||
|
|
||||||
SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)"
|
# Переход в корневую папку репозитория (parent от tests-deploy/)
|
||||||
REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")"
|
REPO_ROOT="$(dirname "$(cd "$(dirname "$0")" && pwd)")"
|
||||||
VALUES_FILE="\${REPO_ROOT}/deploy/values.yaml"
|
VALUES_FILE="$REPO_ROOT/deploy/values.yaml"
|
||||||
|
QUICK_TEST="$REPO_ROOT/quick_test.sh"
|
||||||
|
ENV_LOCAL="$REPO_ROOT/tests-deploy/.env.local"
|
||||||
|
|
||||||
echo -e "\${GREEN}╔════════════════════════════════════════════╗\${NC}"
|
# Функция для извлечения параметров из YAML
|
||||||
echo -e "\${GREEN}║ shared-sqs Тесты (из values.yaml) ║\${NC}"
|
extract_param() {
|
||||||
echo -e "\${GREEN}╚════════════════════════════════════════════╝\${NC}"
|
local file="$1"
|
||||||
echo ""
|
local key="$2"
|
||||||
|
grep "$key:" "$file" | head -1 | sed -n "s/.*$key: \"\([^\"]*\).*/\1/p"
|
||||||
|
}
|
||||||
|
|
||||||
if [ ! -f "\$VALUES_FILE" ]; then
|
# Функция для извлечения nested параметров (ingress.host)
|
||||||
echo -e "\${RED}❌ Файл не найден: \$VALUES_FILE\${NC}"
|
extract_nested() {
|
||||||
echo " Убедись что находишься в корне репозитория shared-SQS"
|
local file="$1"
|
||||||
|
local section="$2"
|
||||||
|
local key="$3"
|
||||||
|
grep -A5 "^$section:" "$file" | grep "$key:" | sed -n "s/.*$key: \"\([^\"]*\).*/\1/p"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Проверка наличия файлов
|
||||||
|
if [ ! -f "$VALUES_FILE" ]; then
|
||||||
|
echo "❌ Ошибка: не найден $VALUES_FILE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "\${YELLOW}📄 Читаю параметры из deploy/values.yaml...\${NC}"
|
if [ ! -f "$QUICK_TEST" ]; then
|
||||||
|
echo "❌ Ошибка: не найден $QUICK_TEST"
|
||||||
INGRESS_HOST=\$(grep -A5 \"^ingress:\" \"\$VALUES_FILE\" | grep \"host:\" | awk -F" '{print \$2}')
|
echo " Ожидался: $QUICK_TEST"
|
||||||
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BASE_URL=\"https://\${INGRESS_HOST}\"
|
echo "Читаю параметры из deploy/values.yaml..."
|
||||||
|
|
||||||
if [ -f \"\$SCRIPT_DIR/.env.local\" ]; then
|
# Извлечение параметров
|
||||||
source \"\$SCRIPT_DIR/.env.local\"
|
INGRESS_HOST=$(extract_nested "$VALUES_FILE" "ingress" "host")
|
||||||
|
ADMIN_TOKEN=$(extract_param "$VALUES_FILE" "token")
|
||||||
|
|
||||||
|
# Demo credentials — для ознакомительного тестирования
|
||||||
|
AWS_ACCESS_KEY_ID="SSAK-demo-shared-sqs"
|
||||||
|
AWS_SECRET_ACCESS_KEY="demo-secret-key-shared-sqs-ngcloud-2026"
|
||||||
|
AWS_DEFAULT_REGION="us-east-1"
|
||||||
|
BASE_URL="https://$INGRESS_HOST"
|
||||||
|
|
||||||
|
# Override из .env.local (если существует)
|
||||||
|
if [ -f "$ENV_LOCAL" ]; then
|
||||||
|
echo " → Загружу override из .env.local"
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source "$ENV_LOCAL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo \"\"
|
echo "✅ Параметры загружены:"
|
||||||
echo -e \"\${GREEN}✅ Параметры загружены:\${NC}\"
|
echo " BASE_URL: $BASE_URL"
|
||||||
echo \" BASE_URL: \$BASE_URL\"
|
echo " ADMIN_TOKEN: ${ADMIN_TOKEN:0:20}..."
|
||||||
echo \" ADMIN_TOKEN: \${ADMIN_TOKEN:0:20}...\"
|
echo
|
||||||
echo \"\"
|
|
||||||
|
|
||||||
echo -e \"\${YELLOW}🔍 Проверяю доступность...\${NC}\"
|
# Проверка доступности сервиса
|
||||||
if curl -sf --max-time 5 \"\${BASE_URL}/health\" > /dev/null 2>&1; then
|
echo "🔍 Проверяю доступность..."
|
||||||
echo -e \"\${GREEN}✅ Сервис доступен\${NC}\"
|
if ! curl -sf "$BASE_URL/health" > /dev/null 2>&1; then
|
||||||
else
|
echo "❌ Сервис недоступен по $BASE_URL"
|
||||||
echo -e \"\${RED}❌ Сервис НЕ доступен: \$BASE_URL\${NC}\"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
echo "✅ Сервис доступен"
|
||||||
|
echo
|
||||||
|
|
||||||
echo \"\"
|
# Запуск тестов
|
||||||
echo -e \"\${GREEN}════════════════════════════════════════════\${NC}\"
|
echo "════════════════════════════════════════════"
|
||||||
echo -e \"\${GREEN}🚀 Запускаю quick_test.sh...\${NC}\"
|
echo "🚀 Запускаю quick_test.sh..."
|
||||||
echo -e \"\${GREEN}════════════════════════════════════════════\${NC}\"
|
echo "════════════════════════════════════════════"
|
||||||
echo \"\"
|
|
||||||
|
|
||||||
cd \"\$REPO_ROOT\"
|
export BASE_URL ADMIN_TOKEN AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION
|
||||||
if BASE_URL=\"\$BASE_URL\" ADMIN_TOKEN=\"\$ADMIN_TOKEN\" bash tests/quick_test.sh; then
|
bash "$QUICK_TEST"
|
||||||
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
|
|
||||||
|
|||||||
+41
-11
@@ -1,12 +1,42 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# stress.sh — Стресс-тесты (23 проверки, ~7 минут)
|
# stress.sh — запуск полного набора тестов (18+ операций, batch operations, visibility change)
|
||||||
set -e
|
|
||||||
SCRIPT_DIR="\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)"
|
REPO_ROOT="$(dirname "$(cd "$(dirname "$0")" && pwd)")"
|
||||||
REPO_ROOT="\$(dirname \"\$SCRIPT_DIR\")"
|
VALUES_FILE="$REPO_ROOT/deploy/values.yaml"
|
||||||
VALUES_FILE=\${REPO_ROOT}/deploy/values.yaml
|
HARDCORE_TEST="$REPO_ROOT/hardcore_test.sh"
|
||||||
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}')
|
# Извлечение параметров (скопировано из run.sh)
|
||||||
BASE_URL=\"https://\${INGRESS_HOST}\"
|
extract_param() {
|
||||||
[ -f \"\$SCRIPT_DIR/.env.local\" ] && source \"\$SCRIPT_DIR/.env.local\"
|
local file="$1"
|
||||||
cd \"\$REPO_ROOT\"
|
local key="$2"
|
||||||
BASE_URL=\"\$BASE_URL\" ADMIN_TOKEN=\"\$ADMIN_TOKEN\" bash tests/stress_test.sh
|
grep "$key:" "$file" | head -1 | sed -n "s/.*$key: \"\([^\"]*\).*/\1/p"
|
||||||
|
}
|
||||||
|
|
||||||
|
extract_nested() {
|
||||||
|
local file="$1"
|
||||||
|
local section="$2"
|
||||||
|
local key="$3"
|
||||||
|
grep -A5 "^$section:" "$file" | grep "$key:" | sed -n "s/.*$key: \"\([^\"]*\).*/\1/p"
|
||||||
|
}
|
||||||
|
|
||||||
|
INGRESS_HOST=$(extract_nested "$VALUES_FILE" "ingress" "host")
|
||||||
|
ADMIN_TOKEN=$(extract_param "$VALUES_FILE" "token")
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID="SSAK-demo-shared-sqs"
|
||||||
|
AWS_SECRET_ACCESS_KEY="demo-secret-key-shared-sqs-ngcloud-2026"
|
||||||
|
AWS_DEFAULT_REGION="us-east-1"
|
||||||
|
BASE_URL="https://$INGRESS_HOST"
|
||||||
|
|
||||||
|
# Override из .env.local
|
||||||
|
ENV_LOCAL="$REPO_ROOT/tests-deploy/.env.local"
|
||||||
|
if [ -f "$ENV_LOCAL" ]; then
|
||||||
|
source "$ENV_LOCAL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "════════════════════════════════════════════"
|
||||||
|
echo "🧪 Полный набор тестов (stress)"
|
||||||
|
echo "════════════════════════════════════════════"
|
||||||
|
echo
|
||||||
|
|
||||||
|
export BASE_URL ADMIN_TOKEN AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION
|
||||||
|
bash "$HARDCORE_TEST"
|
||||||
|
|||||||
Reference in New Issue
Block a user