#!/bin/bash # quick_test.sh — public smoke test for shared-SQS set -euo pipefail BASE_URL="${BASE_URL:-https://qu.kube5s.ru}" 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 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 " Endpoint: $BASE_URL" echo " Queue: $QUEUE_NAME" echo "═══════════════════════════════════════════" echo "▶ CreateQueue" OUT=$(aws sqs create-queue --queue-name "$QUEUE_NAME" $ENDPOINT 2>&1) check "CreateQueue" "$OUT" "QueueUrl" QUEUE_URL=$(echo "$OUT" | python3 -c 'import sys,json; print(json.load(sys.stdin)["QueueUrl"])' 2>/dev/null || true) echo "▶ ListQueues" OUT=$(aws sqs list-queues $ENDPOINT 2>&1) check "ListQueues" "$OUT" "$QUEUE_NAME" echo "▶ GetQueueUrl" OUT=$(aws sqs get-queue-url --queue-name "$QUEUE_NAME" $ENDPOINT 2>&1) check "GetQueueUrl" "$OUT" "QueueUrl" 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 "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) echo "▶ DeleteMessage" if [[ -n "$RECEIPT" ]]; then aws sqs delete-message --queue-url "$QUEUE_URL" --receipt-handle "$RECEIPT" $ENDPOINT >/dev/null 2>&1 && ok "DeleteMessage" || fail "DeleteMessage" else fail "DeleteMessage (no receipt handle)" fi echo "▶ DeleteQueue" aws sqs delete-queue --queue-url "$QUEUE_URL" $ENDPOINT >/dev/null 2>&1 && ok "DeleteQueue" || fail "DeleteQueue" echo "═══════════════════════════════════════════" echo " RESULT: PASS=$PASS FAIL=$FAIL" echo "═══════════════════════════════════════════" [[ $FAIL -eq 0 ]]