Update SnapshottableCollectionLockTest.java
This commit is contained in:
parent
27ea0deaed
commit
9950a4ceb1
@ -1,6 +1,7 @@
|
|||||||
package org.warp.commonutils.locks;
|
package org.warp.commonutils.locks;
|
||||||
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
@ -58,20 +59,22 @@ public class SnapshottableCollectionLockTest {
|
|||||||
|
|
||||||
private void checkSituation(SnapshottableCollectionLock<Long> lock, boolean fullReadAllow, boolean fullWriteAllow, boolean dataReadAllow, boolean dataWriteAllow) {
|
private void checkSituation(SnapshottableCollectionLock<Long> lock, boolean fullReadAllow, boolean fullWriteAllow, boolean dataReadAllow, boolean dataWriteAllow) {
|
||||||
|
|
||||||
|
var pool = Executors.newWorkStealingPool();
|
||||||
|
|
||||||
for (FullLockType readFullType : FullLockType.READ_FULL_TYPES) {
|
for (FullLockType readFullType : FullLockType.READ_FULL_TYPES) {
|
||||||
if (fullReadAllow) {
|
if (fullReadAllow) {
|
||||||
Assertions.assertDoesNotThrow(() -> {
|
Assertions.assertDoesNotThrow(() -> {
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.fullLock(null, readFullType);
|
lock.fullLock(null, readFullType);
|
||||||
lock.fullUnlock(null, readFullType);
|
lock.fullUnlock(null, readFullType);
|
||||||
}).get(1, TimeUnit.SECONDS);
|
}, pool).get(2, TimeUnit.SECONDS);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Assertions.assertThrows(TimeoutException.class, () -> {
|
Assertions.assertThrows(TimeoutException.class, () -> {
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.fullLock(null, readFullType);
|
lock.fullLock(null, readFullType);
|
||||||
lock.fullUnlock(null, readFullType);
|
lock.fullUnlock(null, readFullType);
|
||||||
}).get(50, TimeUnit.MILLISECONDS);
|
}, pool).get(50, TimeUnit.MILLISECONDS);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,14 +85,14 @@ public class SnapshottableCollectionLockTest {
|
|||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.fullLock(null, writeFullType);
|
lock.fullLock(null, writeFullType);
|
||||||
lock.fullUnlock(null, writeFullType);
|
lock.fullUnlock(null, writeFullType);
|
||||||
}).get(1, TimeUnit.SECONDS);
|
}, pool).get(2, TimeUnit.SECONDS);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Assertions.assertThrows(TimeoutException.class, () -> {
|
Assertions.assertThrows(TimeoutException.class, () -> {
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.fullLock(null, writeFullType);
|
lock.fullLock(null, writeFullType);
|
||||||
lock.fullUnlock(null, writeFullType);
|
lock.fullUnlock(null, writeFullType);
|
||||||
}).get(50, TimeUnit.MILLISECONDS);
|
}, pool).get(50, TimeUnit.MILLISECONDS);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99,14 +102,14 @@ public class SnapshottableCollectionLockTest {
|
|||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.dataLock(null, DataLockType.READ, 1L);
|
lock.dataLock(null, DataLockType.READ, 1L);
|
||||||
lock.dataUnlock(null, DataLockType.READ, 1L);
|
lock.dataUnlock(null, DataLockType.READ, 1L);
|
||||||
}).get(1, TimeUnit.SECONDS);
|
}, pool).get(2, TimeUnit.SECONDS);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Assertions.assertThrows(TimeoutException.class, () -> {
|
Assertions.assertThrows(TimeoutException.class, () -> {
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.dataLock(null, DataLockType.READ, 1L);
|
lock.dataLock(null, DataLockType.READ, 1L);
|
||||||
lock.dataUnlock(null, DataLockType.READ, 1L);
|
lock.dataUnlock(null, DataLockType.READ, 1L);
|
||||||
}).get(50, TimeUnit.MILLISECONDS);
|
}, pool).get(50, TimeUnit.MILLISECONDS);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,14 +118,14 @@ public class SnapshottableCollectionLockTest {
|
|||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.dataLock(null, DataLockType.WRITE, 1L);
|
lock.dataLock(null, DataLockType.WRITE, 1L);
|
||||||
lock.dataUnlock(null, DataLockType.WRITE, 1L);
|
lock.dataUnlock(null, DataLockType.WRITE, 1L);
|
||||||
}).get(1, TimeUnit.SECONDS);
|
}, pool).get(2, TimeUnit.SECONDS);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Assertions.assertThrows(TimeoutException.class, () -> {
|
Assertions.assertThrows(TimeoutException.class, () -> {
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
lock.dataLock(null, DataLockType.WRITE, 1L);
|
lock.dataLock(null, DataLockType.WRITE, 1L);
|
||||||
lock.dataUnlock(null, DataLockType.WRITE, 1L);
|
lock.dataUnlock(null, DataLockType.WRITE, 1L);
|
||||||
}).get(50, TimeUnit.MILLISECONDS);
|
}, pool).get(50, TimeUnit.MILLISECONDS);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user