modelRT/distributedlock/rwlock_test.go

47 lines
895 B
Go

package distributed_lock
import (
"testing"
"time"
"github.com/go-redis/redis"
"go.uber.org/zap"
)
var log *zap.Logger
func init() {
log = zap.Must(zap.NewDevelopment())
}
func TestRWLockReentrantLock(t *testing.T) {
rdb := redis.NewClient(&redis.Options{
Network: "tcp",
Addr: "192.168.2.103:6379",
Password: "cnstar",
PoolSize: 50,
DialTimeout: 10 * time.Second,
})
rwLocker := GetRWLocker(rdb, &RedissionLockConfig{
LockLeaseTime: 120,
Key: "component",
})
rwLocker.logger = log
t.Logf("%+v\n", rwLocker)
duration := 10 * time.Second
// 第一次加读锁
err := rwLocker.RLock(duration)
t.Logf("err:%+v\n", err)
// TODO 实现可重入读锁测试
// rwLocker.UnRLock()
// // 第二次加读锁
// rwLocker.RLock(duration)
// // 查看 redis 中相关 key 的值
// rwLocker.UnRLock()
t.Log("test success")
select {}
}