|
|
@ -20,6 +20,8 @@ import java.util.concurrent.TimeoutException;
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
|
|
import java.util.concurrent.locks.ReadWriteLock;
|
|
|
|
|
|
|
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|
|
|
|
|
|
|
|
|
|
|
import org.awaitility.Awaitility;
|
|
|
|
import org.awaitility.Awaitility;
|
|
|
|
import org.junit.jupiter.api.Assertions;
|
|
|
|
import org.junit.jupiter.api.Assertions;
|
|
|
@ -445,6 +447,27 @@ public class RedissonReadWriteLockTest extends BaseConcurrentTest {
|
|
|
|
assertThat(lock.writeLock().isLocked()).isFalse();
|
|
|
|
assertThat(lock.writeLock().isLocked()).isFalse();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
|
|
|
public void testReadWriteTTL() throws InterruptedException {
|
|
|
|
|
|
|
|
RReadWriteLock rwlock = redisson.getReadWriteLock("rwlock");
|
|
|
|
|
|
|
|
rwlock.writeLock().lock();
|
|
|
|
|
|
|
|
rwlock.readLock().lock();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
|
|
|
|
|
|
assertThat(rwlock.readLock().remainTimeToLive()).isGreaterThan(19000);
|
|
|
|
|
|
|
|
TimeUnit.SECONDS.sleep(5);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rwlock.writeLock().unlock();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
|
|
|
|
|
|
assertThat(rwlock.readLock().remainTimeToLive()).isGreaterThan(19000);
|
|
|
|
|
|
|
|
TimeUnit.SECONDS.sleep(5);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rwlock.readLock().unlock();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
public void testExpireRead() throws InterruptedException {
|
|
|
|
public void testExpireRead() throws InterruptedException {
|
|
|
|
RReadWriteLock lock = redisson.getReadWriteLock("lock");
|
|
|
|
RReadWriteLock lock = redisson.getReadWriteLock("lock");
|
|
|
|