ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/StampedLockTest.java
(Generate patch)

Comparing jsr166/src/test/tck/StampedLockTest.java (file contents):
Revision 1.13 by jsr166, Sat Apr 25 04:55:31 2015 UTC vs.
Revision 1.18 by jsr166, Tue Jun 7 02:12:18 2016 UTC

# Line 166 | Line 166 | public class StampedLockTest extends JSR
166       */
167      public void testWriteUnlock_IMSE2() {
168          StampedLock lock = new StampedLock();
169 +        long s = lock.writeLock();
170 +        lock.unlockWrite(s);
171          try {
170            long s = lock.writeLock();
171            lock.unlockWrite(s);
172              lock.unlockWrite(s);
173              shouldThrow();
174          } catch (IllegalMonitorStateException success) {}
# Line 179 | Line 179 | public class StampedLockTest extends JSR
179       */
180      public void testWriteUnlock_IMSE3() {
181          StampedLock lock = new StampedLock();
182 +        long s = lock.readLock();
183          try {
183            long s = lock.readLock();
184              lock.unlockWrite(s);
185              shouldThrow();
186          } catch (IllegalMonitorStateException success) {}
# Line 191 | Line 191 | public class StampedLockTest extends JSR
191       */
192      public void testReadUnlock_IMSE() {
193          StampedLock lock = new StampedLock();
194 +        long s = lock.readLock();
195 +        lock.unlockRead(s);
196          try {
195            long s = lock.readLock();
196            lock.unlockRead(s);
197              lock.unlockRead(s);
198              shouldThrow();
199          } catch (IllegalMonitorStateException success) {}
# Line 215 | Line 215 | public class StampedLockTest extends JSR
215       */
216      public void testReadUnlock_IMSE3() {
217          StampedLock lock = new StampedLock();
218 +        long s = lock.writeLock();
219          try {
219            long s = lock.writeLock();
220              lock.unlockRead(s);
221              shouldThrow();
222          } catch (IllegalMonitorStateException success) {}
# Line 876 | Line 876 | public class StampedLockTest extends JSR
876          assertTrue(lock.tryLock());
877      }
878  
879 +    /**
880 +     * Lock.newCondition throws UnsupportedOperationException
881 +     */
882 +    public void testLockViewsDoNotSupportConditions() {
883 +        StampedLock sl = new StampedLock();
884 +        assertThrows(UnsupportedOperationException.class,
885 +                     () -> sl.asWriteLock().newCondition(),
886 +                     () -> sl.asReadLock().newCondition(),
887 +                     () -> sl.asReadWriteLock().writeLock().newCondition(),
888 +                     () -> sl.asReadWriteLock().readLock().newCondition());
889 +    }
890 +
891 +    /**
892 +     * Passing optimistic read stamps to unlock operations result in
893 +     * IllegalMonitorStateException
894 +     */
895 +    public void testCannotUnlockOptimisticReadStamps() {
896 +        Runnable[] actions = {
897 +            () -> {
898 +                StampedLock sl = new StampedLock();
899 +                long stamp = sl.tryOptimisticRead();
900 +                assertTrue(stamp != 0);
901 +                sl.unlockRead(stamp);
902 +            },
903 +            () -> {
904 +                StampedLock sl = new StampedLock();
905 +                long stamp = sl.tryOptimisticRead();
906 +                sl.unlock(stamp);
907 +            },
908 +
909 +            () -> {
910 +                StampedLock sl = new StampedLock();
911 +                long stamp = sl.tryOptimisticRead();
912 +                sl.writeLock();
913 +                sl.unlock(stamp);
914 +            },
915 +            () -> {
916 +                StampedLock sl = new StampedLock();
917 +                long stamp = sl.tryOptimisticRead();
918 +                sl.readLock();
919 +                sl.unlockRead(stamp);
920 +            },
921 +            () -> {
922 +                StampedLock sl = new StampedLock();
923 +                long stamp = sl.tryOptimisticRead();
924 +                sl.readLock();
925 +                sl.unlock(stamp);
926 +            },
927 +
928 +            () -> {
929 +                StampedLock sl = new StampedLock();
930 +                long stamp = sl.tryConvertToOptimisticRead(sl.writeLock());
931 +                assertTrue(stamp != 0);
932 +                sl.writeLock();
933 +                sl.unlockWrite(stamp);
934 +            },
935 +            () -> {
936 +                StampedLock sl = new StampedLock();
937 +                long stamp = sl.tryConvertToOptimisticRead(sl.writeLock());
938 +                sl.writeLock();
939 +                sl.unlock(stamp);
940 +            },
941 +            () -> {
942 +                StampedLock sl = new StampedLock();
943 +                long stamp = sl.tryConvertToOptimisticRead(sl.writeLock());
944 +                sl.readLock();
945 +                sl.unlockRead(stamp);
946 +            },
947 +            () -> {
948 +                StampedLock sl = new StampedLock();
949 +                long stamp = sl.tryConvertToOptimisticRead(sl.writeLock());
950 +                sl.readLock();
951 +                sl.unlock(stamp);
952 +            },
953 +
954 +            () -> {
955 +                StampedLock sl = new StampedLock();
956 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
957 +                assertTrue(stamp != 0);
958 +                sl.writeLock();
959 +                sl.unlockWrite(stamp);
960 +            },
961 +            () -> {
962 +                StampedLock sl = new StampedLock();
963 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
964 +                sl.writeLock();
965 +                sl.unlock(stamp);
966 +            },
967 +            () -> {
968 +                StampedLock sl = new StampedLock();
969 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
970 +                sl.readLock();
971 +                sl.unlockRead(stamp);
972 +            },
973 +            () -> {
974 +                StampedLock sl = new StampedLock();
975 +                sl.readLock();
976 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
977 +                assertTrue(stamp != 0);
978 +                sl.readLock();
979 +                sl.unlockRead(stamp);
980 +            },
981 +            () -> {
982 +                StampedLock sl = new StampedLock();
983 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
984 +                sl.readLock();
985 +                sl.unlock(stamp);
986 +            },
987 +            () -> {
988 +                StampedLock sl = new StampedLock();
989 +                sl.readLock();
990 +                long stamp = sl.tryConvertToOptimisticRead(sl.readLock());
991 +                sl.readLock();
992 +                sl.unlock(stamp);
993 +            },
994 +        };
995 +
996 +        assertThrows(IllegalMonitorStateException.class, actions);
997 +    }
998 +
999   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines