docs: rebuild showcase repository
This commit is contained in:
Regular → Executable
+58
-69
@@ -1,100 +1,89 @@
|
||||
#!/bin/bash
|
||||
# quick_test.sh — быстрая проверка shared-sqs (6 тестов)
|
||||
# Требования: aws cli, bash
|
||||
# Запуск: bash quick_test.sh
|
||||
# quick_test.sh — public smoke test for shared-SQS
|
||||
|
||||
set -uo pipefail
|
||||
set -euo pipefail
|
||||
|
||||
# Конфигурация — можно переопределить через переменные окружения
|
||||
BASE_URL="${BASE_URL:-https://qu.kube5s.ru}"
|
||||
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID:-SSAK-demo-shared-sqs}"
|
||||
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY:-demo-secret-key-shared-sqs-ngcloud-2026}"
|
||||
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
|
||||
AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID:-}"
|
||||
AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY:-}"
|
||||
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))
|
||||
require_env() {
|
||||
local name="$1"
|
||||
if [[ -z "${!name:-}" ]]; then
|
||||
echo "Missing required env: $name"
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
ok() {
|
||||
echo " [PASS] $1"
|
||||
PASS=$((PASS + 1))
|
||||
}
|
||||
|
||||
fail() {
|
||||
echo " [FAIL] $1"
|
||||
FAIL=$((FAIL + 1))
|
||||
}
|
||||
|
||||
check() {
|
||||
local label="$1"
|
||||
local body="$2"
|
||||
local pattern="$3"
|
||||
if echo "$body" | grep -qE "$pattern"; then
|
||||
ok "$label"
|
||||
else
|
||||
fail "$label :: $(echo "$body" | head -3 | tr '\n' ' ')"
|
||||
fi
|
||||
}
|
||||
|
||||
require_env AWS_ACCESS_KEY_ID
|
||||
require_env AWS_SECRET_ACCESS_KEY
|
||||
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION
|
||||
|
||||
echo "═══════════════════════════════════════════"
|
||||
echo " Shared SQS — Quick Test"
|
||||
echo " shared-SQS Quick Test"
|
||||
echo " Endpoint: $BASE_URL"
|
||||
echo " Queue: $QUEUE_NAME"
|
||||
echo "═══════════════════════════════════════════"
|
||||
echo ""
|
||||
|
||||
# 1. Создать очередь
|
||||
echo "▶ Создание очереди"
|
||||
echo "▶ CreateQueue"
|
||||
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)
|
||||
check "CreateQueue" "$OUT" "QueueUrl"
|
||||
QUEUE_URL=$(echo "$OUT" | python3 -c 'import sys,json; print(json.load(sys.stdin)["QueueUrl"])' 2>/dev/null || true)
|
||||
|
||||
# 2. Список очередей — должна быть наша
|
||||
echo ""
|
||||
echo "▶ Список очередей"
|
||||
echo "▶ ListQueues"
|
||||
OUT=$(aws sqs list-queues $ENDPOINT 2>&1)
|
||||
check "list-queues contains $QUEUE_NAME" "$OUT" "$QUEUE_NAME"
|
||||
check "ListQueues" "$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"
|
||||
echo "▶ GetQueueUrl"
|
||||
OUT=$(aws sqs get-queue-url --queue-name "$QUEUE_NAME" $ENDPOINT 2>&1)
|
||||
check "GetQueueUrl" "$OUT" "QueueUrl"
|
||||
|
||||
# 4. Получить сообщение
|
||||
echo ""
|
||||
echo "▶ Получение сообщения"
|
||||
echo "▶ SendMessage"
|
||||
OUT=$(aws sqs send-message --queue-url "$QUEUE_URL" --message-body "Hello Quick Test" $ENDPOINT 2>&1)
|
||||
check "SendMessage" "$OUT" "MessageId"
|
||||
|
||||
echo "▶ ReceiveMessage"
|
||||
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)
|
||||
check "ReceiveMessage" "$OUT" "Hello Quick Test"
|
||||
RECEIPT=$(echo "$OUT" | python3 -c 'import sys,json; msgs=json.load(sys.stdin).get("Messages", []); print(msgs[0]["ReceiptHandle"] if msgs else "")' 2>/dev/null || true)
|
||||
|
||||
# 5. Удалить сообщение (confirm delivery)
|
||||
echo ""
|
||||
echo "▶ Удаление сообщения"
|
||||
echo "▶ DeleteMessage"
|
||||
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
|
||||
aws sqs delete-message --queue-url "$QUEUE_URL" --receipt-handle "$RECEIPT" $ENDPOINT >/dev/null 2>&1 && ok "DeleteMessage" || fail "DeleteMessage"
|
||||
else
|
||||
TOTAL=$((TOTAL + 1)); FAIL=$((FAIL + 1))
|
||||
echo " [FAIL] delete-message — no receipt handle"
|
||||
fail "DeleteMessage (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 "▶ DeleteQueue"
|
||||
aws sqs delete-queue --queue-url "$QUEUE_URL" $ENDPOINT >/dev/null 2>&1 && ok "DeleteQueue" || fail "DeleteQueue"
|
||||
|
||||
# Итог
|
||||
echo ""
|
||||
echo "═══════════════════════════════════════════"
|
||||
echo " ИТОГО: $PASS/$TOTAL PASS, $FAIL FAIL"
|
||||
echo " RESULT: PASS=$PASS FAIL=$FAIL"
|
||||
echo "═══════════════════════════════════════════"
|
||||
[[ $FAIL -eq 0 ]] && exit 0 || exit 1
|
||||
[[ $FAIL -eq 0 ]]
|
||||
|
||||
Reference in New Issue
Block a user