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.157 by jsr166, Sat Oct 3 22:20:05 2015 UTC vs.
Revision 1.158 by jsr166, Sat Oct 3 23:17:03 2015 UTC

# Line 541 | Line 541 | public class JSR166TestCase extends Test
541       * the same test have no effect.
542       */
543      public void threadRecordFailure(Throwable t) {
544 +        System.err.println(t);
545          dumpTestThreads();
546          threadFailure.compareAndSet(null, t);
547      }
# Line 769 | Line 770 | public class JSR166TestCase extends Test
770      /**
771       * Allows use of try-with-resources with per-test thread pools.
772       */
773 <    static class PoolCloser<T extends ExecutorService>
773 >    class PoolCloser<T extends ExecutorService>
774              implements AutoCloseable {
775          public final T pool;
776          public PoolCloser(T pool) { this.pool = pool; }
# Line 779 | Line 780 | public class JSR166TestCase extends Test
780      /**
781       * Waits out termination of a thread pool or fails doing so.
782       */
783 <    static void joinPool(ExecutorService pool) {
783 >    void joinPool(ExecutorService pool) {
784          try {
785              pool.shutdown();
786 <            if (!pool.awaitTermination(2 * LONG_DELAY_MS, MILLISECONDS))
787 <                fail("ExecutorService " + pool +
788 <                     " did not terminate in a timely manner");
786 >            if (!pool.awaitTermination(2 * LONG_DELAY_MS, MILLISECONDS)) {
787 >                try {
788 >                    threadFail("ExecutorService " + pool +
789 >                               " did not terminate in a timely manner");
790 >                } finally {
791 >                    // last resort, for the benefit of subsequent tests
792 >                    pool.shutdownNow();
793 >                    pool.awaitTermination(SMALL_DELAY_MS, MILLISECONDS);
794 >                }
795 >            }
796          } catch (SecurityException ok) {
797              // Allowed in case test doesn't have privs
798          } catch (InterruptedException fail) {
799 <            fail("Unexpected InterruptedException");
799 >            threadFail("Unexpected InterruptedException");
800          }
801      }
802  
# Line 860 | Line 868 | public class JSR166TestCase extends Test
868              delay(millis);
869              assertTrue(thread.isAlive());
870          } catch (InterruptedException fail) {
871 <            fail("Unexpected InterruptedException");
871 >            threadFail("Unexpected InterruptedException");
872          }
873      }
874  
# Line 882 | Line 890 | public class JSR166TestCase extends Test
890              for (Thread thread : threads)
891                  assertTrue(thread.isAlive());
892          } catch (InterruptedException fail) {
893 <            fail("Unexpected InterruptedException");
893 >            threadFail("Unexpected InterruptedException");
894          }
895      }
896  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines