test/jdk/java/util/concurrent/tck/SemaphoreTest.java
changeset 58138 1e4270f875ee
parent 48843 21efc1774302
equal deleted inserted replaced
58137:6a556bcd94fc 58138:1e4270f875ee
    36 import static java.util.concurrent.TimeUnit.MILLISECONDS;
    36 import static java.util.concurrent.TimeUnit.MILLISECONDS;
    37 
    37 
    38 import java.util.Collection;
    38 import java.util.Collection;
    39 import java.util.concurrent.CountDownLatch;
    39 import java.util.concurrent.CountDownLatch;
    40 import java.util.concurrent.Semaphore;
    40 import java.util.concurrent.Semaphore;
    41 import java.util.concurrent.ThreadLocalRandom;
       
    42 
    41 
    43 import junit.framework.Test;
    42 import junit.framework.Test;
    44 import junit.framework.TestSuite;
    43 import junit.framework.TestSuite;
    45 
    44 
    46 public class SemaphoreTest extends JSR166TestCase {
    45 public class SemaphoreTest extends JSR166TestCase {
   218     }
   217     }
   219 
   218 
   220     /**
   219     /**
   221      * timed tryAcquire times out
   220      * timed tryAcquire times out
   222      */
   221      */
   223     public void testTryAcquire_timeout() {
   222     public void testTryAcquire_timeout() throws InterruptedException {
   224         final boolean fair = ThreadLocalRandom.current().nextBoolean();
   223         final boolean fair = randomBoolean();
   225         final Semaphore s = new Semaphore(0, fair);
   224         final Semaphore s = new Semaphore(0, fair);
   226         final long startTime = System.nanoTime();
   225         final long startTime = System.nanoTime();
   227         try { assertFalse(s.tryAcquire(timeoutMillis(), MILLISECONDS)); }
   226         assertFalse(s.tryAcquire(timeoutMillis(), MILLISECONDS));
   228         catch (InterruptedException e) { threadUnexpectedException(e); }
       
   229         assertTrue(millisElapsedSince(startTime) >= timeoutMillis());
   227         assertTrue(millisElapsedSince(startTime) >= timeoutMillis());
   230     }
   228     }
   231 
   229 
   232     /**
   230     /**
   233      * timed tryAcquire(N) times out
   231      * timed tryAcquire(N) times out
   234      */
   232      */
   235     public void testTryAcquireN_timeout() {
   233     public void testTryAcquireN_timeout() throws InterruptedException {
   236         final boolean fair = ThreadLocalRandom.current().nextBoolean();
   234         final boolean fair = randomBoolean();
   237         final Semaphore s = new Semaphore(2, fair);
   235         final Semaphore s = new Semaphore(2, fair);
   238         final long startTime = System.nanoTime();
   236         final long startTime = System.nanoTime();
   239         try { assertFalse(s.tryAcquire(3, timeoutMillis(), MILLISECONDS)); }
   237         assertFalse(s.tryAcquire(3, timeoutMillis(), MILLISECONDS));
   240         catch (InterruptedException e) { threadUnexpectedException(e); }
       
   241         assertTrue(millisElapsedSince(startTime) >= timeoutMillis());
   238         assertTrue(millisElapsedSince(startTime) >= timeoutMillis());
   242     }
   239     }
   243 
   240 
   244     /**
   241     /**
   245      * acquire(), acquire(N), timed tryAcquired, timed tryAcquire(N)
   242      * acquire(), acquire(N), timed tryAcquired, timed tryAcquire(N)