diff options
author | Håkon Hallingstad <hakon@yahooinc.com> | 2022-04-27 15:35:53 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@yahooinc.com> | 2022-04-27 15:35:53 +0200 |
commit | 9e4cb8d801ef919ef4bb0152b92af8040ee33e46 (patch) | |
tree | 89853cb08f8be29c33cbbb8d6c95e8433f618ce1 /zkfacade/src/test | |
parent | 438b74814c8144f7284007a8680c277b03938e44 (diff) |
Test out-of-order release
Diffstat (limited to 'zkfacade/src/test')
-rw-r--r-- | zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java index e5a1ea7c683..524fcd3abd1 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java @@ -200,8 +200,46 @@ public class LockTest { assertEquals(lock2Path, lockAttempts.get(1).getLockPath()); assertEquals(LockAttempt.LockState.ACQUIRED, lockAttempts.get(1).getLockState()); + lock2.close(); lock.close(); + } + + @Test + public void locksReleaseOutOfOrder() throws Exception { + when(mutex.acquire(anyLong(), any())).thenReturn(true); + + lock.acquire(acquireTimeout); + assertLockMetricsIs(new LockMetrics().setAcquireCount(1) + .setCumulativeAcquireCount(1) + .setAcquireSucceededCount(1) + .setCumulativeAcquireSucceededCount(1)); + lock2.acquire(acquireTimeout); + assertLock2MetricsIs(new LockMetrics().setAcquireCount(1) + .setCumulativeAcquireCount(1) + .setAcquireSucceededCount(1) + .setCumulativeAcquireSucceededCount(1)); lock.close(); + assertLockMetricsIs(new LockMetrics().setAcquireCount(0) + .setCumulativeAcquireCount(1) + .setAcquireSucceededCount(0) + .setCumulativeAcquireSucceededCount(1) + .setReleaseCount(1) + .setCumulativeReleaseCount(1)); + + List<ThreadLockStats> threadLockStats = LockStats.getGlobal().getThreadLockStats(); + assertEquals(1, threadLockStats.size()); + List<LockAttempt> lockAttempts = threadLockStats.get(0).getOngoingLockAttempts(); + assertEquals(1, lockAttempts.size()); + assertEquals(lock2Path, lockAttempts.get(0).getLockPath()); + assertEquals(LockAttempt.LockState.ACQUIRED, lockAttempts.get(0).getLockState()); + + lock2.close(); + assertLock2MetricsIs(new LockMetrics().setAcquireCount(0) + .setCumulativeAcquireCount(1) + .setAcquireSucceededCount(0) + .setCumulativeAcquireSucceededCount(1) + .setReleaseCount(1) + .setCumulativeReleaseCount(1)); } @Test |