缓存调整
This commit is contained in:
parent
e780c358d7
commit
cf6bf03d33
7
cache/vars.go
vendored
7
cache/vars.go
vendored
|
@ -42,10 +42,13 @@ func (c *VarCache[T]) IsExpired() bool {
|
|||
}
|
||||
|
||||
func (c *VarCache[T]) Flush() {
|
||||
mu := c.v.Load().mutex
|
||||
v := c.v.Load()
|
||||
mu := v.mutex
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
c.v.Delete()
|
||||
var vv T
|
||||
v.data = vv
|
||||
c.v.Store(v)
|
||||
}
|
||||
|
||||
func (c *VarCache[T]) GetCache(ctx context.Context, timeout time.Duration, params ...any) (T, error) {
|
||||
|
|
66
cache/vars_test.go
vendored
Normal file
66
cache/vars_test.go
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var cc = *NewVarCache(func(a ...any) (int, error) {
|
||||
return 1, nil
|
||||
}, time.Minute)
|
||||
|
||||
func TestVarCache_Flush(t *testing.T) {
|
||||
type testCase[T any] struct {
|
||||
name string
|
||||
c VarCache[T]
|
||||
}
|
||||
tests := []testCase[int]{
|
||||
{
|
||||
name: "1",
|
||||
c: cc,
|
||||
},
|
||||
}
|
||||
c := context.Background()
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
fmt.Println(tt.c.GetCache(c, time.Second))
|
||||
tt.c.Flush()
|
||||
fmt.Println(tt.c.GetCache(c, time.Second))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestVarCache_IsExpired(t *testing.T) {
|
||||
type testCase[T any] struct {
|
||||
name string
|
||||
c VarCache[T]
|
||||
want bool
|
||||
}
|
||||
tests := []testCase[int]{
|
||||
{
|
||||
name: "expired",
|
||||
c: cc,
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "not expired",
|
||||
c: func() VarCache[int] {
|
||||
v := *NewVarCache(func(a ...any) (int, error) {
|
||||
return 1, nil
|
||||
}, time.Minute)
|
||||
_, _ = v.GetCache(context.Background(), time.Second)
|
||||
return v
|
||||
}(),
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := tt.c.IsExpired(); got != tt.want {
|
||||
t.Errorf("IsExpired() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user