58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Teste de Stress para verificar resiliência do Ingress
|
|
# Uso: ./teste-stress.sh [URL] [NUM_REQUESTS]
|
|
|
|
URL="${1:-http://localhost:3000}"
|
|
TOTAL="${2:-50}"
|
|
TIMEOUT=120
|
|
|
|
echo "============================================"
|
|
echo " Teste de Stress - Alta Disponibilidade"
|
|
echo "============================================"
|
|
echo "URL: $URL"
|
|
echo "Requisições: $TOTAL"
|
|
echo "Timeout: ${TIMEOUT}s"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
SUCCESS=0
|
|
FAIL=0
|
|
|
|
for i in $(seq 1 $TOTAL); do
|
|
RESULT=$(curl -s -m $TIMEOUT "$URL" 2>&1)
|
|
|
|
if echo "$RESULT" | grep -q "Req ->"; then
|
|
SUCCESS=$((SUCCESS + 1))
|
|
echo -e "[$i/$TOTAL] \033[32mOK\033[0m - $RESULT"
|
|
else
|
|
FAIL=$((FAIL + 1))
|
|
# Extrai apenas o título do erro se for HTML
|
|
if echo "$RESULT" | grep -q "<title>"; then
|
|
ERROR=$(echo "$RESULT" | grep -o "<title>[^<]*</title>" | sed 's/<[^>]*>//g')
|
|
else
|
|
ERROR="$RESULT"
|
|
fi
|
|
echo -e "[$i/$TOTAL] \033[31mFALHA\033[0m - $ERROR"
|
|
fi
|
|
|
|
sleep 0.2
|
|
done
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo " Resultado Final"
|
|
echo "============================================"
|
|
PERCENT=$((SUCCESS * 100 / TOTAL))
|
|
echo -e "Sucesso: \033[32m$SUCCESS\033[0m / $TOTAL ($PERCENT%)"
|
|
echo -e "Falhas: \033[31m$FAIL\033[0m / $TOTAL"
|
|
echo "============================================"
|
|
|
|
if [ $FAIL -eq 0 ]; then
|
|
echo -e "\033[32m*** ZERO FALHAS! ***\033[0m"
|
|
elif [ $PERCENT -ge 95 ]; then
|
|
echo -e "\033[33mBom resultado (>= 95%)\033[0m"
|
|
else
|
|
echo -e "\033[31mResultado abaixo do esperado\033[0m"
|
|
fi
|