/** ロック開放後同一カテゴリとキーでロック取得可能. */ @Test public void ロック開放後同一カテゴリとキーでロック取得可能() { Lock lock = LockManager.getLock(Lock.CATEGORY_ODATA, "aaa", null, null); lock.release(); Lock lock2 = LockManager.getLock(Lock.CATEGORY_ODATA, "aaa", null, null); assertNotNull(lock2); lock2.release(); }
/** 違うカテゴリであれば同キー名での連続取得が可能. */ @Test public void 違うカテゴリであれば同キー名での連続取得が可能() { Lock lockOData = LockManager.getLock(Lock.CATEGORY_ODATA, "aaa", null, null); Lock lockDav = LockManager.getLock(Lock.CATEGORY_DAV, "aaa", null, null); assertNotNull(lockOData); assertNotNull(lockDav); lockDav.release(); lockOData.release(); }
/** 同じキー名での取得は2回目以降のものはブロックされる. */ @Test public void 同じキー名での取得は2回目以降のものはブロックされる() { Lock lock = null; Lock lock2 = null; String lockName = "lk" + new Date().getTime(); try { lock = LockManager.getLock(Lock.CATEGORY_ODATA, lockName, null, null); lock2 = LockManager.getLock(Lock.CATEGORY_ODATA, lockName, null, null); } catch (DcCoreException e) { assertEquals(DcCoreException.class, e.getClass()); } finally { lock.release(); if (lock2 != null) { lock2.release(); } } }
/** * Retryが指定回数行われる. * * @throws InterruptedException InterruptedException */ @Test @Ignore public void Retryが指定回数行われる() throws InterruptedException { LockManager originalLm = LockManager.singleton; LockManager.singleton = new RetryCountingLockManager(); RetryCountingLockManager rclm = (RetryCountingLockManager) LockManager.singleton; try { LockManager.getLock(Lock.CATEGORY_ODATA, "aaa", null, null); } catch (DcCoreException e) { assertEquals(DcCoreException.class, e.getClass()); } finally { // doGetLock呼び出し回数 は 最初の呼び出しの1回と + リトライ回数 となる assertEquals(LockManager.getLockRetryTimes() + 1, rclm.getCount); LockManager.singleton = originalLm; } }
/** ロックが取得可能. */ @Test public void ロックが取得可能() { Lock lock = LockManager.getLock(Lock.CATEGORY_ODATA, "aaa", null, null); assertNotNull(lock); lock.release(); }