[cvs] / jsr166 / src / test / tck / AbstractQueuedLongSynchronizerTest.java Repository:
ViewVC logotype

Diff of /jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9, Wed Nov 18 08:22:57 2009 UTC revision 1.10, Wed Nov 18 16:04:34 2009 UTC
# Line 68  Line 68 
68      }      }
69    
70      /**      /**
71       * A runnable calling acquireInterruptibly       * A runnable calling acquireInterruptibly that does not expect to
72         * be interrupted.
73       */       */
74      class InterruptibleSyncRunnable implements Runnable {      class InterruptibleSyncRunnable extends CheckedRunnable {
75          final Mutex sync;          final Mutex sync;
76          InterruptibleSyncRunnable(Mutex l) { sync = l; }          InterruptibleSyncRunnable(Mutex l) { sync = l; }
77          public void run() {          public void realRun() throws InterruptedException {
             try {  
78                  sync.acquireInterruptibly(1);                  sync.acquireInterruptibly(1);
             } catch (InterruptedException success) {}  
79          }          }
80      }      }
81    
82    
83      /**      /**
84       * A runnable calling acquireInterruptibly that expects to be       * A runnable calling acquireInterruptibly that expects to be
85       * interrupted       * interrupted.
86       */       */
87      class InterruptedSyncRunnable implements Runnable {      class InterruptedSyncRunnable extends CheckedInterruptedRunnable {
88          final Mutex sync;          final Mutex sync;
89          InterruptedSyncRunnable(Mutex l) { sync = l; }          InterruptedSyncRunnable(Mutex l) { sync = l; }
90          public void run() {          public void realRun() throws InterruptedException {
             try {  
91                  sync.acquireInterruptibly(1);                  sync.acquireInterruptibly(1);
                 threadShouldThrow();  
             } catch (InterruptedException success) {}  
92          }          }
93      }      }
94    
# Line 331  Line 327 
327      public void testInterruptedException2() throws InterruptedException {      public void testInterruptedException2() throws InterruptedException {
328          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
329          sync.acquire(1);          sync.acquire(1);
330          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
331                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
332                          sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000);                          sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000);
333                          threadShouldThrow();              }});
                     } catch (InterruptedException success) {}  
                 }  
             });  
334    
335          t.start();          t.start();
336          t.interrupt();          t.interrupt();
# Line 352  Line 344 
344      public void testTryAcquireWhenSynced() throws InterruptedException {      public void testTryAcquireWhenSynced() throws InterruptedException {
345          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
346          sync.acquire(1);          sync.acquire(1);
347          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
348                  public void run() {              public void realRun() {
349                      threadAssertFalse(sync.tryAcquire(1));                      threadAssertFalse(sync.tryAcquire(1));
350                  }              }});
             });  
351    
352          t.start();          t.start();
353          t.join();          t.join();
# Line 369  Line 360 
360      public void testAcquireNanos_Timeout() throws InterruptedException {      public void testAcquireNanos_Timeout() throws InterruptedException {
361          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
362          sync.acquire(1);          sync.acquire(1);
363          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
364                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
365                          threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000));                          threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000));
366                      } catch (Exception ex) {              }});
                         threadUnexpectedException(ex);  
                     }  
                 }  
             });  
367    
368          t.start();          t.start();
369          t.join();          t.join();
# Line 394  Line 380 
380          assertTrue(sync.isHeldExclusively());          assertTrue(sync.isHeldExclusively());
381          sync.release(1);          sync.release(1);
382          assertFalse(sync.isHeldExclusively());          assertFalse(sync.isHeldExclusively());
383          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
384                  public void run() {              public void realRun() throws InterruptedException {
385                      sync.acquire(1);                      sync.acquire(1);
                     try {  
386                          Thread.sleep(SMALL_DELAY_MS);                          Thread.sleep(SMALL_DELAY_MS);
                     }  
                     catch (Exception e) {  
                         threadUnexpectedException(e);  
                     }  
387                      sync.release(1);                      sync.release(1);
388                  }              }});
             });  
389    
390          t.start();          t.start();
391          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 463  Line 443 
443          try {          try {
444              c.await();              c.await();
445              shouldThrow();              shouldThrow();
446          }          } catch (IllegalMonitorStateException success) {}
         catch (IllegalMonitorStateException success) {  
         }  
