-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_lock.go
44 lines (37 loc) · 959 Bytes
/
test_lock.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 redis_full
import (
"testing"
"time"
)
// 相同两次设置来判断是否加锁成功
func CheckLock(t *testing.T, newRedis RedisFactory) {
redisDB := newRedis(t, time.Hour)
// 第一次加锁,应该成功
ok, err := redisDB.Lock("name", time.Minute*10)
if !ok || err != nil {
t.Errorf("An unexpected error occurred: %s", err)
return
}
// 第二次加锁,应该是失败
ok2, err2 := redisDB.Lock("name", time.Minute*10)
if err2 != nil {
t.Errorf("An unexpected error occurred: %s", err)
return
}
if ok2 {
t.Errorf("已经存在一个key, 正确的结果应该是false, 但是获取的值为 %v", ok2)
return
}
// 解锁
err3 := redisDB.Unlock("name")
if err3 != nil {
t.Errorf("An unexpected error occurred: %s", err3)
return
}
// 再次加锁,应该成功
ok3, err4 := redisDB.Lock("name", time.Minute*10)
if !ok3 || err4 != nil {
t.Errorf("An unexpected error occurred: %s", err4)
return
}
}