chore: refactor redislock (#2210)

* chore: refactor redislock

* chore: add more tests
This commit is contained in:
Kevin Wan
2022-07-30 19:46:10 +08:00
committed by GitHub
parent 4879d4dfcd
commit 91b8effb24
2 changed files with 32 additions and 22 deletions

View File

@@ -14,18 +14,12 @@ func TestRedisLock(t *testing.T) {
return func(client *Redis) {
key := stringx.Rand()
firstLock := NewRedisLock(client, key)
if ctx != nil {
firstLock.WithContext(ctx)
}
firstLock.SetExpire(5)
firstAcquire, err := firstLock.Acquire()
assert.Nil(t, err)
assert.True(t, firstAcquire)
secondLock := NewRedisLock(client, key)
if ctx != nil {
secondLock.WithContext(ctx)
}
secondLock.SetExpire(5)
againAcquire, err := secondLock.Acquire()
assert.Nil(t, err)
@@ -49,3 +43,23 @@ func TestRedisLock(t *testing.T) {
runOnRedis(t, testFn(context.Background()))
})
}
func TestRedisLock_Expired(t *testing.T) {
runOnRedis(t, func(client *Redis) {
key := stringx.Rand()
redisLock := NewRedisLock(client, key)
ctx, cancel := context.WithCancel(context.Background())
cancel()
_, err := redisLock.AcquireCtx(ctx)
assert.NotNil(t, err)
})
runOnRedis(t, func(client *Redis) {
key := stringx.Rand()
redisLock := NewRedisLock(client, key)
ctx, cancel := context.WithCancel(context.Background())
cancel()
_, err := redisLock.ReleaseCtx(ctx)
assert.NotNil(t, err)
})
}