Files
IPSExtractor/docs/plan_pruebas/scripts/measure_count_latency.sh
T

47 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# Mide latencia HTTP de count-api vía gateway para cada PDF en docs/plan_pruebas/data/
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
DATA_DIR="${COUNT_TEST_PDF_DIR:-$ROOT/docs/plan_pruebas/data}"
BASE_URL="${BASE_URL:-http://127.0.0.1:8189}"
OUT="${COUNT_LATENCY_CSV:-$ROOT/docs/plan_pruebas/informes/count_latency_$(date +%Y%m%d).csv}"
if [[ ! -d "$DATA_DIR" ]]; then
echo "No existe DATA_DIR=$DATA_DIR" >&2
exit 1
fi
shopt -s nullglob
pdfs=("$DATA_DIR"/*.pdf "$DATA_DIR"/*.PDF)
if [[ ${#pdfs[@]} -eq 0 ]]; then
echo "No hay PDFs en $DATA_DIR" >&2
exit 1
fi
mkdir -p "$(dirname "$OUT")"
echo "file,http_time_s,http_code,service_count,status" >"$OUT"
echo "BASE_URL=$BASE_URL"
echo "DATA_DIR=$DATA_DIR"
echo "Writing $OUT"
echo
for pdf in "${pdfs[@]}"; do
name="$(basename "$pdf")"
tmp="$(mktemp)"
# body to file; time_total and http_code on stderr via -w
code_time="$(curl -sS -o "$tmp" -w '%{http_code} %{time_total}' \
-F "files=@${pdf};type=application/pdf" \
"${BASE_URL}/count/v1/count" || echo "000 0")"
code="$(echo "$code_time" | awk '{print $1}')"
secs="$(echo "$code_time" | awk '{print $2}')"
# crude parse
scount="$(python3 -c "import json,sys; d=json.load(open(sys.argv[1])); print(d['results'][0].get('service_count','') if d.get('results') else '')" "$tmp" 2>/dev/null || echo "")"
status="$(python3 -c "import json,sys; d=json.load(open(sys.argv[1])); print(d['results'][0].get('status','') if d.get('results') else d.get('error','err'))" "$tmp" 2>/dev/null || echo "parse_error")"
echo "$name,$secs,$code,$scount,$status" | tee -a "$OUT"
rm -f "$tmp"
done
echo
echo "Done. CSV: $OUT"