Files
llmgw/internal/cli/bench_overhead_test.go
T
Ilker ManapandClaude Opus 5.5 688b205604
CI / test (push) Successful in 8m56s
What llmgw adds to a request, measured: ctl bench overhead
An engine that answers at once and the gateway in front of it, in one
process on loopback, given the same load straight and through the gateway:
bare, with authentication and accounting, and with the guardrails' pattern
checks. It reports p50 and p99, what the gateway added, and a rough CPU
per thousand requests.

On an Apple M5 at 100 to 2,000 requests a second (10 s a step, 72,000
requests, none failed), the gateway added 0.05–0.42 ms at p50 and at most
0.49 ms at p99. That is now in the README, with how it was measured and
why the CPU figure is rough. CI runs a one-second version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 00:23:26 +02:00

34 lines
944 B
Go

package cli
import (
"bytes"
"strings"
"testing"
"time"
)
// The short version, so CI sees the gateway's overhead on every change: every
// mode answers every request, and what the gateway adds is measured, not
// guessed. No bound is asserted on it, as CI's machines vary; the table is
// in the test's log.
func TestTheGatewaysOverheadIsMeasured(t *testing.T) {
steps, err := runOverhead(t.Context(), []int{50}, time.Second)
if err != nil {
t.Fatal(err)
}
if len(steps) != len(overheadModes) {
t.Fatalf("%d steps for %d modes", len(steps), len(overheadModes))
}
for _, s := range steps {
if s.Sent == 0 || s.Failed > 0 || s.P50 <= 0 || s.P99 < s.P50 {
t.Errorf("%s: sent %d failed %d p50 %s p99 %s", s.Mode, s.Sent, s.Failed, s.P50, s.P99)
}
}
var b bytes.Buffer
printOverhead(&b, steps)
if !strings.Contains(b.String(), "gateway+auth+guard") {
t.Errorf("table:\n%s", b.String())
}
t.Logf("\n%s", b.String())
}