Improve rate limiter latency logging and metrics

Kubernetes-commit: 2bcf99f05fdc47fb4bc3601b9134408483f59773
This commit is contained in:
jennybuckley
2020-02-13 13:32:12 -08:00
committed by Kubernetes Publisher
parent f772958f8a
commit 2d3138825e
3 changed files with 84 additions and 17 deletions

View File

@@ -31,6 +31,7 @@ import (
"os"
"reflect"
"strings"
"sync"
"syscall"
"testing"
"time"
@@ -2190,3 +2191,30 @@ func TestRequestPreflightCheck(t *testing.T) {
})
}
}
func TestThrottledLogger(t *testing.T) {
now := time.Now()
clock := clock.NewFakeClock(now)
globalThrottledLogger.clock = clock
logMessages := 0
for i := 0; i < 10000; i++ {
var wg sync.WaitGroup
wg.Add(100)
for j := 0; j < 100; j++ {
go func() {
if _, ok := globalThrottledLogger.attemptToLog(); ok {
logMessages++
}
wg.Done()
}()
}
wg.Wait()
now = now.Add(1 * time.Second)
clock.SetTime(now)
}
if a, e := logMessages, 1000; a != e {
t.Fatalf("expected %v log messages, but got %v", e, a)
}
}