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

Comparing jsr166/src/test/tck/AbstractQueuedSynchronizerTest.java (file contents):
Revision 1.34 by jsr166, Wed Aug 25 00:07:02 2010 UTC vs.
Revision 1.40 by dl, Fri May 6 16:43:45 2011 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   * Other contributors include Andrew Wright, Jeffrey Hayes,
6   * Pat Fisher, Mike Judd.
7   */
# Line 34 | Line 34 | public class AbstractQueuedSynchronizerT
34          public boolean isHeldExclusively() { return getState() == 1; }
35  
36          public boolean tryAcquire(int acquires) {
37 <            assertTrue(acquires == 1);
37 >            assertEquals(1, acquires);
38              return compareAndSetState(0, 1);
39          }
40  
# Line 44 | Line 44 | public class AbstractQueuedSynchronizerT
44              return true;
45          }
46  
47 <        public AbstractQueuedSynchronizer.ConditionObject newCondition() { return new AbstractQueuedSynchronizer.ConditionObject(); }
47 >        public AbstractQueuedSynchronizer.ConditionObject newCondition() {
48 >            return new AbstractQueuedSynchronizer.ConditionObject();
49 >        }
50  
51      }
52  
# Line 56 | Line 58 | public class AbstractQueuedSynchronizerT
58          public boolean isSignalled() { return getState() != 0; }
59  
60          public int tryAcquireShared(int ignore) {
61 <            return isSignalled()? 1 : -1;
61 >            return isSignalled() ? 1 : -1;
62          }
63  
64          public boolean tryReleaseShared(int ignore) {
# Line 129 | Line 131 | public class AbstractQueuedSynchronizerT
131          assertFalse(sync.hasQueuedThreads());
132          sync.acquire(1);
133          t1.start();
134 <        Thread.sleep(SHORT_DELAY_MS);
134 >        delay(SHORT_DELAY_MS);
135          assertTrue(sync.hasQueuedThreads());
136          t2.start();
137 <        Thread.sleep(SHORT_DELAY_MS);
137 >        delay(SHORT_DELAY_MS);
138          assertTrue(sync.hasQueuedThreads());
139          t1.interrupt();
140 <        Thread.sleep(SHORT_DELAY_MS);
140 >        delay(SHORT_DELAY_MS);
141          assertTrue(sync.hasQueuedThreads());
142          sync.release(1);
143 <        Thread.sleep(SHORT_DELAY_MS);
143 >        delay(SHORT_DELAY_MS);
144          assertFalse(sync.hasQueuedThreads());
145          t1.join();
146          t2.join();
# Line 166 | Line 168 | public class AbstractQueuedSynchronizerT
168          assertFalse(sync.isQueued(t2));
169          sync.acquire(1);
170          t1.start();
171 <        Thread.sleep(SHORT_DELAY_MS);
171 >        delay(SHORT_DELAY_MS);
172          assertTrue(sync.isQueued(t1));
173          t2.start();
174 <        Thread.sleep(SHORT_DELAY_MS);
174 >        delay(SHORT_DELAY_MS);
175          assertTrue(sync.isQueued(t1));
176          assertTrue(sync.isQueued(t2));
177          t1.interrupt();
178 <        Thread.sleep(SHORT_DELAY_MS);
178 >        delay(SHORT_DELAY_MS);
179          assertFalse(sync.isQueued(t1));
180          assertTrue(sync.isQueued(t2));
181          sync.release(1);
182 <        Thread.sleep(SHORT_DELAY_MS);
182 >        delay(SHORT_DELAY_MS);
183          assertFalse(sync.isQueued(t1));
184 <        Thread.sleep(SHORT_DELAY_MS);
184 >        delay(SHORT_DELAY_MS);
185          assertFalse(sync.isQueued(t2));
186          t1.join();
187          t2.join();
# Line 195 | Line 197 | public class AbstractQueuedSynchronizerT
197          assertNull(sync.getFirstQueuedThread());
198          sync.acquire(1);
199          t1.start();
200 <        Thread.sleep(SHORT_DELAY_MS);
200 >        delay(SHORT_DELAY_MS);
201          assertEquals(t1, sync.getFirstQueuedThread());
202          t2.start();
203 <        Thread.sleep(SHORT_DELAY_MS);
203 >        delay(SHORT_DELAY_MS);
204          assertEquals(t1, sync.getFirstQueuedThread());
205          t1.interrupt();
206 <        Thread.sleep(SHORT_DELAY_MS);
207 <        Thread.sleep(SHORT_DELAY_MS);
206 >        delay(SHORT_DELAY_MS);
207 >        delay(SHORT_DELAY_MS);
208          assertEquals(t2, sync.getFirstQueuedThread());
209          sync.release(1);
210 <        Thread.sleep(SHORT_DELAY_MS);
210 >        delay(SHORT_DELAY_MS);
211          assertNull(sync.getFirstQueuedThread());
212          t1.join();
213          t2.join();
# Line 222 | Line 224 | public class AbstractQueuedSynchronizerT
224          assertFalse(sync.hasContended());
225          sync.acquire(1);
226          t1.start();
227 <        Thread.sleep(SHORT_DELAY_MS);
227 >        delay(SHORT_DELAY_MS);
228          assertTrue(sync.hasContended());
229          t2.start();
230 <        Thread.sleep(SHORT_DELAY_MS);
230 >        delay(SHORT_DELAY_MS);
231          assertTrue(sync.hasContended());
232          t1.interrupt();
233 <        Thread.sleep(SHORT_DELAY_MS);
233 >        delay(SHORT_DELAY_MS);
234          assertTrue(sync.hasContended());
235          sync.release(1);
236 <        Thread.sleep(SHORT_DELAY_MS);
236 >        delay(SHORT_DELAY_MS);
237          assertTrue(sync.hasContended());
238          t1.join();
239          t2.join();
# Line 248 | Line 250 | public class AbstractQueuedSynchronizerT
250          sync.acquire(1);
251          assertTrue(sync.getQueuedThreads().isEmpty());
252          t1.start();
253 <        Thread.sleep(SHORT_DELAY_MS);
253 >        delay(SHORT_DELAY_MS);
254          assertTrue(sync.getQueuedThreads().contains(t1));
255          t2.start();
256 <        Thread.sleep(SHORT_DELAY_MS);
256 >        delay(SHORT_DELAY_MS);
257          assertTrue(sync.getQueuedThreads().contains(t1));
258          assertTrue(sync.getQueuedThreads().contains(t2));
259          t1.interrupt();
260 <        Thread.sleep(SHORT_DELAY_MS);
260 >        delay(SHORT_DELAY_MS);
261          assertFalse(sync.getQueuedThreads().contains(t1));
262          assertTrue(sync.getQueuedThreads().contains(t2));
263          sync.release(1);
264 <        Thread.sleep(SHORT_DELAY_MS);
264 >        delay(SHORT_DELAY_MS);
265          assertTrue(sync.getQueuedThreads().isEmpty());
266          t1.join();
267          t2.join();
# Line 276 | Line 278 | public class AbstractQueuedSynchronizerT
278          sync.acquire(1);
279          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
280          t1.start();
281 <        Thread.sleep(SHORT_DELAY_MS);
281 >        delay(SHORT_DELAY_MS);
282          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
283          t2.start();
284 <        Thread.sleep(SHORT_DELAY_MS);
284 >        delay(SHORT_DELAY_MS);
285          assertTrue(sync.getExclusiveQueuedThreads().contains(t1));
286          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
287          t1.interrupt();
288 <        Thread.sleep(SHORT_DELAY_MS);
288 >        delay(SHORT_DELAY_MS);
289          assertFalse(sync.getExclusiveQueuedThreads().contains(t1));
290          assertTrue(sync.getExclusiveQueuedThreads().contains(t2));
291          sync.release(1);
292 <        Thread.sleep(SHORT_DELAY_MS);
292 >        delay(SHORT_DELAY_MS);
293          assertTrue(sync.getExclusiveQueuedThreads().isEmpty());
294          t1.join();
295          t2.join();
# Line 304 | Line 306 | public class AbstractQueuedSynchronizerT
306          sync.acquire(1);
307          assertTrue(sync.getSharedQueuedThreads().isEmpty());
308          t1.start();
309 <        Thread.sleep(SHORT_DELAY_MS);
309 >        delay(SHORT_DELAY_MS);
310          assertTrue(sync.getSharedQueuedThreads().isEmpty());
311          t2.start();
312 <        Thread.sleep(SHORT_DELAY_MS);
312 >        delay(SHORT_DELAY_MS);
313          assertTrue(sync.getSharedQueuedThreads().isEmpty());
314          t1.interrupt();
315 <        Thread.sleep(SHORT_DELAY_MS);
315 >        delay(SHORT_DELAY_MS);
316          assertTrue(sync.getSharedQueuedThreads().isEmpty());
317          sync.release(1);
318 <        Thread.sleep(SHORT_DELAY_MS);
318 >        delay(SHORT_DELAY_MS);
319          assertTrue(sync.getSharedQueuedThreads().isEmpty());
320          t1.join();
321          t2.join();
# Line 331 | Line 333 | public class AbstractQueuedSynchronizerT
333              }});
334  
335          t.start();
336 <        Thread.sleep(SHORT_DELAY_MS);
336 >        delay(SHORT_DELAY_MS);
337          t.interrupt();
338          t.join();
339      }
# Line 345 | Line 347 | public class AbstractQueuedSynchronizerT
347          sync.acquire(1);
348          Thread t = new Thread(new CheckedRunnable() {
349              public void realRun() {
350 <                threadAssertFalse(sync.tryAcquire(1));
350 >                assertFalse(sync.tryAcquire(1));
351              }});
352  
353          t.start();
# Line 383 | Line 385 | public class AbstractQueuedSynchronizerT
385          Thread t = new Thread(new CheckedRunnable() {
386              public void realRun() throws InterruptedException {
387                  sync.acquire(1);
388 <                Thread.sleep(SMALL_DELAY_MS);
388 >                delay(SMALL_DELAY_MS);
389                  sync.release(1);
390              }});
391  
392          t.start();
393 <        Thread.sleep(SHORT_DELAY_MS);
393 >        delay(SHORT_DELAY_MS);
394          assertTrue(sync.isHeldExclusively());
395          t.join();
396          assertFalse(sync.isHeldExclusively());
# Line 404 | Line 406 | public class AbstractQueuedSynchronizerT
406          Thread t = new Thread(new InterruptedSyncRunnable(sync));
407  
408          t.start();
409 <        Thread.sleep(SHORT_DELAY_MS);
409 >        delay(SHORT_DELAY_MS);
410          t.interrupt();
411 <        Thread.sleep(SHORT_DELAY_MS);
411 >        delay(SHORT_DELAY_MS);
412          sync.release(1);
413          t.join();
414      }
# Line 419 | Line 421 | public class AbstractQueuedSynchronizerT
421          sync.acquireInterruptibly(1);
422          Thread t = new Thread(new InterruptedSyncRunnable(sync));
423          t.start();
424 <        Thread.sleep(SHORT_DELAY_MS);
424 >        delay(SHORT_DELAY_MS);
425          t.interrupt();
426          assertTrue(sync.isHeldExclusively());
427          t.join();
# Line 473 | Line 475 | public class AbstractQueuedSynchronizerT
475      }
476  
477      /**
478 <     *  Timed await without a signal times out
478 >     * Timed await without a signal times out
479       */
480      public void testAwait_Timeout() throws InterruptedException {
481          final Mutex sync = new Mutex();
# Line 509 | Line 511 | public class AbstractQueuedSynchronizerT
511              }});
512  
513          t.start();
514 <        Thread.sleep(SHORT_DELAY_MS);
514 >        delay(SHORT_DELAY_MS);
515          sync.acquire(1);
516          c.signal();
517          sync.release(1);
# Line 642 | Line 644 | public class AbstractQueuedSynchronizerT
644          Thread t = new Thread(new CheckedRunnable() {
645              public void realRun() throws InterruptedException {
646                  sync.acquire(1);
647 <                threadAssertFalse(sync.hasWaiters(c));
648 <                threadAssertEquals(0, sync.getWaitQueueLength(c));
647 >                assertFalse(sync.hasWaiters(c));
648 >                assertEquals(0, sync.getWaitQueueLength(c));
649                  c.await();
650                  sync.release(1);
651              }});
652  
653          t.start();
654 <        Thread.sleep(SHORT_DELAY_MS);
654 >        delay(SHORT_DELAY_MS);
655          sync.acquire(1);
656          assertTrue(sync.hasWaiters(c));
657          assertEquals(1, sync.getWaitQueueLength(c));
658          c.signal();
659          sync.release(1);
660 <        Thread.sleep(SHORT_DELAY_MS);
660 >        delay(SHORT_DELAY_MS);
661          sync.acquire(1);
662          assertFalse(sync.hasWaiters(c));
663          assertEquals(0, sync.getWaitQueueLength(c));
# Line 673 | Line 675 | public class AbstractQueuedSynchronizerT
675          Thread t1 = new Thread(new CheckedRunnable() {
676              public void realRun() throws InterruptedException {
677                  sync.acquire(1);
678 <                threadAssertFalse(sync.hasWaiters(c));
679 <                threadAssertEquals(0, sync.getWaitQueueLength(c));
678 >                assertFalse(sync.hasWaiters(c));
679 >                assertEquals(0, sync.getWaitQueueLength(c));
680                  c.await();
681                  sync.release(1);
682              }});
# Line 682 | Line 684 | public class AbstractQueuedSynchronizerT
684          Thread t2 = new Thread(new CheckedRunnable() {
685              public void realRun() throws InterruptedException {
686                  sync.acquire(1);
687 <                threadAssertTrue(sync.hasWaiters(c));
688 <                threadAssertEquals(1, sync.getWaitQueueLength(c));
687 >                assertTrue(sync.hasWaiters(c));
688 >                assertEquals(1, sync.getWaitQueueLength(c));
689                  c.await();
690                  sync.release(1);
691              }});
692  
693          t1.start();
694 <        Thread.sleep(SHORT_DELAY_MS);
694 >        delay(SHORT_DELAY_MS);
695          t2.start();
696 <        Thread.sleep(SHORT_DELAY_MS);
696 >        delay(SHORT_DELAY_MS);
697          sync.acquire(1);
698          assertTrue(sync.hasWaiters(c));
699          assertEquals(2, sync.getWaitQueueLength(c));
700          c.signalAll();
701          sync.release(1);
702 <        Thread.sleep(SHORT_DELAY_MS);
702 >        delay(SHORT_DELAY_MS);
703          sync.acquire(1);
704          assertFalse(sync.hasWaiters(c));
705          assertEquals(0, sync.getWaitQueueLength(c));
# Line 717 | Line 719 | public class AbstractQueuedSynchronizerT
719          Thread t1 = new Thread(new CheckedRunnable() {
720              public void realRun() throws InterruptedException {
721                  sync.acquire(1);
722 <                threadAssertTrue(sync.getWaitingThreads(c).isEmpty());
722 >                assertTrue(sync.getWaitingThreads(c).isEmpty());
723                  c.await();
724                  sync.release(1);
725              }});
# Line 725 | Line 727 | public class AbstractQueuedSynchronizerT
727          Thread t2 = new Thread(new CheckedRunnable() {
728              public void realRun() throws InterruptedException {
729                  sync.acquire(1);
730 <                threadAssertFalse(sync.getWaitingThreads(c).isEmpty());
730 >                assertFalse(sync.getWaitingThreads(c).isEmpty());
731                  c.await();
732                  sync.release(1);
733              }});
# Line 734 | Line 736 | public class AbstractQueuedSynchronizerT
736          assertTrue(sync.getWaitingThreads(c).isEmpty());
737          sync.release(1);
738          t1.start();
739 <        Thread.sleep(SHORT_DELAY_MS);
739 >        delay(SHORT_DELAY_MS);
740          t2.start();
741 <        Thread.sleep(SHORT_DELAY_MS);
741 >        delay(SHORT_DELAY_MS);
742          sync.acquire(1);
743          assertTrue(sync.hasWaiters(c));
744          assertTrue(sync.getWaitingThreads(c).contains(t1));
745          assertTrue(sync.getWaitingThreads(c).contains(t2));
746          c.signalAll();
747          sync.release(1);
748 <        Thread.sleep(SHORT_DELAY_MS);
748 >        delay(SHORT_DELAY_MS);
749          sync.acquire(1);
750          assertFalse(sync.hasWaiters(c));
751          assertTrue(sync.getWaitingThreads(c).isEmpty());
# Line 770 | Line 772 | public class AbstractQueuedSynchronizerT
772              }});
773  
774          t.start();
775 <        Thread.sleep(SHORT_DELAY_MS);
775 >        delay(SHORT_DELAY_MS);
776          t.interrupt();
777          sync.acquire(1);
778          c.signal();
# Line 792 | Line 794 | public class AbstractQueuedSynchronizerT
794              }});
795  
796          t.start();
797 <        Thread.sleep(SHORT_DELAY_MS);
797 >        delay(SHORT_DELAY_MS);
798          t.interrupt();
799          t.join(SHORT_DELAY_MS);
800          assertFalse(t.isAlive());
# Line 811 | Line 813 | public class AbstractQueuedSynchronizerT
813              }});
814  
815          t.start();
816 <        Thread.sleep(SHORT_DELAY_MS);
816 >        delay(SHORT_DELAY_MS);
817          t.interrupt();
818          t.join(SHORT_DELAY_MS);
819          assertFalse(t.isAlive());
# Line 831 | Line 833 | public class AbstractQueuedSynchronizerT
833              }});
834  
835          t.start();
836 <        Thread.sleep(SHORT_DELAY_MS);
836 >        delay(SHORT_DELAY_MS);
837          t.interrupt();
838          t.join(SHORT_DELAY_MS);
839          assertFalse(t.isAlive());
# Line 859 | Line 861 | public class AbstractQueuedSynchronizerT
861  
862          t1.start();
863          t2.start();
864 <        Thread.sleep(SHORT_DELAY_MS);
864 >        delay(SHORT_DELAY_MS);
865          sync.acquire(1);
866          c.signalAll();
867          sync.release(1);
# Line 932 | Line 934 | public class AbstractQueuedSynchronizerT
934  
935          Thread t = new Thread(new CheckedRunnable() {
936              public void realRun() throws InterruptedException {
937 <                threadAssertFalse(l.isSignalled());
937 >                assertFalse(l.isSignalled());
938                  l.acquireSharedInterruptibly(0);
939 <                threadAssertTrue(l.isSignalled());
939 >                assertTrue(l.isSignalled());
940              }});
941  
942          t.start();
943          assertFalse(l.isSignalled());
944 <        Thread.sleep(SHORT_DELAY_MS);
944 >        delay(SHORT_DELAY_MS);
945          l.releaseShared(0);
946          assertTrue(l.isSignalled());
947          t.join();
# Line 949 | Line 951 | public class AbstractQueuedSynchronizerT
951      /**
952       * acquireSharedTimed returns after release
953       */
954 <    public void testAsquireSharedTimed() throws InterruptedException {
954 >    public void testAcquireSharedTimed() throws InterruptedException {
955          final BooleanLatch l = new BooleanLatch();
956  
957          Thread t = new Thread(new CheckedRunnable() {
# Line 962 | Line 964 | public class AbstractQueuedSynchronizerT
964  
965          t.start();
966          assertFalse(l.isSignalled());
967 <        Thread.sleep(SHORT_DELAY_MS);
967 >        delay(SHORT_DELAY_MS);
968          l.releaseShared(0);
969          assertTrue(l.isSignalled());
970          t.join();
# Line 975 | Line 977 | public class AbstractQueuedSynchronizerT
977          final BooleanLatch l = new BooleanLatch();
978          Thread t = new Thread(new CheckedInterruptedRunnable() {
979              public void realRun() throws InterruptedException {
980 <                threadAssertFalse(l.isSignalled());
980 >                assertFalse(l.isSignalled());
981                  l.acquireSharedInterruptibly(0);
982              }});
983  
# Line 998 | Line 1000 | public class AbstractQueuedSynchronizerT
1000              }});
1001  
1002          t.start();
1003 <        Thread.sleep(SHORT_DELAY_MS);
1003 >        delay(SHORT_DELAY_MS);
1004          assertFalse(l.isSignalled());
1005          t.interrupt();
1006          t.join();
# Line 1017 | Line 1019 | public class AbstractQueuedSynchronizerT
1019              }});
1020  
1021          t.start();
1022 <        Thread.sleep(SHORT_DELAY_MS);
1022 >        delay(SHORT_DELAY_MS);
1023          assertFalse(l.isSignalled());
1024          t.join();
1025      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines