Files
openserp/core/rate_limiter_test.go

39 lines
892 B
Go
Raw Permalink Normal View History

package core
import (
"context"
"testing"
"time"
)
func TestSearchEngineOptionsGetRateLimiterCachesLimiterAndPaces(t *testing.T) {
opts := SearchEngineOptions{
RateRequests: 20,
RateTime: 1,
RateBurst: 1,
SelectorTimeout: 1,
}
limiter := opts.GetRateLimiter()
if limiter == nil {
t.Fatal("expected limiter")
}
if got := opts.GetRateLimiter(); got != limiter {
t.Fatal("expected GetRateLimiter to return the cached limiter")
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
if err := limiter.Wait(ctx); err != nil {
t.Fatalf("first wait failed: %v", err)
}
start := time.Now()
if err := limiter.Wait(ctx); err != nil {
t.Fatalf("second wait failed: %v", err)
}
if elapsed := time.Since(start); elapsed < 40*time.Millisecond {
t.Fatalf("second wait elapsed %s, want pacing near 50ms", elapsed)
}
}