Add authz guard chain and server cold-start benchmarks#501
Merged
Conversation
Add two benchmark suites gating beta readiness (issue #474): - internal/authz/guard_bench_test.go: three scenarios covering the TenantScopeGuard + RolePolicyGuard + FieldLockGuard pipeline — two-guard path, full pipeline with context-cache hit, and full pipeline with store lookup. All three allocate zero bytes per op. - cmd/server/main_bench_test.go: BenchmarkServerColdStart measures wall-clock time from the start of in-memory store initialization through the first gRPC health-check RPC returning SERVING (~1 ms on dev hardware). Uses grpc.WaitForReady so the measurement is stable without sleep-based synchronization. - internal/server/server.go: expose Addr() so the cold-start bench can resolve the OS-assigned port after New("0", ...). - .github/workflows/ci.yml: add a bench job that runs both suites with -benchtime=5s and uploads bench.txt as a SHA-keyed artifact for tracking over time. Job is an allowed-skip in the check gate (informational, no regression threshold yet). Closes #474 Co-Authored-By: Claude <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
BenchmarkChain_TenantAndRole— 2-guard pipeline (TenantScopeGuard + RolePolicyGuard), zero allocations per opBenchmarkChain_FullPipeline_CacheHit— full 3-guard pipeline with field locks from context cache, zero allocations per opBenchmarkChain_FullPipeline_StoreLookup— full 3-guard pipeline with stub store lookup, zero allocations per opBenchmarkServerColdStart— in-memory store init →server.New→ service registration →Serve→ first health-check RPC (~1 ms on dev hardware)make testpasses (all packages, race detector enabled)golangci-lintcleanCloses #474
🤖 Generated with Claude Code