61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Script de medição de tempo de inicialização e memória RSS em idle do CyberCore Signer
|
|
PORT=21325
|
|
JAR_FILE="modules/cybercore-app/target/cybercore-signer.jar"
|
|
JAVA_BIN="${JAVA_HOME:-/home/claudecio/.jdks/jdk-25.0.4.1+1}/bin/java"
|
|
|
|
if [ ! -f "$JAR_FILE" ]; then
|
|
echo "Erro: JAR $JAR_FILE não encontrado. Execute ./mvnw package primeiro."
|
|
exit 1
|
|
fi
|
|
|
|
# Garante que a porta esteja livre antes de iniciar
|
|
fuser -k "${PORT}/tcp" 2>/dev/null || true
|
|
sleep 1
|
|
|
|
# Timestamp inicial em milissegundos
|
|
START_TIME=$(date +%s%3N)
|
|
|
|
# Inicia o agente em modo headless
|
|
"$JAVA_BIN" -jar "$JAR_FILE" --headless --port "$PORT" > /dev/null 2>&1 &
|
|
APP_PID=$!
|
|
|
|
# Aguarda até que o endpoint CCSP /status responda HTTP 200
|
|
MAX_WAIT_SECONDS=15
|
|
READY=0
|
|
while true; do
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:${PORT}/ccsp/v1/status" 2>/dev/null || echo "000")
|
|
if [ "$HTTP_CODE" = "200" ]; then
|
|
READY=1
|
|
break
|
|
fi
|
|
CURRENT_TIME=$(date +%s%3N)
|
|
ELAPSED=$((CURRENT_TIME - START_TIME))
|
|
if [ "$ELAPSED" -gt $((MAX_WAIT_SECONDS * 1000)) ]; then
|
|
echo "Timeout aguardando inicialização do servidor CCSP."
|
|
kill -9 "$APP_PID" 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
sleep 0.05
|
|
done
|
|
|
|
END_TIME=$(date +%s%3N)
|
|
STARTUP_MS=$((END_TIME - START_TIME))
|
|
|
|
# Aguarda 2 segundos para estabilização de memória em repouso (idle)
|
|
sleep 2
|
|
|
|
# Mede RSS via ps (em KB)
|
|
RSS_KB=$(ps -o rss= -p "$APP_PID" | tr -d ' ' || echo "0")
|
|
RSS_MB=$(awk "BEGIN {printf \"%.2f\", $RSS_KB / 1024}")
|
|
|
|
# Encerra o processo limpo
|
|
kill "$APP_PID" 2>/dev/null || true
|
|
wait "$APP_PID" 2>/dev/null || true
|
|
|
|
echo "STARTUP_MS=${STARTUP_MS}"
|
|
echo "RSS_KB=${RSS_KB}"
|
|
echo "RSS_MB=${RSS_MB}"
|