- 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
2.7 KiB
2.7 KiB
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 succeeds429-no-header-then-429- Always returns 429 without Retry-After headerempty-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 succeedssuccess- Returns successful JSON response immediatelymalformed-streaming- Returns invalid SSE format (triggers retry logic)
All Method Tests (TestMockUpstream_Methods)
✅ All 6 methods verified:
GetRequestCount()- Accurately tracks and returns request countSetFailUntilCount()- Correctly configures failure behaviorSetRetryAfter()- Sets Retry-After header valueSetDelayMs()- Adds response delay (verified 100ms delay took ~100.5ms)SetCustomHandler()- Overrides default scenario behaviorResetCounters()- 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