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

Comparing jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java (file contents):
Revision 1.30 by jsr166, Wed Dec 31 19:23:56 2014 UTC vs.
Revision 1.39 by jsr166, Sun May 14 02:20:48 2017 UTC

# Line 21 | Line 21 | import junit.framework.TestSuite;
21  
22   public class AbstractQueuedLongSynchronizerTest 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(AbstractQueuedLongSynchronizerTest.class);
# Line 94 | Line 94 | public class AbstractQueuedLongSynchroni
94          }
95  
96          public boolean tryReleaseShared(long ignore) {
97 <            setState(1 << 62);
97 >            setState(1L << 62);
98              return true;
99          }
100      }
# Line 225 | Line 225 | public class AbstractQueuedLongSynchroni
225          case awaitUntil:
226              assertTrue(c.awaitUntil(delayedDate(timeoutMillis)));
227              break;
228 +        default:
229 +            throw new AssertionError();
230          }
231      }
232  
# Line 233 | Line 235 | public class AbstractQueuedLongSynchroni
235       * default timeout duration).
236       */
237      void assertAwaitTimesOut(ConditionObject c, AwaitMethod awaitMethod) {
238 <        long timeoutMillis = timeoutMillis();
239 <        long startTime = System.nanoTime();
238 >        final long timeoutMillis = timeoutMillis();
239 >        final long startTime;
240          try {
241              switch (awaitMethod) {
242              case awaitTimed:
243 +                startTime = System.nanoTime();
244                  assertFalse(c.await(timeoutMillis, MILLISECONDS));
245 +                assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
246                  break;
247              case awaitNanos:
248 +                startTime = System.nanoTime();
249                  long nanosTimeout = MILLISECONDS.toNanos(timeoutMillis);
250                  long nanosRemaining = c.awaitNanos(nanosTimeout);
251                  assertTrue(nanosRemaining <= 0);
252 +                assertTrue(nanosRemaining > -MILLISECONDS.toNanos(LONG_DELAY_MS));
253 +                assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
254                  break;
255              case awaitUntil:
256 +                // We shouldn't assume that nanoTime and currentTimeMillis
257 +                // use the same time source, so don't use nanoTime here.
258 +                java.util.Date delayedDate = delayedDate(timeoutMillis);
259                  assertFalse(c.awaitUntil(delayedDate(timeoutMillis)));
260 +                assertTrue(new java.util.Date().getTime() >= delayedDate.getTime());
261                  break;
262              default:
263                  throw new UnsupportedOperationException();
264              }
265          } catch (InterruptedException ie) { threadUnexpectedException(ie); }
255        assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
266      }
267  
268      /**
# Line 955 | Line 965 | public class AbstractQueuedLongSynchroni
965       */
966      public void testAwaitUninterruptibly() {
967          final Mutex sync = new Mutex();
968 <        final ConditionObject c = sync.newCondition();
968 >        final ConditionObject condition = sync.newCondition();
969          final BooleanLatch pleaseInterrupt = new BooleanLatch();
970          Thread t = newStartedThread(new CheckedRunnable() {
971              public void realRun() {
972                  sync.acquire();
973                  assertTrue(pleaseInterrupt.releaseShared(0));
974 <                c.awaitUninterruptibly();
974 >                condition.awaitUninterruptibly();
975                  assertTrue(Thread.interrupted());
976 <                assertHasWaitersLocked(sync, c, NO_THREADS);
976 >                assertHasWaitersLocked(sync, condition, NO_THREADS);
977                  sync.release();
978              }});
979  
980          pleaseInterrupt.acquireShared(0);
981          sync.acquire();
982 <        assertHasWaitersLocked(sync, c, t);
982 >        assertHasWaitersLocked(sync, condition, t);
983          sync.release();
984          t.interrupt();
985 <        assertHasWaitersUnlocked(sync, c, t);
986 <        assertThreadStaysAlive(t);
985 >        assertHasWaitersUnlocked(sync, condition, t);
986 >        assertThreadBlocks(t, Thread.State.WAITING);
987          sync.acquire();
988 <        assertHasWaitersLocked(sync, c, t);
988 >        assertHasWaitersLocked(sync, condition, t);
989          assertHasExclusiveQueuedThreads(sync, NO_THREADS);
990 <        c.signal();
991 <        assertHasWaitersLocked(sync, c, NO_THREADS);
990 >        condition.signal();
991 >        assertHasWaitersLocked(sync, condition, NO_THREADS);
992          assertHasExclusiveQueuedThreads(sync, t);
993          sync.release();
994          awaitTermination(t);
# Line 1121 | Line 1131 | public class AbstractQueuedLongSynchroni
1131  
1132          waitForQueuedThread(l, t);
1133          assertFalse(l.isSignalled());
1134 <        assertThreadStaysAlive(t);
1134 >        assertThreadBlocks(t, Thread.State.WAITING);
1135          assertHasSharedQueuedThreads(l, t);
1136          assertTrue(l.releaseShared(0));
1137          assertTrue(l.isSignalled());
# Line 1195 | Line 1205 | public class AbstractQueuedLongSynchroni
1205      public void testTryAcquireSharedNanos_Timeout() {
1206          final BooleanLatch l = new BooleanLatch();
1207          final BooleanLatch observedQueued = new BooleanLatch();
1198        final long timeoutMillis = timeoutMillis();
1208          Thread t = newStartedThread(new CheckedRunnable() {
1209              public void realRun() throws InterruptedException {
1210                  assertFalse(l.isSignalled());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines