generated from denpeshkov/go-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbucket_test.go
44 lines (38 loc) · 1.3 KB
/
bucket_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package throttle
import (
"context"
"errors"
"testing"
"time"
)
func TestInvalidLimit_BucketLimiter(t *testing.T) {
t.Run("invalid interval", func(t *testing.T) {
intervals := []time.Duration{-1, 0, 999 * time.Nanosecond}
for _, in := range intervals {
lim := Limit{Events: 1, Interval: in}
l, err := NewBucketLimiter(nil, lim, 1)
if !errors.Is(err, errInvalidInterval) {
t.Fatalf("NewBucketLimiter(%v) error %v, want %v", lim, err, errInvalidInterval)
}
if err := l.SetLimit(context.Background(), lim); !errors.Is(err, errInvalidInterval) {
t.Fatalf("SetLimit(%v) error %v, want %v", lim, err, errInvalidInterval)
}
}
})
t.Run("invalid events", func(t *testing.T) {
lim := Limit{Events: -1, Interval: 1 * time.Second}
l, err := NewBucketLimiter(nil, lim, 1)
if !errors.Is(err, errInvalidEvents) {
t.Fatalf("NewBucketLimiter(%v) error %v, want %v", lim, err, errInvalidEvents)
}
if err := l.SetLimit(context.Background(), lim); !errors.Is(err, errInvalidEvents) {
t.Fatalf("SetLimit(%v) error %v, want %v", lim, err, errInvalidEvents)
}
})
}
func TestInvalidBurst_BucketLimiter(t *testing.T) {
lim := Limit{Events: 1, Interval: 1 * time.Second}
if _, err := NewBucketLimiter(nil, lim, -1); err == nil {
t.Fatalf("NewBucketLimiter(%v, %v) didn't fail", lim, -1)
}
}