@@ -11,19 +11,25 @@ import (
11
11
"github.com/redis/go-redis/v9"
12
12
"github.com/stretchr/testify/assert"
13
13
14
+ "github.com/go-kratos-ecosystem/components/v2/cache"
14
15
"github.com/go-kratos-ecosystem/components/v2/codec/json"
15
16
"github.com/go-kratos-ecosystem/components/v2/locker"
16
17
)
17
18
18
- func createRedis () redis.UniversalClient {
19
- return redis .NewClient (& redis.Options {
19
+ var ctx = context .Background ()
20
+
21
+ func createRedis (t * testing.T ) redis.UniversalClient {
22
+ client := redis .NewClient (& redis.Options {
20
23
Addr : ":6379" ,
21
24
})
25
+ t .Cleanup (func () {
26
+ client .FlushAll (ctx )
27
+ })
28
+ return client
22
29
}
23
30
24
31
func TestRedis_Base (t * testing.T ) {
25
- store := New (createRedis (), Prefix ("cache:redis" ), Codec (json .Codec ))
26
- ctx := context .Background ()
32
+ store := New (createRedis (t ), Prefix ("cache:redis" ), Codec (json .Codec ))
27
33
28
34
ok1 , err := store .Put (ctx , "test" , "test" , time .Second )
29
35
assert .Nil (t , err )
@@ -45,8 +51,7 @@ func TestRedis_Base(t *testing.T) {
45
51
}
46
52
47
53
func TestRedis_IncrAndDecr (t * testing.T ) {
48
- store := New (createRedis (), Prefix ("cache:redis" ))
49
- ctx := context .Background ()
54
+ store := New (createRedis (t ), Prefix ("cache:redis" ))
50
55
51
56
_ , err := store .Forget (ctx , "test:inc" )
52
57
assert .Nil (t , err )
@@ -62,12 +67,25 @@ func TestRedis_IncrAndDecr(t *testing.T) {
62
67
v3 , err := store .Decrement (ctx , "test:inc" , 1 )
63
68
assert .Nil (t , err )
64
69
assert .Equal (t , 10 , v3 )
70
+
71
+ // put another type
72
+ ok1 , err := store .Put (ctx , "test:inc:type" , "test" , time .Second * 3 )
73
+ assert .Nil (t , err )
74
+ assert .True (t , ok1 )
75
+
76
+ v4 , err := store .Increment (ctx , "test:inc:type" , 1 )
77
+ t .Log (err )
78
+ assert .Error (t , err )
79
+ assert .Zero (t , v4 )
80
+
81
+ v5 , err := store .Decrement (ctx , "test:inc:type" , 1 )
82
+ assert .Error (t , err )
83
+ assert .Zero (t , v5 )
65
84
}
66
85
67
86
func TestRedis_Forever (t * testing.T ) {
68
- client := createRedis ()
69
- store := New (createRedis (), Prefix ("cache:redis" ))
70
- ctx := context .Background ()
87
+ client := createRedis (t )
88
+ store := New (createRedis (t ), Prefix ("cache:redis" ))
71
89
72
90
ok1 , err := store .Forever (ctx , "test:forever" , "test" )
73
91
assert .Nil (t , err )
@@ -80,8 +98,7 @@ func TestRedis_Forever(t *testing.T) {
80
98
}
81
99
82
100
func TestRedis_Flush (t * testing.T ) {
83
- store := New (createRedis (), Prefix ("cache:redis" ))
84
- ctx := context .Background ()
101
+ store := New (createRedis (t ), Prefix ("cache:redis" ))
85
102
86
103
ok1 , err := store .Put (ctx , "test:flush" , "test" , time .Second )
87
104
assert .Nil (t , err )
@@ -92,13 +109,12 @@ func TestRedis_Flush(t *testing.T) {
92
109
assert .True (t , ok2 )
93
110
94
111
ok3 , err := store .Has (ctx , "test:flush" )
95
- assert .Nil (t , err )
112
+ assert .NoError (t , err )
96
113
assert .False (t , ok3 )
97
114
}
98
115
99
116
func TestRedis_Add (t * testing.T ) {
100
- store := New (createRedis (), Prefix ("cache:redis" ))
101
- ctx := context .Background ()
117
+ store := New (createRedis (t ), Prefix ("cache:redis" ))
102
118
103
119
ok1 , err := store .Add (ctx , "test:add" , "test" , time .Second )
104
120
assert .Nil (t , err )
@@ -115,7 +131,7 @@ func TestRedis_Add(t *testing.T) {
115
131
}
116
132
117
133
func TestRedis_Lock (t * testing.T ) {
118
- r := New (createRedis ())
134
+ r := New (createRedis (t ))
119
135
var wg sync.WaitGroup
120
136
var s int64
121
137
@@ -136,3 +152,18 @@ func TestRedis_Lock(t *testing.T) {
136
152
wg .Wait ()
137
153
assert .True (t , s > 0 )
138
154
}
155
+
156
+ func TestRedis_ErrNotFound (t * testing.T ) {
157
+ store := New (createRedis (t ), Prefix ("cache:redis:notfound" ))
158
+
159
+ // Has
160
+ ok1 , err := store .Has (ctx , "test:notfound:has" )
161
+ assert .Nil (t , err )
162
+ assert .False (t , ok1 )
163
+
164
+ // Get
165
+ var v string
166
+ err = store .Get (ctx , "test:notfound:get" , & v )
167
+ assert .True (t , errors .Is (err , cache .ErrNotFound ))
168
+ assert .Empty (t , v )
169
+ }
0 commit comments