MCPcopy
hub / github.com/dnote/dnote / TestRateLimitedTransport

Function TestRateLimitedTransport

pkg/cli/client/client_test.go:183–216  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

181}
182
183func TestRateLimitedTransport(t *testing.T) {
184 var requestCount atomic.Int32
185 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
186 requestCount.Add(1)
187 w.WriteHeader(http.StatusOK)
188 }))
189 defer ts.Close()
190
191 transport := &rateLimitedTransport{
192 transport: http.DefaultTransport,
193 limiter: rate.NewLimiter(10, 5),
194 }
195 client := &http.Client{Transport: transport}
196
197 // Make 10 requests
198 start := time.Now()
199 numRequests := 10
200 for i := range numRequests {
201 req, _ := http.NewRequest("GET", ts.URL, nil)
202 resp, err := client.Do(req)
203 if err != nil {
204 t.Fatalf("Request %d failed: %v", i, err)
205 }
206 resp.Body.Close()
207 }
208 elapsed := time.Since(start)
209
210 // Burst of 5, then 5 more at 10 req/s = 500ms minimum
211 if elapsed < 500*time.Millisecond {
212 t.Errorf("Rate limit not enforced: 10 requests took %v, expected >= 500ms", elapsed)
213 }
214
215 assert.Equal(t, int(requestCount.Load()), 10, "request count mismatch")
216}
217
218func TestHTTPError(t *testing.T) {
219 t.Run("IsConflict returns true for 409", func(t *testing.T) {

Callers

nothing calls this directly

Calls 4

EqualFunction · 0.92
WriteHeaderMethod · 0.80
CloseMethod · 0.65
NowMethod · 0.65

Tested by

no test coverage detected