diff --git a/scripts/run_object_batch_bench_enhanced.sh b/scripts/run_object_batch_bench_enhanced.sh index 08163070e..73fb0a5e3 100755 --- a/scripts/run_object_batch_bench_enhanced.sh +++ b/scripts/run_object_batch_bench_enhanced.sh @@ -1322,10 +1322,21 @@ compare_baseline() { dr="N/A"; dl="N/A"; dt="N/A"; dp90="N/A"; dp99="N/A"; ne="N/A"; be="N/A"; de="N/A" if (br!="N/A" && n_req!="N/A" && br+0!=0) dr=sprintf("%.2f", ((n_req-br)/br)*100) - if (bl!="N/A" && n_lat!="N/A" && bl+0!=0) dl=sprintf("%.2f", ((n_lat-bl)/bl)*100) + if (bl!="N/A" && n_lat!="N/A") { + if (bl+0!=0) dl=sprintf("%.2f", ((n_lat-bl)/bl)*100) + else if (n_lat+0==0) dl="0.00" + } if (bt!="N/A" && n_thr!="N/A" && bt+0!=0) dt=sprintf("%.2f", ((n_thr-bt)/bt)*100) - if (bp90!="N/A" && n_p90!="N/A" && bp90+0!=0) dp90=sprintf("%.2f", ((n_p90-bp90)/bp90)*100) - if (bp99!="N/A" && n_p99!="N/A" && bp99+0!=0) dp99=sprintf("%.2f", ((n_p99-bp99)/bp99)*100) + # Warp v1 rounds sub-millisecond latency to 0s. Two zero readings are + # the same below-resolution bucket; a nonzero candidate remains invalid. + if (bp90!="N/A" && n_p90!="N/A") { + if (bp90+0!=0) dp90=sprintf("%.2f", ((n_p90-bp90)/bp90)*100) + else if (n_p90+0==0) dp90="0.00" + } + if (bp99!="N/A" && n_p99!="N/A") { + if (bp99+0!=0) dp99=sprintf("%.2f", ((n_p99-bp99)/bp99)*100) + else if (n_p99+0==0) dp99="0.00" + } if (n_ok!="N/A" && n_fail!="N/A" && n_ok+n_fail>0) ne=sprintf("%.2f", (n_fail/(n_ok+n_fail))*100) if (bok!="N/A" && bfail!="N/A" && bok+bfail>0) be=sprintf("%.2f", (bfail/(bok+bfail))*100) if (ne!="N/A" && be!="N/A") de=sprintf("%.2f", ne-be) diff --git a/scripts/test_object_batch_bench_enhanced.sh b/scripts/test_object_batch_bench_enhanced.sh index be8f90dca..3be561a31 100755 --- a/scripts/test_object_batch_bench_enhanced.sh +++ b/scripts/test_object_batch_bench_enhanced.sh @@ -76,6 +76,15 @@ cat >"$FAKE_WARP" <<'EOF' set -euo pipefail [[ " $* " == *" --analyze.v "* ]] [[ " $* " == *" --no-color "* ]] +if [[ "${FAKE_WARP_ZERO_LATENCY:-0}" == "1" ]]; then + cat <<'LOG' +Operation: GET. Concurrency: 8. Ran: 7s +Requests considered: 1000: + * Average: 160.00 MiB/s, 40960.00 obj/s + * Avg: 0s, 50%: 0s, 90%: 0s, 99%: 0s, Fastest: 0s, Slowest: 1ms, StdDev: 0s +LOG + exit 0 +fi cat <<'LOG' - PUT Average: 161 Obj/s, 5.0MiB/s; Current 161 Obj/s, 5.0MiB/s. Operation: GET. Concurrency: 64. Ran: 7s @@ -164,4 +173,28 @@ awk -F',' ' END { exit found ? 0 : 1 } ' "${TMP_DIR}/fake-warp-candidate/baseline_compare.csv" +for leg in baseline candidate; do + zero_args=( + --tool warp + --endpoint http://127.0.0.1:9000 + --access-key test-access + --secret-key test-secret + --sizes 4KiB + --rounds 1 + --retry-per-round 1 + --cooldown-secs 0 + --duration 1s + --out-dir "${TMP_DIR}/fake-warp-zero-${leg}" + --warp-bin "$FAKE_WARP" + ) + if [[ "$leg" == "candidate" ]]; then + zero_args+=(--baseline-csv "${TMP_DIR}/fake-warp-zero-baseline/median_summary.csv") + fi + FAKE_WARP_ZERO_LATENCY=1 "$RUNNER" "${zero_args[@]}" >/dev/null 2>&1 +done + +"${SCRIPT_DIR}/hotpath_warp_ab_gate.sh" \ + --compare-csv "${TMP_DIR}/fake-warp-zero-candidate/baseline_compare.csv" \ + --require-tail-error >/dev/null + echo "object batch benchmark enhanced tests passed"