-
Notifications
You must be signed in to change notification settings - Fork 3.6k
/
Copy pathfixed_test.go
43 lines (34 loc) · 1010 Bytes
/
fixed_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
package limiter_test
import (
"context"
"testing"
"time"
"github.com/influxdata/influxdb/v2/pkg/limiter"
"github.com/stretchr/testify/require"
)
func TestFixed_Available(t *testing.T) {
f := limiter.NewFixed(10)
require.Equal(t, 10, f.Available())
require.NoError(t, f.Take(context.Background()))
require.Equal(t, 9, f.Available())
f.Release()
require.Equal(t, 10, f.Available())
}
func TestFixed_Timeout(t *testing.T) {
f := limiter.NewFixed(1)
require.NoError(t, f.Take(context.Background()))
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)
defer cancel()
err := f.Take(ctx)
require.Error(t, err)
require.Equal(t, "context deadline exceeded", err.Error())
}
func TestFixed_Canceled(t *testing.T) {
f := limiter.NewFixed(1)
require.NoError(t, f.Take(context.Background()))
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
cancel()
err := f.Take(ctx)
require.Error(t, err)
require.Equal(t, "context canceled", err.Error())
}