Skip to content

test(provisioner): drive client.go to 98.1% coverage#137

Merged
mastermanas805 merged 1 commit into
masterfrom
coverage/api-provisioner-client-95
May 21, 2026
Merged

test(provisioner): drive client.go to 98.1% coverage#137
mastermanas805 merged 1 commit into
masterfrom
coverage/api-provisioner-client-95

Conversation

@mastermanas805
Copy link
Copy Markdown
Member

Summary

  • Drives the internal/provisioner gRPC client to 98.1% line coverage (was 52.8%; brief target ≥95%).
  • New file internal/provisioner/client_cov_test.go only — zero production-code changes.

Coverage delta (gofunc)

function before after
NewClient 0% 83.3%
Breaker 0% 100%
HealthCheck 0% 100%
ctxWithAuth 75% 75%
ctxWithTeamID 66.7% 100%
provisionTimeout 66.7% 100%
ProvisionPostgres 100% 100%
ProvisionCache 83.3% 100%
ProvisionNoSQL 83.3% 100%
ProvisionQueue 0% 100%
StorageBytes 0% 100%
DeprovisionResource 0% 100%
callWithBreaker 100% 100%
shouldRecordBreakerErr 100% 100%
total 52.8% 98.1%

What the new tests do

  • Bufconn-backed in-process gRPC server with mock ProvisionerServiceServer + standard grpc.health.v1.Health server.
  • NewClient constructor + OnOpen logger closure (tripping the breaker).
  • HealthCheck: SERVING / NOT_SERVING / RPC failure / nil receiver / nil conn.
  • ctxWithAuth / ctxWithTeamID: empty + populated team-ID branches; auth header forwarded byte-for-byte.
  • provisionTimeout: every tier (pro/team/growth → 5m; anonymous/hobby/hobby_plus/free/empty → 4m).
  • Every RPC wrapper (ProvisionPostgres, ProvisionCache, ProvisionNoSQL, ProvisionQueue, StorageBytes, DeprovisionResource) tested for both success AND wrapped-error branches (using codes.Unavailable, Internal, Unknown, ResourceExhausted).
  • nil-breaker fast path in callWithBreaker exercised via every RPC wrapper.

Remaining gaps (intentional)

  • NewClient 83.3%: grpc.NewClient error return is not reachable from caller-side (no malformed inputs trigger it).
  • ctxWithAuth 75%: the rid != "" branch requires the middleware's unexported context key — exercised end-to-end in e2e/.

Test plan

  • go test ./internal/provisioner -coverprofile=/tmp/cov.out -count=1 → PASS, 98.1%
  • go vet ./internal/provisioner/... → clean
  • CI green

🤖 Generated with Claude Code

Adds bufconn-backed gRPC harness with a mock ProvisionerServiceServer + the
standard gRPC health-checking service. Drives every previously-uncovered
exported method: NewClient (constructor + OnOpen logger), Breaker accessor,
HealthCheck (SERVING / NOT_SERVING / RPC error / nil receiver), ctxWithAuth
+ ctxWithTeamID (empty + set branches), provisionTimeout (every tier),
ProvisionCache / ProvisionNoSQL / ProvisionQueue / StorageBytes /
DeprovisionResource (success + error branches each), and the nil-breaker
fast-path in callWithBreaker for every RPC wrapper.

Coverage: 52.8% → 98.1% (gofunc-level: 11 of 14 functions at 100%; NewClient
83.3% because the grpc.NewClient error return is impossible to trigger from
caller-side; ctxWithAuth 75% because the request-id branch requires the
unexported middleware context key — exercised end-to-end in e2e/ tests).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 merged commit 3ffa1d5 into master May 21, 2026
11 checks passed
@mastermanas805 mastermanas805 deleted the coverage/api-provisioner-client-95 branch May 21, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant