-
Notifications
You must be signed in to change notification settings - Fork 3
/
cache_test.go
56 lines (41 loc) · 1.21 KB
/
cache_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
45
46
47
48
49
50
51
52
53
54
55
56
package quotacontrol_test
import (
"context"
"sync/atomic"
"testing"
"github.com/0xsequence/quotacontrol"
"github.com/0xsequence/quotacontrol/proto"
"github.com/stretchr/testify/assert"
)
type mockCache struct {
count int32
}
func (s *mockCache) GetAccessQuota(ctx context.Context, accessKey string) (*proto.AccessQuota, error) {
atomic.AddInt32(&s.count, 1)
return &proto.AccessQuota{AccessKey: &proto.AccessKey{AccessKey: accessKey}}, nil
}
func (s *mockCache) SetAccessQuota(context.Context, *proto.AccessQuota) error {
return nil
}
func (s *mockCache) DeleteAccessQuota(context.Context, string) error {
return nil
}
func (s *mockCache) GetProjectQuota(context.Context, uint64) (*proto.AccessQuota, error) {
return nil, nil
}
func (s *mockCache) SetProjectQuota(context.Context, *proto.AccessQuota) error {
return nil
}
func (s *mockCache) DeleteProjectQuota(context.Context, uint64) error {
return nil
}
func TestLRU(t *testing.T) {
baseCache := mockCache{}
lru := quotacontrol.NewLRU(&baseCache, 2, 0)
ctx := context.Background()
_, err := lru.GetAccessQuota(ctx, "a")
assert.NoError(t, err)
_, err = lru.GetAccessQuota(ctx, "a")
assert.NoError(t, err)
assert.Equal(t, int32(1), baseCache.count)
}