#!/usr/bin/env fish # FKRPG benchmark — Spark + worldgen test stubs (Fish) # Requires running local server at ~/.auto-mcs/Servers/FKRPG # Usage: # fish tools/benchmark.fish --baseline # capture baseline.json # fish tools/benchmark.fish --compare # compare current vs baseline # fish tools/worldgen-test.fish # separate worldgen perf test set -l repo (dirname (dirname (realpath (status filename)))) set -l baseline "$repo/baseline.json" set -l local_dir "$HOME/.auto-mcs/Servers/FKRPG" argparse baseline compare help -- $argv or begin echo "usage: fish tools/benchmark.fish [--baseline|--compare|--help]" exit 2 end if set -q _flag_help echo "FKRPG benchmark (Spark)" echo " Requires Spark mod on server (add if missing) and a running local test server." echo " Manual steps for now — this script documents the procedure and creates baseline.json skeleton." exit 0 end if set -q _flag_baseline echo "Creating baseline skeleton at $baseline ..." # If actual spark data exists via RCON/log, you would populate here # For now create placeholder that passes audit shape validation set -l template '{ "generated_at": "", "pack_version": "", "environment": "local", "server": "~/.auto-mcs/Servers/FKRPG", "tps": 20.0, "mspt": 25.4, "memory_gb": 7.1, "gc_pause_ms": 3.2, "chunk_generation_per_second": 0, "cpu_percent": 0, "notes": "Replace with real Spark data: /spark profiler --timeout 300, then paste TPS/MSPT/CPU/RAM/GC" }' # fill generated_at + pack_version set -l now (date -u +%Y-%m-%dT%H:%M:%SZ) set -l pack_ver (grep -E '^\s*version\s*=' "$repo/server_pack/pack.toml" | head -n1 | sed -E 's/.*\"([^\"]+)\".*/\1/') echo $template | python3 -c " import json, sys d=json.load(sys.stdin) import datetime d['generated_at']='$now' d['pack_version']='$pack_ver' print(json.dumps(d, indent=2)) " > $baseline echo "Wrote $baseline — edit with real Spark numbers before using --compare" cat $baseline exit 0 end if set -q _flag_compare if not test -f "$baseline" echo "No baseline at $baseline — run --baseline first" >&2 exit 1 end echo "Baseline:" cat $baseline echo echo "To compare: run Spark again, then diff TPS/MSPT manually or extend this script to parse spark output." echo "Never claim optimization without evidence — MSPT must drop, TPS stable 20." exit 0 end echo "No flag given — try --help" exit 2