test(bench): add automated benchmark scripts and document baseline metrics
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user