1388 |
|
*/ |
1389 |
|
<T> void checkTimedGet(Future<T> f, T expectedValue, long timeoutMillis) { |
1390 |
|
long startTime = System.nanoTime(); |
1391 |
+ |
T actual = null; |
1392 |
|
try { |
1393 |
< |
assertEquals(expectedValue, f.get(timeoutMillis, MILLISECONDS)); |
1393 |
> |
actual = f.get(timeoutMillis, MILLISECONDS); |
1394 |
|
} catch (Throwable fail) { threadUnexpectedException(fail); } |
1395 |
+ |
assertEquals(expectedValue, actual); |
1396 |
|
if (millisElapsedSince(startTime) > timeoutMillis/2) |
1397 |
|
throw new AssertionError("timed get did not return promptly"); |
1398 |
|
} |
1571 |
|
} |
1572 |
|
|
1573 |
|
public void await(CountDownLatch latch, long timeoutMillis) { |
1574 |
+ |
boolean timedOut = false; |
1575 |
|
try { |
1576 |
< |
if (!latch.await(timeoutMillis, MILLISECONDS)) |
1574 |
< |
fail("timed out waiting for CountDownLatch for " |
1575 |
< |
+ (timeoutMillis/1000) + " sec"); |
1576 |
> |
timedOut = !latch.await(timeoutMillis, MILLISECONDS); |
1577 |
|
} catch (Throwable fail) { |
1578 |
|
threadUnexpectedException(fail); |
1579 |
|
} |
1580 |
+ |
if (timedOut) |
1581 |
+ |
fail("timed out waiting for CountDownLatch for " |
1582 |
+ |
+ (timeoutMillis/1000) + " sec"); |
1583 |
|
} |
1584 |
|
|
1585 |
|
public void await(CountDownLatch latch) { |
1587 |
|
} |
1588 |
|
|
1589 |
|
public void await(Semaphore semaphore) { |
1590 |
+ |
boolean timedOut = false; |
1591 |
|
try { |
1592 |
< |
if (!semaphore.tryAcquire(LONG_DELAY_MS, MILLISECONDS)) |
1588 |
< |
fail("timed out waiting for Semaphore for " |
1589 |
< |
+ (LONG_DELAY_MS/1000) + " sec"); |
1592 |
> |
timedOut = !semaphore.tryAcquire(LONG_DELAY_MS, MILLISECONDS); |
1593 |
|
} catch (Throwable fail) { |
1594 |
|
threadUnexpectedException(fail); |
1595 |
|
} |
1596 |
+ |
if (timedOut) |
1597 |
+ |
fail("timed out waiting for Semaphore for " |
1598 |
+ |
+ (LONG_DELAY_MS/1000) + " sec"); |
1599 |
|
} |
1600 |
|
|
1601 |
|
public void await(CyclicBarrier barrier) { |