#!/usr/bin/env bash
# README benchmark: valkey-benchmark against a local valkey-server built at this commit
# (2,000,000 requests, 50 clients, pipeline 16, SET/GET/LPUSH/LPOP). Metrics are parsed from its CSV.
set -o pipefail
PORT=6390
src/valkey-server --port $PORT --save "" --appendonly no --daemonize no > ../server.log 2>&1 &
SERVER=$!
until src/valkey-cli -p $PORT ping 2>/dev/null | grep -q PONG; do sleep 0.2; done
echo "KVERITAS_PHASE name=benchmark"
src/valkey-benchmark -p $PORT -n 2000000 -c 50 -P 16 -t set,get,lpush,lpop --csv | tee ../bench.csv
RC=$?
src/valkey-cli -p $PORT shutdown nosave >/dev/null 2>&1
wait $SERVER
python3 - ../bench.csv <<'PY'
import csv, sys
for row in csv.DictReader(open(sys.argv[1])):
    t = row["test"].lower()
    print(f"KVERITAS_METRIC name={t}_rps value={float(row['rps']):.6g}")
    print(f"KVERITAS_METRIC name={t}_p50_ms value={float(row['p50_latency_ms']):.6g}")
    print(f"KVERITAS_METRIC name={t}_p99_ms value={float(row['p99_latency_ms']):.6g}")
    print(f"KVERITAS_CLAIM metric={t}_rps value={float(row['rps']):.6g}")
PY
exit $RC
