]> git.ipfire.org Git - thirdparty/wireguard-go.git/commit
ratelimiter: use a fake clock in tests and style cleanups
authorDavid Crawshaw <crawshaw@tailscale.com>
Sun, 8 Dec 2019 23:22:31 +0000 (18:22 -0500)
committerDavid Crawshaw <david@zentus.com>
Mon, 30 Mar 2020 07:38:36 +0000 (18:38 +1100)
commit9cd8909df2ad882b81b611b4656020aeceb6c9b2
tree3e09b88bfdf9069d96b4c98ef39aeaea7b5b1d3a
parentae88e2a2cda0faab68ad667223cd26ffd54d1bee
ratelimiter: use a fake clock in tests and style cleanups

The existing test would occasionally flake out with:

--- FAIL: TestRatelimiter (0.12s)
    ratelimiter_test.go:99: Test failed for 127.0.0.1 , on: 7 ( not having refilled enough ) expected: false got: true
FAIL
FAIL    golang.zx2c4.com/wireguard/ratelimiter  0.171s

The fake clock also means the tests run much faster, so
testing this package with -count=1000 now takes < 100ms.

While here, several style cleanups. The most significant one
is unembeding the sync.Mutex fields in the rate limiter objects.
Embedded as they were, the lock methods were accessible
outside the ratelimiter package. As they aren't needed externally,
keep them internal to make them easier to reason about.

Passes `go test -race -count=10000 ./ratelimiter`

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
ratelimiter/ratelimiter.go
ratelimiter/ratelimiter_test.go