35 / 55 · 19 Linux & Command Line · Bash Scripting for QA← prev⊞ allnext →☰ Read as one page
5.5Practical Script: Smoke Test Multiple Environments
#!/bin/bash
# run-smoke-tests.sh -- Health-check multiple environments
set -euo pipefail
ENVIRONMENTS=("dev" "staging" "preprod")
FAIL_COUNT=0
RESULTS=()
check_health() {
local env=$1
local url="https://${env}.example.com/health"
local status
local time
status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 30 "$url" 2>/dev/null || echo "000")
time=$(curl -s -o /dev/null -w "%{time_total}" --max-time 30 "$url" 2>/dev/null || echo "0")
if [ "$status" -eq 200 ]; then
RESULTS+=("PASS: $env (HTTP $status, ${time}s)")
return 0
else
RESULTS+=("FAIL: $env (HTTP $status, ${time}s)")
return 1
fi
}
echo "=== Environment Health Check ==="
echo "Date: $(date)"
echo "================================"
for env in "${ENVIRONMENTS[@]}"; do
check_health "$env" || FAIL_COUNT=$((FAIL_COUNT + 1))
done
echo ""
for result in "${RESULTS[@]}"; do
echo " $result"
done
echo ""
echo "Results: $((${#ENVIRONMENTS[@]} - FAIL_COUNT))/${#ENVIRONMENTS[@]} passed"
if [ "$FAIL_COUNT" -gt 0 ]; then
echo "STATUS: SOME ENVIRONMENTS DOWN"
exit 1
else
echo "STATUS: ALL ENVIRONMENTS HEALTHY"
exit 0
fi