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.47 by jsr166, Wed Dec 31 19:05:42 2014 UTC vs.
Revision 1.53 by jsr166, Sun Jan 1 20:34:39 2017 UTC

# Line 21 | Line 21 | import junit.framework.TestSuite;
21  
22   public class AbstractQueuedSynchronizerTest extends JSR166TestCase {
23      public static void main(String[] args) {
24 <        junit.textui.TestRunner.run(suite());
24 >        main(suite(), args);
25      }
26      public static Test suite() {
27          return new TestSuite(AbstractQueuedSynchronizerTest.class);
# Line 228 | Line 228 | public class AbstractQueuedSynchronizerT
228          case awaitUntil:
229              assertTrue(c.awaitUntil(delayedDate(timeoutMillis)));
230              break;
231 +        default:
232 +            throw new AssertionError();
233          }
234      }
235  
# Line 236 | Line 238 | public class AbstractQueuedSynchronizerT
238       * default timeout duration).
239       */
240      void assertAwaitTimesOut(ConditionObject c, AwaitMethod awaitMethod) {
241 <        long timeoutMillis = timeoutMillis();
242 <        long startTime = System.nanoTime();
241 >        final long timeoutMillis = timeoutMillis();
242 >        final long startTime;
243          try {
244              switch (awaitMethod) {
245              case awaitTimed:
246 +                startTime = System.nanoTime();
247                  assertFalse(c.await(timeoutMillis, MILLISECONDS));
248 +                assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
249                  break;
250              case awaitNanos:
251 +                startTime = System.nanoTime();
252                  long nanosTimeout = MILLISECONDS.toNanos(timeoutMillis);
253                  long nanosRemaining = c.awaitNanos(nanosTimeout);
254                  assertTrue(nanosRemaining <= 0);
255 +                assertTrue(nanosRemaining > -MILLISECONDS.toNanos(LONG_DELAY_MS));
256 +                assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
257                  break;
258              case awaitUntil:
259 +                // We shouldn't assume that nanoTime and currentTimeMillis
260 +                // use the same time source, so don't use nanoTime here.
261 +                java.util.Date delayedDate = delayedDate(timeoutMillis);
262                  assertFalse(c.awaitUntil(delayedDate(timeoutMillis)));
263 +                assertTrue(new java.util.Date().getTime() >= delayedDate.getTime());
264                  break;
265              default:
266                  throw new UnsupportedOperationException();
267              }
268          } catch (InterruptedException ie) { threadUnexpectedException(ie); }
258        assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
269      }
270  
271      /**
# Line 1198 | Line 1208 | public class AbstractQueuedSynchronizerT
1208      public void testTryAcquireSharedNanos_Timeout() {
1209          final BooleanLatch l = new BooleanLatch();
1210          final BooleanLatch observedQueued = new BooleanLatch();
1201        final long timeoutMillis = timeoutMillis();
1211          Thread t = newStartedThread(new CheckedRunnable() {
1212              public void realRun() throws InterruptedException {
1213                  assertFalse(l.isSignalled());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines