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.147 by jsr166, Sat Sep 26 19:08:26 2015 UTC vs.
Revision 1.150 by jsr166, Sat Oct 3 19:08:13 2015 UTC

# Line 15 | Line 15 | import java.io.ObjectInputStream;
15   import java.io.ObjectOutputStream;
16   import java.lang.management.ManagementFactory;
17   import java.lang.management.ThreadInfo;
18 + import java.lang.management.ThreadMXBean;
19   import java.lang.reflect.Constructor;
20   import java.lang.reflect.Method;
21   import java.lang.reflect.Modifier;
# Line 743 | Line 744 | public class JSR166TestCase extends Test
744      }
745  
746      /**
747 +     * Allows use of try-with-resources with per-test thread pools.
748 +     */
749 +    static class PoolCloser<T extends ExecutorService>
750 +            implements AutoCloseable {
751 +        public final T pool;
752 +        public PoolCloser(T pool) { this.pool = pool; }
753 +        public void close() { joinPool(pool); }
754 +    }
755 +
756 +    /**
757       * Waits out termination of a thread pool or fails doing so.
758       */
759 <    void joinPool(ExecutorService pool) {
759 >    static void joinPool(ExecutorService pool) {
760          try {
761              pool.shutdown();
762              if (!pool.awaitTermination(2 * LONG_DELAY_MS, MILLISECONDS))
# Line 788 | Line 799 | public class JSR166TestCase extends Test
799  
800      /**
801       * A debugging tool to print all stack traces, as jstack does.
802 +     * Uninteresting threads are filtered out.
803       */
804      static void printAllStackTraces() {
805 <        for (ThreadInfo info :
806 <                 ManagementFactory.getThreadMXBean()
807 <                 .dumpAllThreads(true, true))
805 >        ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
806 >        System.err.println("------ stacktrace dump start ------");
807 >        for (ThreadInfo info : threadMXBean.dumpAllThreads(true, true)) {
808 >            String name = info.getThreadName();
809 >            if ("Signal Dispatcher".equals(name))
810 >                continue;
811 >            if ("Reference Handler".equals(name)
812 >                && info.getLockName().startsWith("java.lang.ref.Reference$Lock"))
813 >                continue;
814 >            if ("Finalizer".equals(name)
815 >                && info.getLockName().startsWith("java.lang.ref.ReferenceQueue$Lock"))
816 >                continue;
817              System.err.print(info);
818 +        }
819 +        System.err.println("------ stacktrace dump end ------");
820      }
821  
822      /**
# Line 1254 | Line 1277 | public class JSR166TestCase extends Test
1277              }};
1278      }
1279  
1280 +    public Runnable countDowner(final CountDownLatch latch) {
1281 +        return new CheckedRunnable() {
1282 +            public void realRun() throws InterruptedException {
1283 +                latch.countDown();
1284 +            }};
1285 +    }
1286 +
1287      public Runnable awaiter(final CountDownLatch latch) {
1288          return new CheckedRunnable() {
1289              public void realRun() throws InterruptedException {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines