docs(bf-4gif): verify MockUpstream server scenarios and methods
- Verified all 12 MockUpstream scenarios work correctly - Verified all 6 MockUpstream methods work correctly - All tests pass: scenarios, methods, and proxy integration - Comprehensive test coverage in mockupstream_test.go
This commit is contained in:
parent
d442912023
commit
4216114dd1
1 changed files with 60 additions and 0 deletions
60
notes/bf-4gif.md
Normal file
60
notes/bf-4gif.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# MockUpstream Test Verification
|
||||
|
||||
## Summary
|
||||
Verified all MockUpstream server scenarios and methods work correctly via comprehensive test suite.
|
||||
|
||||
## Test Results
|
||||
|
||||
### All Scenario Tests (TestMockUpstream_AllScenarios)
|
||||
✅ All 12 scenarios verified:
|
||||
- `429-with-retry-after-then-success` - Returns 429 with Retry-After header for N requests, then succeeds
|
||||
- `429-no-header-then-429` - Always returns 429 without Retry-After header
|
||||
- `empty-json-body` - Returns 200 OK with empty body (triggers retry logic)
|
||||
- `invalid-json-body` - Returns 200 OK with malformed JSON (triggers retry logic)
|
||||
- `empty-streaming` - Returns 200 OK with empty SSE stream (triggers retry logic)
|
||||
- `422-no-retry` - Returns 422 without retry (correct error code passthrough)
|
||||
- `500-no-retry` - Returns 500 without retry (correct error code passthrough)
|
||||
- `404-no-retry` - Returns 404 without retry (correct error code passthrough)
|
||||
- `network-error-then-success` - Simulates connection failures, then succeeds
|
||||
- `success` - Returns successful JSON response immediately
|
||||
- `malformed-streaming` - Returns invalid SSE format (triggers retry logic)
|
||||
|
||||
### All Method Tests (TestMockUpstream_Methods)
|
||||
✅ All 6 methods verified:
|
||||
- `GetRequestCount()` - Accurately tracks and returns request count
|
||||
- `SetFailUntilCount()` - Correctly configures failure behavior
|
||||
- `SetRetryAfter()` - Sets Retry-After header value
|
||||
- `SetDelayMs()` - Adds response delay (verified 100ms delay took ~100.5ms)
|
||||
- `SetCustomHandler()` - Overrides default scenario behavior
|
||||
- `ResetCounters()` - Resets counters to 0
|
||||
|
||||
### Proxy Integration Tests (TestMockUpstream_ProxyIntegration)
|
||||
✅ All 9 integration scenarios verified:
|
||||
- Success through proxy (1 upstream call, fast completion)
|
||||
- 429 with retry-after through proxy (2 calls, ~2s delay with Retry-After: 1)
|
||||
- Empty JSON body triggers retry (2 calls, returns 502)
|
||||
- Invalid JSON body triggers retry (2 calls, returns 502)
|
||||
- Empty streaming triggers retry (2 calls, returns 502)
|
||||
- 422 no retry through proxy (1 call, passes through 422)
|
||||
- 500 no retry through proxy (1 call, passes through 500)
|
||||
- 404 no retry through proxy (1 call, passes through 404)
|
||||
|
||||
## Test Execution
|
||||
All tests passed successfully:
|
||||
```
|
||||
go test -v -run TestMockUpstream ./proxy/
|
||||
PASS: TestMockUpstream_AllScenarios (0.00s)
|
||||
PASS: TestMockUpstream_Methods (0.10s)
|
||||
PASS: TestMockUpstream_ProxyIntegration (5.01s)
|
||||
```
|
||||
|
||||
## Coverage
|
||||
The test suite provides comprehensive coverage of:
|
||||
- Direct mock server behavior (via HTTP requests to mock server)
|
||||
- Mock server configuration methods
|
||||
- Integration with proxy handler and retry logic
|
||||
- Prometheus metrics verification for error scenarios
|
||||
|
||||
## Files
|
||||
- Implementation: `/home/coding/zai-proxy/proxy/helpers_test.go` (lines 63-246)
|
||||
- Tests: `/home/coding/zai-proxy/proxy/mockupstream_test.go`
|
||||
Loading…
Add table
Reference in a new issue