Files
shared-SQS/quick_test.sh
T

90 lines
3.0 KiB
Bash
Executable File

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