mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-24 06:07:48 +00:00
Inject clock through flowcontrol
Kubernetes-commit: 3153ca2815c5a596adec770392248573c7e448b7
This commit is contained in:
parent
0c8efe21e2
commit
7bef0aa41b
@ -51,6 +51,22 @@ type tokenBucketRateLimiter struct {
|
|||||||
// The maximum number of tokens in the bucket is capped at 'burst'.
|
// The maximum number of tokens in the bucket is capped at 'burst'.
|
||||||
func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter {
|
func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter {
|
||||||
limiter := ratelimit.NewBucketWithRate(float64(qps), int64(burst))
|
limiter := ratelimit.NewBucketWithRate(float64(qps), int64(burst))
|
||||||
|
return newTokenBucketRateLimiter(limiter, qps)
|
||||||
|
}
|
||||||
|
|
||||||
|
// An injectable, mockable clock interface.
|
||||||
|
type Clock interface {
|
||||||
|
ratelimit.Clock
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTokenBucketRateLimiterWithClock is identical to NewTokenBucketRateLimiter
|
||||||
|
// but allows an injectable clock, for testing.
|
||||||
|
func NewTokenBucketRateLimiterWithClock(qps float32, burst int, clock Clock) RateLimiter {
|
||||||
|
limiter := ratelimit.NewBucketWithRateAndClock(float64(qps), int64(burst), clock)
|
||||||
|
return newTokenBucketRateLimiter(limiter, qps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func newTokenBucketRateLimiter(limiter *ratelimit.Bucket, qps float32) RateLimiter {
|
||||||
return &tokenBucketRateLimiter{
|
return &tokenBucketRateLimiter{
|
||||||
limiter: limiter,
|
limiter: limiter,
|
||||||
qps: qps,
|
qps: qps,
|
||||||
|
Loading…
Reference in New Issue
Block a user