aboutsummaryrefslogtreecommitdiffstats
path: root/zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-09-28 12:10:38 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-09-28 12:10:38 +0200
commit6e284ef06a2e6dafbaeae8e486b6f68fa53d5d48 (patch)
treec3e86ef7861f3a92fe984e0d7685a466a786960d /zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java
parentd7118a218d4704b52ed9883e4ff381a519adb7c1 (diff)
Use deque as stack
Diffstat (limited to 'zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java')
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/stats/LockTest.java23
1 files changed, 23 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 4b9b6a4429b..984a04c6d4e 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
@@ -110,4 +110,27 @@ public class LockTest {
expectedCounters.locksReleasedCount.set(2);
assertEquals(Map.of(lockPath, expectedCounters), ThreadLockInfo.getLockCountersByPath());
}
+
+ @Test
+ public void nestedLocks() throws Exception {
+ when(mutex.acquire(anyLong(), any())).thenReturn(true);
+
+ String lockPath2 = "/lock/path/2";
+ Lock lock2 = new Lock(lockPath2, mutex);
+
+ lock.acquire(acquireTimeout);
+ lock2.acquire(acquireTimeout);
+
+ List<ThreadLockInfo> threadLockInfos = ThreadLockInfo.getThreadLockInfos();
+ assertEquals(1, threadLockInfos.size());
+ List<LockInfo> lockInfos = threadLockInfos.get(0).getLockInfos();
+ assertEquals(2, lockInfos.size());
+ assertEquals(lockPath, lockInfos.get(0).getLockPath());
+ assertEquals(LockInfo.LockState.ACQUIRED, lockInfos.get(0).getLockState());
+ assertEquals(lockPath2, lockInfos.get(1).getLockPath());
+ assertEquals(LockInfo.LockState.ACQUIRED, lockInfos.get(1).getLockState());
+
+ lock.close();
+ lock.close();
+ }
}