447      }      }
448    
449      /**      /**
# Line 477  Line 455 
455          try {          try {
456              c.signal();              c.signal();
457              shouldThrow();              shouldThrow();
458          }          } catch (IllegalMonitorStateException success) {}
         catch (IllegalMonitorStateException success) {}  
459      }      }
460    
461      /**      /**
# Line 522  Line 499 
499      public void testAwait() throws InterruptedException {      public void testAwait() throws InterruptedException {
500          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
501          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
502          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
503                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
504                          sync.acquire(1);                          sync.acquire(1);
505                          c.await();                          c.await();
506                          sync.release(1);                          sync.release(1);
507                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
508    
509          t.start();          t.start();
510          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 666  Line 637 
637      public void testHasWaiters() throws InterruptedException {      public void testHasWaiters() throws InterruptedException {
638          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
639          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
640          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
641                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
642                          sync.acquire(1);                          sync.acquire(1);
643                          threadAssertFalse(sync.hasWaiters(c));                          threadAssertFalse(sync.hasWaiters(c));
644                          threadAssertEquals(0, sync.getWaitQueueLength(c));                          threadAssertEquals(0, sync.getWaitQueueLength(c));
645                          c.await();                          c.await();
646                          sync.release(1);                          sync.release(1);
647                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
648    
649          t.start();          t.start();
650          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 703  Line 668 
668      public void testGetWaitQueueLength() throws InterruptedException {      public void testGetWaitQueueLength() throws InterruptedException {
669          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
670          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
671          Thread t1 = new Thread(new Runnable() {          Thread t1 = new Thread(new CheckedRunnable() {
672                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
673                          sync.acquire(1);                          sync.acquire(1);
674                          threadAssertFalse(sync.hasWaiters(c));                          threadAssertFalse(sync.hasWaiters(c));
675                          threadAssertEquals(0, sync.getWaitQueueLength(c));                          threadAssertEquals(0, sync.getWaitQueueLength(c));
676                          c.await();                          c.await();
677                          sync.release(1);                          sync.release(1);
678                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
679    
680          Thread t2 = new Thread(new Runnable() {          Thread t2 = new Thread(new CheckedRunnable() {
681                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
682                          sync.acquire(1);                          sync.acquire(1);
683                          threadAssertTrue(sync.hasWaiters(c));                          threadAssertTrue(sync.hasWaiters(c));
684                          threadAssertEquals(1, sync.getWaitQueueLength(c));                          threadAssertEquals(1, sync.getWaitQueueLength(c));
685                          c.await();                          c.await();
686                          sync.release(1);                          sync.release(1);
687                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
688    
689          t1.start();          t1.start();
690          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 759  Line 712 
712      public void testGetWaitingThreads() throws InterruptedException {      public void testGetWaitingThreads() throws InterruptedException {
713          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
714          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
715          Thread t1 = new Thread(new Runnable() {          Thread t1 = new Thread(new CheckedRunnable() {
716                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
717                          sync.acquire(1);                          sync.acquire(1);
718                          threadAssertTrue(sync.getWaitingThreads(c).isEmpty());                          threadAssertTrue(sync.getWaitingThreads(c).isEmpty());
719                          c.await();                          c.await();
720                          sync.release(1);                          sync.release(1);
721                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
722    
723          Thread t2 = new Thread(new Runnable() {          Thread t2 = new Thread(new CheckedRunnable() {
724                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
725                          sync.acquire(1);                          sync.acquire(1);
726                          threadAssertFalse(sync.getWaitingThreads(c).isEmpty());                          threadAssertFalse(sync.getWaitingThreads(c).isEmpty());
727                          c.await();                          c.await();
728                          sync.release(1);                          sync.release(1);
729                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException(e);  
                     }  
                 }  
             });  
730    
731              sync.acquire(1);              sync.acquire(1);
732              assertTrue(sync.getWaitingThreads(c).isEmpty());              assertTrue(sync.getWaitingThreads(c).isEmpty());
# Line 819  Line 760 
760      public void testAwaitUninterruptibly() throws InterruptedException {      public void testAwaitUninterruptibly() throws InterruptedException {
761          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
762          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
763          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
764                  public void run() {              public void realRun() {
765                      sync.acquire(1);                      sync.acquire(1);
766                      c.awaitUninterruptibly();                      c.awaitUninterruptibly();
767                      sync.release(1);                      sync.release(1);
768                  }              }});
             });  
769    
770          t.start();          t.start();
771          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 843  Line 783 
783      public void testAwait_Interrupt() throws InterruptedException {      public void testAwait_Interrupt() throws InterruptedException {
784          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
785          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
786          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
787                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
788                          sync.acquire(1);                          sync.acquire(1);
789                          c.await();                          c.await();
790                          sync.release(1);                          sync.release(1);
791                          threadShouldThrow();              }});
                     }  
                     catch (InterruptedException success) {  
                     }  
                 }  
             });  
792    
793          t.start();          t.start();
794          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 869  Line 803 
803      public void testAwaitNanos_Interrupt() throws InterruptedException {      public void testAwaitNanos_Interrupt() throws InterruptedException {
804          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
805          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
806          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
807                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
808                          sync.acquire(1);                          sync.acquire(1);
809                          c.awaitNanos(1000 * 1000 * 1000); // 1 sec                          c.awaitNanos(1000 * 1000 * 1000); // 1 sec
810                          sync.release(1);                          sync.release(1);
811                          threadShouldThrow();              }});
                     }  
                     catch (InterruptedException success) {  
                     }  
                 }  
             });  
812    
813          t.start();          t.start();
814          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 895  Line 823 
823      public void testAwaitUntil_Interrupt() throws InterruptedException {      public void testAwaitUntil_Interrupt() throws InterruptedException {
824          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
825          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
826          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
827                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
828                          sync.acquire(1);                          sync.acquire(1);
829                          java.util.Date d = new java.util.Date();                          java.util.Date d = new java.util.Date();
830                          c.awaitUntil(new java.util.Date(d.getTime() + 10000));                          c.awaitUntil(new java.util.Date(d.getTime() + 10000));
831                          sync.release(1);                          sync.release(1);
832                          threadShouldThrow();              }});
                     }  
                     catch (InterruptedException success) {  
                     }  
                 }  
             });  
833    
834          t.start();          t.start();
835          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 922  Line 844 
844      public void testSignalAll() throws InterruptedException {      public void testSignalAll() throws InterruptedException {
845          final Mutex sync = new Mutex();          final Mutex sync = new Mutex();
846          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();          final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition();
847          Thread t1 = new Thread(new Runnable() {          Thread t1 = new Thread(new CheckedRunnable() {
848                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
849                          sync.acquire(1);                          sync.acquire(1);
850                          c.await();                          c.await();
851                          sync.release(1);                          sync.release(1);
852                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException();  
                     }  
                 }  
             });  
853    
854          Thread t2 = new Thread(new Runnable() {          Thread t2 = new Thread(new CheckedRunnable() {
855                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
856                          sync.acquire(1);                          sync.acquire(1);
857                          c.await();                          c.await();
858                          sync.release(1);                          sync.release(1);
859                      }              }});
                     catch (InterruptedException e) {  
                         threadUnexpectedException();  
                     }  
                 }  
             });  
860    
861          t1.start();          t1.start();
862          t2.start();          t2.start();
# Line 1021  Line 931 
931      public void testAcquireSharedInterruptibly() throws InterruptedException {      public void testAcquireSharedInterruptibly() throws InterruptedException {
932          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
933    
934          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
935                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
936                          threadAssertFalse(l.isSignalled());                          threadAssertFalse(l.isSignalled());
937                          l.acquireSharedInterruptibly(0);                          l.acquireSharedInterruptibly(0);
938                          threadAssertTrue(l.isSignalled());                          threadAssertTrue(l.isSignalled());
939                      } catch (InterruptedException e) {              }});
                         threadUnexpectedException();  
                     }  
                 }  
             });  
940    
941          t.start();          t.start();
942          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
# Line 1048  Line 953 
953      public void testAsquireSharedTimed() throws InterruptedException {      public void testAsquireSharedTimed() throws InterruptedException {
954          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
955    
956          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
957                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
958                          threadAssertFalse(l.isSignalled());                          threadAssertFalse(l.isSignalled());
959                          threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000));                          threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000));
960                          threadAssertTrue(l.isSignalled());                          threadAssertTrue(l.isSignalled());
961                }});
                     } catch (InterruptedException e) {  
                         threadUnexpectedException();  
                     }  
                 }  
             });  
962    
963          t.start();          t.start();
964          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
# Line 1074  Line 973 
973       */       */
974      public void testAcquireSharedInterruptibly_InterruptedException() throws InterruptedException {      public void testAcquireSharedInterruptibly_InterruptedException() throws InterruptedException {
975          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
976          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
977                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
978                          threadAssertFalse(l.isSignalled());                          threadAssertFalse(l.isSignalled());
979                          l.acquireSharedInterruptibly(0);                          l.acquireSharedInterruptibly(0);
980                          threadShouldThrow();              }});
                     } catch (InterruptedException success) {}  
                 }  
             });  
