766 |
|
public void testTryConvertToReadLock() throws InterruptedException { |
767 |
|
StampedLock lock = new StampedLock(); |
768 |
|
long s, p; |
769 |
< |
s = 0L; |
770 |
< |
assertFalse((p = lock.tryConvertToReadLock(s)) != 0L); |
769 |
> |
|
770 |
> |
assertFalse((p = lock.tryConvertToReadLock(0L)) != 0L); |
771 |
> |
|
772 |
|
assertTrue((s = lock.tryOptimisticRead()) != 0L); |
773 |
|
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
774 |
+ |
assertTrue(lock.isReadLocked()); |
775 |
+ |
assertEquals(1, lock.getReadLockCount()); |
776 |
|
lock.unlockRead(p); |
777 |
+ |
|
778 |
|
assertTrue((s = lock.writeLock()) != 0L); |
779 |
|
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
780 |
|
assertTrue(lock.validate(p)); |
781 |
+ |
assertTrue(lock.isReadLocked()); |
782 |
+ |
assertEquals(1, lock.getReadLockCount()); |
783 |
|
lock.unlockRead(p); |
784 |
+ |
|
785 |
|
assertTrue((s = lock.readLock()) != 0L); |
786 |
|
assertTrue(lock.validate(s)); |
787 |
< |
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
788 |
< |
assertTrue(lock.validate(p)); |
789 |
< |
lock.unlockRead(p); |
787 |
> |
assertEquals(s, lock.tryConvertToReadLock(s)); |
788 |
> |
assertTrue(lock.validate(s)); |
789 |
> |
assertTrue(lock.isReadLocked()); |
790 |
> |
assertEquals(1, lock.getReadLockCount()); |
791 |
> |
lock.unlockRead(s); |
792 |
> |
|
793 |
|
assertTrue((s = lock.tryWriteLock()) != 0L); |
794 |
|
assertTrue(lock.validate(s)); |
795 |
|
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
796 |
|
assertTrue(lock.validate(p)); |
797 |
+ |
assertEquals(1, lock.getReadLockCount()); |
798 |
|
lock.unlockRead(p); |
799 |
+ |
|
800 |
|
assertTrue((s = lock.tryReadLock()) != 0L); |
801 |
|
assertTrue(lock.validate(s)); |
802 |
< |
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
803 |
< |
assertTrue(lock.validate(p)); |
804 |
< |
lock.unlockRead(p); |
802 |
> |
assertEquals(s, lock.tryConvertToReadLock(s)); |
803 |
> |
assertTrue(lock.validate(s)); |
804 |
> |
assertTrue(lock.isReadLocked()); |
805 |
> |
assertEquals(1, lock.getReadLockCount()); |
806 |
> |
lock.unlockRead(s); |
807 |
> |
|
808 |
|
assertTrue((s = lock.tryWriteLock(100L, MILLISECONDS)) != 0L); |
809 |
|
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
810 |
|
assertTrue(lock.validate(p)); |
811 |
+ |
assertTrue(lock.isReadLocked()); |
812 |
+ |
assertEquals(1, lock.getReadLockCount()); |
813 |
|
lock.unlockRead(p); |
814 |
+ |
|
815 |
|
assertTrue((s = lock.tryReadLock(100L, MILLISECONDS)) != 0L); |
816 |
|
assertTrue(lock.validate(s)); |
817 |
< |
assertTrue((p = lock.tryConvertToReadLock(s)) != 0L); |
818 |
< |
assertTrue(lock.validate(p)); |
819 |
< |
lock.unlockRead(p); |
817 |
> |
assertEquals(s, lock.tryConvertToReadLock(s)); |
818 |
> |
assertTrue(lock.validate(s)); |
819 |
> |
assertTrue(lock.isReadLocked()); |
820 |
> |
assertEquals(1, lock.getReadLockCount()); |
821 |
> |
lock.unlockRead(s); |
822 |
|
} |
823 |
|
|
824 |
|
/** |