add README, quick_test, hardcore_test for shared-sqs multi-tenant SQS service

This commit is contained in:
2026-04-09 18:21:10 +03:00
commit 0b2e8da97b
4 changed files with 1231 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
#!/bin/bash
# quick_test.sh — быстрая проверка shared-sqs (6 тестов)
# Требования: aws cli, bash
# Запуск: bash quick_test.sh
set -uo pipefail
# Конфигурация — можно переопределить через переменные окружения
BASE_URL="${BASE_URL:-https://qu.kube5s.ru}"
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID:-SSAK-dbdee63f39621705826a759e}"
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY:-faaae34c905f467636cce1db09a66f35113bee6f61efecbe1dcd30ed8d11c33f}"
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
ENDPOINT="--endpoint-url ${BASE_URL}"
QUEUE_NAME="quick-test-$(date +%s)"
PASS=0
FAIL=0
TOTAL=0
# check — проверяет что вывод содержит паттерн
check() {
local name="$1" output="$2" pattern="$3"
TOTAL=$((TOTAL + 1))
if echo "$output" | head -20 | grep -qiE "$pattern"; then
echo " [PASS] $name"
PASS=$((PASS + 1))
else
echo " [FAIL] $name"
echo " pattern: $pattern"
echo " output: $(echo "$output" | head -3)"
FAIL=$((FAIL + 1))
fi
}
echo "═══════════════════════════════════════════"
echo " Shared SQS — Quick Test"
echo " Endpoint: $BASE_URL"
echo " Queue: $QUEUE_NAME"
echo "═══════════════════════════════════════════"
echo ""
# 1. Создать очередь
echo "▶ Создание очереди"
OUT=$(aws sqs create-queue --queue-name "$QUEUE_NAME" $ENDPOINT 2>&1)
check "create-queue" "$OUT" "QueueUrl"
QUEUE_URL=$(echo "$OUT" | python3 -c "import sys,json; print(json.load(sys.stdin)['QueueUrl'])" 2>/dev/null)
# 2. Список очередей — должна быть наша
echo ""
echo "▶ Список очередей"
OUT=$(aws sqs list-queues $ENDPOINT 2>&1)
check "list-queues contains $QUEUE_NAME" "$OUT" "$QUEUE_NAME"
# 3. Отправить сообщение
echo ""
echo "▶ Отправка сообщения"
OUT=$(aws sqs send-message --queue-url "$QUEUE_URL" --message-body "Hello Quick Test!" $ENDPOINT 2>&1)
check "send-message" "$OUT" "MessageId"
# 4. Получить сообщение
echo ""
echo "▶ Получение сообщения"
OUT=$(aws sqs receive-message --queue-url "$QUEUE_URL" --wait-time-seconds 5 $ENDPOINT 2>&1)
check "receive-message" "$OUT" "Hello Quick Test"
RECEIPT=$(echo "$OUT" | python3 -c "import sys,json; print(json.load(sys.stdin)['Messages'][0]['ReceiptHandle'])" 2>/dev/null)
# 5. Удалить сообщение (confirm delivery)
echo ""
echo "▶ Удаление сообщения"
if [[ -n "$RECEIPT" ]]; then
OUT=$(aws sqs delete-message --queue-url "$QUEUE_URL" --receipt-handle "$RECEIPT" $ENDPOINT 2>&1)
# delete-message returns empty on success
if [[ -z "$OUT" || "$OUT" == "" ]]; then
TOTAL=$((TOTAL + 1)); PASS=$((PASS + 1))
echo " [PASS] delete-message"
else
check "delete-message" "$OUT" "^$"
fi
else
TOTAL=$((TOTAL + 1)); FAIL=$((FAIL + 1))
echo " [FAIL] delete-message — no receipt handle"
fi
# 6. Удалить очередь
echo ""
echo "▶ Удаление очереди"
OUT=$(aws sqs delete-queue --queue-url "$QUEUE_URL" $ENDPOINT 2>&1)
if [[ -z "$OUT" || "$OUT" == "" ]]; then
TOTAL=$((TOTAL + 1)); PASS=$((PASS + 1))
echo " [PASS] delete-queue"
else
check "delete-queue" "$OUT" "^$"
fi
# Итог
echo ""
echo "═══════════════════════════════════════════"
echo " ИТОГО: $PASS/$TOTAL PASS, $FAIL FAIL"
echo "═══════════════════════════════════════════"
[[ $FAIL -eq 0 ]] && exit 0 || exit 1