981    
982          t.start();          t.start();
983          assertFalse(l.isSignalled());          assertFalse(l.isSignalled());
# Line 1095  Line 990 
990       */       */
991      public void testAcquireSharedNanos_InterruptedException() throws InterruptedException {      public void testAcquireSharedNanos_InterruptedException() throws InterruptedException {
992          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
993          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedInterruptedRunnable() {
994                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
995                          threadAssertFalse(l.isSignalled());                          threadAssertFalse(l.isSignalled());
996                          l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000);                          l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000);
997                          threadShouldThrow();              }});
                     } catch (InterruptedException success) {}  
                 }  
             });  
998    
999          t.start();          t.start();
1000          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 1117  Line 1008 
1008       */       */
1009      public void testAcquireSharedNanos_Timeout() throws InterruptedException {      public void testAcquireSharedNanos_Timeout() throws InterruptedException {
1010          final BooleanLatch l = new BooleanLatch();          final BooleanLatch l = new BooleanLatch();
1011          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
1012                  public void run() {              public void realRun() throws InterruptedException {
                     try {  
1013                          threadAssertFalse(l.isSignalled());                          threadAssertFalse(l.isSignalled());
1014                          threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000));                          threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000));
1015                      } catch (InterruptedException ie) {              }});
                         threadUnexpectedException();  
                     }  
                 }  
             });  
1016    
1017          t.start();          t.start();
1018          Thread.sleep(SHORT_DELAY_MS);          Thread.sleep(SHORT_DELAY_MS);
# Line 1134  Line 1020 
1020          t.join();          t.join();
1021      }      }
1022    
   
1023  }  }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8