|
|
|
@ -16,23 +16,23 @@ import org.redisson.client.RedisException;
|
|
|
|
|
|
|
|
|
|
public class RedissonPermitExpirableSemaphoreTest extends BaseConcurrentTest {
|
|
|
|
|
|
|
|
|
|
// @Test
|
|
|
|
|
// public void testUpdateLeaseTime() throws InterruptedException {
|
|
|
|
|
// RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
// semaphore.trySetPermits(1);
|
|
|
|
|
// assertThat(semaphore.updateLeaseTime("1234", 1, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
// String id = semaphore.acquire();
|
|
|
|
|
// assertThat(semaphore.updateLeaseTime(id, 1, TimeUnit.SECONDS)).isTrue();
|
|
|
|
|
// Thread.sleep(1200);
|
|
|
|
|
// assertThat(semaphore.updateLeaseTime(id, 1, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
// String id2 = semaphore.tryAcquire(1, 1, TimeUnit.SECONDS);
|
|
|
|
|
// assertThat(semaphore.updateLeaseTime(id2, 3, TimeUnit.SECONDS)).isTrue();
|
|
|
|
|
// Thread.sleep(2800);
|
|
|
|
|
// assertThat(semaphore.availablePermits()).isZero();
|
|
|
|
|
// Thread.sleep(500);
|
|
|
|
|
// assertThat(semaphore.availablePermits()).isOne();
|
|
|
|
|
// assertThat(semaphore.updateLeaseTime(id2, 2, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
// }
|
|
|
|
|
@Test
|
|
|
|
|
public void testUpdateLeaseTime() throws InterruptedException {
|
|
|
|
|
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
semaphore.trySetPermits(1);
|
|
|
|
|
assertThat(semaphore.updateLeaseTime("1234", 1, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
String id = semaphore.acquire();
|
|
|
|
|
assertThat(semaphore.updateLeaseTime(id, 1, TimeUnit.SECONDS)).isTrue();
|
|
|
|
|
Thread.sleep(1200);
|
|
|
|
|
assertThat(semaphore.updateLeaseTime(id, 1, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
String id2 = semaphore.tryAcquire(1, 1, TimeUnit.SECONDS);
|
|
|
|
|
assertThat(semaphore.updateLeaseTime(id2, 3, TimeUnit.SECONDS)).isTrue();
|
|
|
|
|
Thread.sleep(2800);
|
|
|
|
|
assertThat(semaphore.availablePermits()).isZero();
|
|
|
|
|
Thread.sleep(500);
|
|
|
|
|
assertThat(semaphore.availablePermits()).isOne();
|
|
|
|
|
assertThat(semaphore.updateLeaseTime(id2, 2, TimeUnit.SECONDS)).isFalse();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testNotExistent() {
|
|
|
|
@ -40,24 +40,24 @@ public class RedissonPermitExpirableSemaphoreTest extends BaseConcurrentTest {
|
|
|
|
|
Assertions.assertEquals(0, semaphore.availablePermits());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @Test
|
|
|
|
|
// public void testAvailablePermits() throws InterruptedException {
|
|
|
|
|
// RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("test-semaphore");
|
|
|
|
|
// assertThat(semaphore.trySetPermits(2)).isTrue();
|
|
|
|
|
// Assertions.assertEquals(2, semaphore.availablePermits());
|
|
|
|
|
// String acquire1 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
// assertThat(acquire1).isNotNull();
|
|
|
|
|
// String acquire2 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
// assertThat(acquire2).isNotNull();
|
|
|
|
|
// String acquire3 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
// assertThat(acquire3).isNull();
|
|
|
|
|
// Assertions.assertEquals(0, semaphore.availablePermits());
|
|
|
|
|
// Thread.sleep(1100);
|
|
|
|
|
// String acquire4 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
// assertThat(acquire4).isNotNull();
|
|
|
|
|
// Thread.sleep(1100);
|
|
|
|
|
// Assertions.assertEquals(2, semaphore.availablePermits());
|
|
|
|
|
// }
|
|
|
|
|
@Test
|
|
|
|
|
public void testAvailablePermits() throws InterruptedException {
|
|
|
|
|
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("test-semaphore");
|
|
|
|
|
assertThat(semaphore.trySetPermits(2)).isTrue();
|
|
|
|
|
Assertions.assertEquals(2, semaphore.availablePermits());
|
|
|
|
|
String acquire1 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
assertThat(acquire1).isNotNull();
|
|
|
|
|
String acquire2 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
assertThat(acquire2).isNotNull();
|
|
|
|
|
String acquire3 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
assertThat(acquire3).isNull();
|
|
|
|
|
Assertions.assertEquals(0, semaphore.availablePermits());
|
|
|
|
|
Thread.sleep(1100);
|
|
|
|
|
String acquire4 = semaphore.tryAcquire(200, 1000, TimeUnit.MILLISECONDS);
|
|
|
|
|
assertThat(acquire4).isNotNull();
|
|
|
|
|
Thread.sleep(1100);
|
|
|
|
|
Assertions.assertEquals(2, semaphore.availablePermits());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testClaimedPermits() throws InterruptedException {
|
|
|
|
@ -98,78 +98,78 @@ public class RedissonPermitExpirableSemaphoreTest extends BaseConcurrentTest {
|
|
|
|
|
Assertions.assertEquals(2, semaphore.maximumPermits());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// @Test
|
|
|
|
|
// public void testExpiration() throws InterruptedException {
|
|
|
|
|
// RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("some-key");
|
|
|
|
|
// semaphore.trySetPermits(1);
|
|
|
|
|
// semaphore.expire(Duration.ofSeconds(3));
|
|
|
|
|
// semaphore.tryAcquire(1, 1, TimeUnit.SECONDS);
|
|
|
|
|
// Thread.sleep(4100);
|
|
|
|
|
// assertThat(redisson.getKeys().count()).isZero();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Test
|
|
|
|
|
// public void testExpire() throws InterruptedException {
|
|
|
|
|
// RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
// s.trySetPermits(1);
|
|
|
|
|
// String permitId = s.acquire(2, TimeUnit.SECONDS);
|
|
|
|
|
//
|
|
|
|
|
// final long startTime = System.currentTimeMillis();
|
|
|
|
|
// AtomicBoolean bool = new AtomicBoolean();
|
|
|
|
|
// Thread t = new Thread() {
|
|
|
|
|
// public void run() {
|
|
|
|
|
// RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
// try {
|
|
|
|
|
// String permitId = s.acquire();
|
|
|
|
|
// long spendTime = System.currentTimeMillis() - startTime;
|
|
|
|
|
// assertThat(spendTime).isBetween(1900L, 2100L);
|
|
|
|
|
// s.release(permitId);
|
|
|
|
|
// bool.set(true);
|
|
|
|
|
// } catch (InterruptedException e) {
|
|
|
|
|
// // TODO Auto-generated catch block
|
|
|
|
|
// e.printStackTrace();
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
// };
|
|
|
|
|
//
|
|
|
|
|
// t.start();
|
|
|
|
|
// t.join();
|
|
|
|
|
//
|
|
|
|
|
// assertThat(s.tryRelease(permitId)).isFalse();
|
|
|
|
|
// assertThat(bool.get()).isTrue();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @Test
|
|
|
|
|
// public void testExpireTryAcquire() throws InterruptedException {
|
|
|
|
|
// RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
// s.trySetPermits(1);
|
|
|
|
|
// String permitId = s.tryAcquire(100, 2, TimeUnit.SECONDS);
|
|
|
|
|
//
|
|
|
|
|
// final long startTime = System.currentTimeMillis();
|
|
|
|
|
// AtomicBoolean bool = new AtomicBoolean();
|
|
|
|
|
// Thread t = new Thread() {
|
|
|
|
|
// public void run() {
|
|
|
|
|
// RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
// try {
|
|
|
|
|
// String permitId = s.acquire();
|
|
|
|
|
// long spendTime = System.currentTimeMillis() - startTime;
|
|
|
|
|
// assertThat(spendTime).isBetween(1900L, 2100L);
|
|
|
|
|
// s.release(permitId);
|
|
|
|
|
// bool.set(true);
|
|
|
|
|
// } catch (InterruptedException e) {
|
|
|
|
|
// // TODO Auto-generated catch block
|
|
|
|
|
// e.printStackTrace();
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
// };
|
|
|
|
|
//
|
|
|
|
|
// t.start();
|
|
|
|
|
// t.join();
|
|
|
|
|
//
|
|
|
|
|
// assertThat(s.tryRelease(permitId)).isFalse();
|
|
|
|
|
// assertThat(bool.get()).isTrue();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testExpiration() throws InterruptedException {
|
|
|
|
|
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("some-key");
|
|
|
|
|
semaphore.trySetPermits(1);
|
|
|
|
|
semaphore.expire(Duration.ofSeconds(3));
|
|
|
|
|
semaphore.tryAcquire(1, 1, TimeUnit.SECONDS);
|
|
|
|
|
Thread.sleep(4100);
|
|
|
|
|
assertThat(redisson.getKeys().count()).isZero();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testExpire() throws InterruptedException {
|
|
|
|
|
RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
s.trySetPermits(1);
|
|
|
|
|
String permitId = s.acquire(2, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
|
|
final long startTime = System.currentTimeMillis();
|
|
|
|
|
AtomicBoolean bool = new AtomicBoolean();
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
try {
|
|
|
|
|
String permitId = s.acquire();
|
|
|
|
|
long spendTime = System.currentTimeMillis() - startTime;
|
|
|
|
|
assertThat(spendTime).isBetween(1900L, 2100L);
|
|
|
|
|
s.release(permitId);
|
|
|
|
|
bool.set(true);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
|
|
|
|
|
assertThat(s.tryRelease(permitId)).isFalse();
|
|
|
|
|
assertThat(bool.get()).isTrue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testExpireTryAcquire() throws InterruptedException {
|
|
|
|
|
RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
s.trySetPermits(1);
|
|
|
|
|
String permitId = s.tryAcquire(100, 2, TimeUnit.SECONDS);
|
|
|
|
|
|
|
|
|
|
final long startTime = System.currentTimeMillis();
|
|
|
|
|
AtomicBoolean bool = new AtomicBoolean();
|
|
|
|
|
Thread t = new Thread() {
|
|
|
|
|
public void run() {
|
|
|
|
|
RPermitExpirableSemaphore s = redisson.getPermitExpirableSemaphore("test");
|
|
|
|
|
try {
|
|
|
|
|
String permitId = s.acquire();
|
|
|
|
|
long spendTime = System.currentTimeMillis() - startTime;
|
|
|
|
|
assertThat(spendTime).isBetween(1900L, 2100L);
|
|
|
|
|
s.release(permitId);
|
|
|
|
|
bool.set(true);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
t.start();
|
|
|
|
|
t.join();
|
|
|
|
|
|
|
|
|
|
assertThat(s.tryRelease(permitId)).isFalse();
|
|
|
|
|
assertThat(bool.get()).isTrue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|