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

Comparing jsr166/src/test/tck/ForkJoinPool8Test.java (file contents):
Revision 1.14 by jsr166, Mon Jul 22 18:11:57 2013 UTC vs.
Revision 1.15 by dl, Sun Sep 15 22:35:46 2013 UTC

# Line 1548 | Line 1548 | public class ForkJoinPool8Test extends J
1548      public void testAwaitQuiescent2() throws Exception {
1549          final ForkJoinPool p = new ForkJoinPool();
1550          try {
1551            final long startTime = System.nanoTime();
1551              assertTrue(p.isQuiescent());
1552 <            ForkJoinTask a = new CheckedRecursiveAction() {
1553 <                    protected void realCompute() {
1554 <                        FibAction f = new FibAction(8);
1555 <                        assertSame(f, f.fork());
1556 <                        ForkJoinTask.helpQuiesce();
1557 <                        while (!f.isDone()) {
1558 <                            if (millisElapsedSince(startTime) > LONG_DELAY_MS)
1559 <                                threadFail("timed out");
1560 <                            assertFalse(p.getAsyncMode());
1561 <                            assertFalse(p.isShutdown());
1562 <                            assertFalse(p.isTerminating());
1563 <                            assertFalse(p.isTerminated());
1564 <                            Thread.yield();
1552 >            for (;;) {
1553 >                final long startTime = System.nanoTime();
1554 >                ForkJoinTask a = new CheckedRecursiveAction() {
1555 >                        protected void realCompute() {
1556 >                            FibAction f = new FibAction(8);
1557 >                            assertSame(f, f.fork());
1558 >                            ForkJoinTask.helpQuiesce();
1559 >                            while (!f.isDone()) {
1560 >                                if (millisElapsedSince(startTime) > LONG_DELAY_MS)
1561 >                                    threadFail("timed out");
1562 >                                assertFalse(p.getAsyncMode());
1563 >                                assertFalse(p.isShutdown());
1564 >                                assertFalse(p.isTerminating());
1565 >                                assertFalse(p.isTerminated());
1566 >                                Thread.yield();
1567 >                            }
1568 >                            assertEquals(0, ForkJoinTask.getQueuedTaskCount());
1569 >                            try {
1570 >                                assertEquals(21, f.result);
1571 >                            } catch (Throwable fail) { System.out.println("fail " + fail.getMessage()); }
1572                          }
1573 <                        assertEquals(0, ForkJoinTask.getQueuedTaskCount());
1574 <                        try {
1575 <                            assertEquals(21, f.result);
1576 <                        } catch (Throwable fail) { System.out.println("fail " + fail.getMessage()); }
1577 <                    }
1578 <                };
1579 <            p.execute(a);
1580 <            while (!p.awaitQuiescence(LONG_DELAY_MS, MILLISECONDS)) {
1581 <                if (millisElapsedSince(startTime) > LONG_DELAY_MS)
1582 <                    threadFail("timed out");
1573 >                    };
1574 >                p.execute(a);
1575 >                if (a.isDone() || p.isQuiescent())
1576 >                    continue; // Already done so cannot test; retry
1577 >                while (!p.awaitQuiescence(LONG_DELAY_MS, MILLISECONDS)) {
1578 >                    if (millisElapsedSince(startTime) > LONG_DELAY_MS)
1579 >                        threadFail("timed out");
1580 >                    assertFalse(p.getAsyncMode());
1581 >                    assertFalse(p.isShutdown());
1582 >                    assertFalse(p.isTerminating());
1583 >                    assertFalse(p.isTerminated());
1584 >                    Thread.yield();
1585 >                }
1586 >                assertTrue(p.isQuiescent());
1587 >                assertTrue(a.isDone());
1588 >                assertEquals(0, p.getQueuedTaskCount());
1589                  assertFalse(p.getAsyncMode());
1590 +                assertEquals(0, p.getActiveThreadCount());
1591 +                assertEquals(0, p.getQueuedTaskCount());
1592 +                assertEquals(0, p.getQueuedSubmissionCount());
1593 +                assertFalse(p.hasQueuedSubmissions());
1594                  assertFalse(p.isShutdown());
1595                  assertFalse(p.isTerminating());
1596                  assertFalse(p.isTerminated());
1597 <                Thread.yield();
1597 >                break;
1598              }
1583            assertTrue(p.isQuiescent());
1584            assertTrue(a.isDone());
1585            assertEquals(0, p.getQueuedTaskCount());
1586            assertFalse(p.getAsyncMode());
1587            assertEquals(0, p.getActiveThreadCount());
1588            assertEquals(0, p.getQueuedTaskCount());
1589            assertEquals(0, p.getQueuedSubmissionCount());
1590            assertFalse(p.hasQueuedSubmissions());
1591            assertFalse(p.isShutdown());
1592            assertFalse(p.isTerminating());
1593            assertFalse(p.isTerminated());
1599          } finally {
1600              joinPool(p);
1601          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines