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

Comparing jsr166/src/test/tck/JSR166TestCase.java (file contents):
Revision 1.145 by jsr166, Fri Sep 25 05:41:29 2015 UTC vs.
Revision 1.147 by jsr166, Sat Sep 26 19:08:26 2015 UTC

# Line 40 | Line 40 | import java.util.concurrent.CyclicBarrie
40   import java.util.concurrent.ExecutionException;
41   import java.util.concurrent.Executors;
42   import java.util.concurrent.ExecutorService;
43 + import java.util.concurrent.ForkJoinPool;
44   import java.util.concurrent.Future;
45   import java.util.concurrent.RecursiveAction;
46   import java.util.concurrent.RecursiveTask;
# Line 185 | Line 186 | public class JSR166TestCase extends Test
186          return (regex == null) ? null : Pattern.compile(regex);
187      }
188  
189 <    protected void runTest() throws Throwable {
189 >    public void runBare() throws Throwable {
190          if (methodFilter == null
191 <            || methodFilter.matcher(toString()).find()) {
192 <            for (int i = 0; i < runsPerTest; i++) {
193 <                if (profileTests)
194 <                    runTestProfiled();
195 <                else
196 <                    super.runTest();
197 <            }
191 >            || methodFilter.matcher(toString()).find())
192 >            super.runBare();
193 >    }
194 >
195 >    protected void runTest() throws Throwable {
196 >        for (int i = 0; i < runsPerTest; i++) {
197 >            if (profileTests)
198 >                runTestProfiled();
199 >            else
200 >                super.runTest();
201          }
202      }
203  
# Line 521 | Line 525 | public class JSR166TestCase extends Test
525          setDelays();
526      }
527  
528 +    void tearDownFail(String format, Object... args) {
529 +        String msg = toString() + ": " + String.format(format, args);
530 +        System.err.println(msg);
531 +        printAllStackTraces();
532 +        throw new AssertionFailedError(msg);
533 +    }
534 +
535      /**
536       * Extra checks that get done for all test cases.
537       *
# Line 548 | Line 559 | public class JSR166TestCase extends Test
559          }
560  
561          if (Thread.interrupted())
562 <            throw new AssertionFailedError("interrupt status set in main thread");
562 >            tearDownFail("interrupt status set in main thread");
563  
564          checkForkJoinPoolThreadLeaks();
565      }
# Line 557 | Line 568 | public class JSR166TestCase extends Test
568       * Finds missing try { ... } finally { joinPool(e); }
569       */
570      void checkForkJoinPoolThreadLeaks() throws InterruptedException {
571 <        Thread[] survivors = new Thread[5];
571 >        Thread[] survivors = new Thread[7];
572          int count = Thread.enumerate(survivors);
573          for (int i = 0; i < count; i++) {
574              Thread thread = survivors[i];
# Line 565 | Line 576 | public class JSR166TestCase extends Test
576              if (name.startsWith("ForkJoinPool-")) {
577                  // give thread some time to terminate
578                  thread.join(LONG_DELAY_MS);
579 <                if (!thread.isAlive()) continue;
580 <                throw new AssertionFailedError
581 <                    (String.format("Found leaked ForkJoinPool thread test=%s thread=%s%n",
571 <                                   toString(), name));
579 >                if (thread.isAlive())
580 >                    tearDownFail("Found leaked ForkJoinPool thread thread=%s",
581 >                                 thread);
582              }
583          }
584 +
585 +        if (!ForkJoinPool.commonPool()
586 +            .awaitQuiescence(LONG_DELAY_MS, MILLISECONDS))
587 +            tearDownFail("ForkJoin common pool thread stuck");
588      }
589  
590      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines