Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
23
.gitea/workflows/ci.yml
Normal file
23
.gitea/workflows/ci.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: "1.24"
|
||||
|
||||
- name: Vet
|
||||
run: go vet ./...
|
||||
|
||||
- name: Test
|
||||
run: go test -race -count=1 ./...
|
||||
30
CLAUDE.md
Normal file
30
CLAUDE.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# CLAUDE.md — httpx
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
go build ./... # compile
|
||||
go test ./... # all tests
|
||||
go test -race ./... # tests with race detector
|
||||
go test -v -run TestName ./package/ # single test
|
||||
go vet ./... # static analysis
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Module**: `git.codelab.vc/pkg/httpx`, Go 1.24, zero external dependencies
|
||||
- **Core pattern**: middleware is `func(http.RoundTripper) http.RoundTripper`
|
||||
- **Chain assembly order** (client.go): Logging → User MW → Retry → CB → Balancer → Transport
|
||||
- Retry wraps CB+Balancer so each attempt can hit a different endpoint
|
||||
- **Circuit breaker** is per-host (`sync.Map` of host → Breaker)
|
||||
- **Sentinel errors**: canonical values live in sub-packages, root package re-exports as aliases
|
||||
- **balancer.Transport** returns `(Middleware, *Closer)` — Closer must be tracked for health checker shutdown
|
||||
- **Client.Close()** stops the health checker goroutine
|
||||
|
||||
## Conventions
|
||||
|
||||
- Functional options for all configuration
|
||||
- Test helpers: `mockTransport(fn)` wrapping `middleware.RoundTripperFunc`
|
||||
- No external test frameworks — stdlib only
|
||||
- Thread safety required (`sync.Mutex`/`atomic`)
|
||||
- `internal/clock` for deterministic time testing
|
||||
Reference in New Issue
Block a user