#!/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