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 {} }