Atlas › Test
TestClockedRateLimiter_Wait_NoBurst
Exact test identity: go.temporal.io/server/common/quotas/TestClockedRateLimiter_Wait_NoBurst
- Package
go.temporal.io/server/common/quotas
- Suite / test hierarchy
TestClockedRateLimiter_Wait_NoBurst
- Test
TestClockedRateLimiter_Wait_NoBurst
- Introduced at
- TestClockedRateLimiter_Wait_NoBurst Frontier kind: Test frontier
- Covered ranges
- 7
- Covered lines
- 29
- Covered files
- 2
Covered source
Expand a file to inspect source; the > gutter marks covered lines.
go.temporal.io/server/common/quotas/clocked_rate_limiter.go 18 covered LOC · 5 ranges
Open complete file
25
)
26
27
>
func NewClockedRateLimiter(rateLimiter *rate.Limiter, timeSource clock.TimeSource) ClockedRateLimiter {
clocked_rate_limiter.go
28
>
return ClockedRateLimiter{
29
>
rateLimiter: rateLimiter,
30
>
timeSource: timeSource,
31
>
recycleCh: make(chan struct{}),
32
>
}
33
>
}
34
35
func (l ClockedRateLimiter) Allow() bool {
48
}
49
51
>
return r.reservation.OK()
52
>
}
53
54
func (r ClockedReservation) Delay() time.Duration {
77
}
78
80
>
return l.WaitN(ctx, 1)
81
>
}
82
83
// WaitN is the only method that is different from rate.Limiter. We need to fully reimplement this method because
84
// the original method uses time.Now(), and does not allow us to pass in a time.Time. Fortunately, it can be built on
85
// top of ReserveN. However, there are some optimizations that we can make.
87
>
reservation := ClockedReservation{l.rateLimiter.ReserveN(l.timeSource.Now(), token), l.timeSource}
88
>
if !reservation.OK() {
90
>
}
91
92
waitDuration := reservation.Delay()
go.temporal.io/server/common/clock/event_time_source.go 11 covered LOC · 2 ranges
Open complete file
39
40
// NewEventTimeSource returns a EventTimeSource with the current time set to Unix zero: 1970-01-01 00:00:00 +0000 UTC.
42
>
return &EventTimeSource{
43
>
now: time.Unix(0, 0),
44
>
}
45
>
}
46
47
// Some clients depend on the fact that the runtime's timers do _not_ run synchronously.
55
56
// Now return the current time.
58
>
ts.mu.RLock()
59
>
defer ts.mu.RUnlock()
60
>
61
>
return ts.now
62
>
}
63
64
func (ts *EventTimeSource) Since(t time.Time) time.Duration {