Remove retry after test for the throttle middleware
This commit is contained in:
parent
b2fbf1f4d7
commit
71df0685f4
@ -112,7 +112,7 @@ func (s *throttle) setRetryAfterHeader(w http.ResponseWriter, ctxDone bool) {
|
|||||||
|
|
||||||
// Middleware is a throttle middleware that limits number of currently processed requests
|
// Middleware is a throttle middleware that limits number of currently processed requests
|
||||||
// at a time across all users. Note: Throttle is not a rate-limiter per user,
|
// at a time across all users. Note: Throttle is not a rate-limiter per user,
|
||||||
// instead it just puts a ceiling on the number of currentl in-flight requests
|
// instead it just puts a ceiling on the number of currently in-flight requests
|
||||||
// being processed from the point from where the Throttle middleware is mounted
|
// being processed from the point from where the Throttle middleware is mounted
|
||||||
func Middleware(opts ...Option) func(http.Handler) http.Handler {
|
func Middleware(opts ...Option) func(http.Handler) http.Handler {
|
||||||
t := &throttle{}
|
t := &throttle{}
|
||||||
|
@ -192,54 +192,3 @@ func TestThrottleMaximum(t *testing.T) {
|
|||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestThrottleRetryAfter(t *testing.T) {
|
|
||||||
throttle := Middleware(
|
|
||||||
SetLimit(10),
|
|
||||||
SetRetryAfterFn(func(_ bool) time.Duration { return time.Hour * 1 }),
|
|
||||||
)
|
|
||||||
|
|
||||||
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
time.Sleep(time.Second * 3)
|
|
||||||
|
|
||||||
_, err := w.Write([]byte("resp"))
|
|
||||||
require.NoError(t, err)
|
|
||||||
})
|
|
||||||
|
|
||||||
server := httptest.NewServer(throttle(handler))
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
client := http.Client{Timeout: time.Second * 60}
|
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
|
||||||
wg.Add(1)
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer res.Body.Close()
|
|
||||||
assert.Equal(t, http.StatusOK, res.StatusCode)
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
time.Sleep(time.Second * 1)
|
|
||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
|
||||||
wg.Add(1)
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer res.Body.Close()
|
|
||||||
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
|
||||||
assert.Equal(t, res.Header.Get("Retry-After"), "3600")
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
wg.Wait()
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user