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

Comparing jsr166/src/test/tck/ThreadPoolExecutorTest.java (file contents):
Revision 1.76 by jsr166, Sun Oct 4 02:04:56 2015 UTC vs.
Revision 1.88 by jsr166, Sun Oct 4 02:46:13 2015 UTC

# Line 87 | Line 87 | public class ThreadPoolExecutorTest exte
87              new ThreadPoolExecutor(1, 1,
88                                     LONG_DELAY_MS, MILLISECONDS,
89                                     new ArrayBlockingQueue<Runnable>(10));
90 <        final CountDownLatch done = new CountDownLatch(1);
91 <        final Runnable task = new CheckedRunnable() {
92 <            public void realRun() {
93 <                done.countDown();
94 <            }};
95 <        try {
90 >        try (PoolCleaner cleaner = cleaner(p)) {
91 >            final CountDownLatch done = new CountDownLatch(1);
92 >            final Runnable task = new CheckedRunnable() {
93 >                public void realRun() { done.countDown(); }};
94              p.execute(task);
95 <            assertTrue(done.await(SMALL_DELAY_MS, MILLISECONDS));
98 <        } finally {
99 <            joinPool(p);
95 >            assertTrue(done.await(LONG_DELAY_MS, MILLISECONDS));
96          }
97      }
98  
# Line 109 | Line 105 | public class ThreadPoolExecutorTest exte
105              new ThreadPoolExecutor(2, 2,
106                                     LONG_DELAY_MS, MILLISECONDS,
107                                     new ArrayBlockingQueue<Runnable>(10));
108 <        final CountDownLatch threadStarted = new CountDownLatch(1);
109 <        final CountDownLatch done = new CountDownLatch(1);
110 <        try {
108 >        try (PoolCleaner cleaner = cleaner(p)) {
109 >            final CountDownLatch threadStarted = new CountDownLatch(1);
110 >            final CountDownLatch done = new CountDownLatch(1);
111              assertEquals(0, p.getActiveCount());
112              p.execute(new CheckedRunnable() {
113                  public void realRun() throws InterruptedException {
# Line 119 | Line 115 | public class ThreadPoolExecutorTest exte
115                      assertEquals(1, p.getActiveCount());
116                      done.await();
117                  }});
118 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
118 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
119              assertEquals(1, p.getActiveCount());
124        } finally {
120              done.countDown();
126            joinPool(p);
121          }
122      }
123  
# Line 366 | Line 360 | public class ThreadPoolExecutorTest exte
360              new ThreadPoolExecutor(2, 3,
361                                     LONG_DELAY_MS, MILLISECONDS,
362                                     new ArrayBlockingQueue<Runnable>(10));
363 <        assertEquals(3, p.getMaximumPoolSize());
364 <        joinPool(p);
363 >        try (PoolCleaner cleaner = cleaner(p)) {
364 >            assertEquals(3, p.getMaximumPoolSize());
365 >            p.setMaximumPoolSize(5);
366 >            assertEquals(5, p.getMaximumPoolSize());
367 >            p.setMaximumPoolSize(4);
368 >            assertEquals(4, p.getMaximumPoolSize());
369 >        }
370      }
371  
372      /**
# Line 379 | Line 378 | public class ThreadPoolExecutorTest exte
378              new ThreadPoolExecutor(1, 1,
379                                     LONG_DELAY_MS, MILLISECONDS,
380                                     new ArrayBlockingQueue<Runnable>(10));
381 <        final CountDownLatch threadStarted = new CountDownLatch(1);
382 <        final CountDownLatch done = new CountDownLatch(1);
383 <        try {
381 >        try (PoolCleaner cleaner = cleaner(p)) {
382 >            final CountDownLatch threadStarted = new CountDownLatch(1);
383 >            final CountDownLatch done = new CountDownLatch(1);
384              assertEquals(0, p.getPoolSize());
385              p.execute(new CheckedRunnable() {
386                  public void realRun() throws InterruptedException {
# Line 389 | Line 388 | public class ThreadPoolExecutorTest exte
388                      assertEquals(1, p.getPoolSize());
389                      done.await();
390                  }});
391 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
391 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
392              assertEquals(1, p.getPoolSize());
393 <        } finally {
395 <            done.countDown();
396 <            joinPool(p);
393 >            done.countDown();   // release pool
394          }
395      }
396  
# Line 405 | Line 402 | public class ThreadPoolExecutorTest exte
402              new ThreadPoolExecutor(1, 1,
403                                     LONG_DELAY_MS, MILLISECONDS,
404                                     new ArrayBlockingQueue<Runnable>(10));
405 <        final CountDownLatch threadStarted = new CountDownLatch(1);
406 <        final CountDownLatch done = new CountDownLatch(1);
407 <        try {
405 >        try (PoolCleaner cleaner = cleaner(p)) {
406 >            final CountDownLatch threadStarted = new CountDownLatch(1);
407 >            final CountDownLatch done = new CountDownLatch(1);
408              assertEquals(0, p.getTaskCount());
409              p.execute(new CheckedRunnable() {
410                  public void realRun() throws InterruptedException {
# Line 415 | Line 412 | public class ThreadPoolExecutorTest exte
412                      assertEquals(1, p.getTaskCount());
413                      done.await();
414                  }});
415 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
415 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
416              assertEquals(1, p.getTaskCount());
420        } finally {
417              done.countDown();
422            joinPool(p);
418          }
419      }
420  
# Line 431 | Line 426 | public class ThreadPoolExecutorTest exte
426              new ThreadPoolExecutor(1, 1,
427                                     LONG_DELAY_MS, MILLISECONDS,
428                                     new ArrayBlockingQueue<Runnable>(10));
429 <        assertFalse(p.isShutdown());
430 <        try { p.shutdown(); } catch (SecurityException ok) { return; }
431 <        assertTrue(p.isShutdown());
432 <        joinPool(p);
429 >        try (PoolCleaner cleaner = cleaner(p)) {
430 >            assertFalse(p.isShutdown());
431 >            try { p.shutdown(); } catch (SecurityException ok) { return; }
432 >            assertTrue(p.isShutdown());
433 >        }
434      }
435  
436      /**
# Line 445 | Line 441 | public class ThreadPoolExecutorTest exte
441              new ThreadPoolExecutor(1, 1,
442                                     LONG_DELAY_MS, MILLISECONDS,
443                                     new ArrayBlockingQueue<Runnable>(10));
444 <        assertFalse(p.isTerminated());
445 <        assertFalse(p.awaitTermination(Long.MIN_VALUE, NANOSECONDS));
446 <        assertFalse(p.awaitTermination(Long.MIN_VALUE, MILLISECONDS));
447 <        assertFalse(p.awaitTermination(-1L, NANOSECONDS));
448 <        assertFalse(p.awaitTermination(-1L, MILLISECONDS));
449 <        assertFalse(p.awaitTermination(0L, NANOSECONDS));
450 <        assertFalse(p.awaitTermination(0L, MILLISECONDS));
451 <        long timeoutNanos = 999999L;
452 <        long startTime = System.nanoTime();
453 <        assertFalse(p.awaitTermination(timeoutNanos, NANOSECONDS));
454 <        assertTrue(System.nanoTime() - startTime >= timeoutNanos);
455 <        assertFalse(p.isTerminated());
456 <        startTime = System.nanoTime();
457 <        long timeoutMillis = timeoutMillis();
458 <        assertFalse(p.awaitTermination(timeoutMillis, MILLISECONDS));
459 <        assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
460 <        assertFalse(p.isTerminated());
461 <        p.shutdown();
462 <        assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
463 <        assertTrue(p.isTerminated());
444 >        try (PoolCleaner cleaner = cleaner(p)) {
445 >            assertFalse(p.isTerminated());
446 >            assertFalse(p.awaitTermination(Long.MIN_VALUE, NANOSECONDS));
447 >            assertFalse(p.awaitTermination(Long.MIN_VALUE, MILLISECONDS));
448 >            assertFalse(p.awaitTermination(-1L, NANOSECONDS));
449 >            assertFalse(p.awaitTermination(-1L, MILLISECONDS));
450 >            assertFalse(p.awaitTermination(0L, NANOSECONDS));
451 >            assertFalse(p.awaitTermination(0L, MILLISECONDS));
452 >            long timeoutNanos = 999999L;
453 >            long startTime = System.nanoTime();
454 >            assertFalse(p.awaitTermination(timeoutNanos, NANOSECONDS));
455 >            assertTrue(System.nanoTime() - startTime >= timeoutNanos);
456 >            assertFalse(p.isTerminated());
457 >            startTime = System.nanoTime();
458 >            long timeoutMillis = timeoutMillis();
459 >            assertFalse(p.awaitTermination(timeoutMillis, MILLISECONDS));
460 >            assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
461 >            assertFalse(p.isTerminated());
462 >            try { p.shutdown(); } catch (SecurityException ok) { return; }
463 >            assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
464 >            assertTrue(p.isTerminated());
465 >        }
466      }
467  
468      /**
# Line 475 | Line 473 | public class ThreadPoolExecutorTest exte
473              new ThreadPoolExecutor(1, 1,
474                                     LONG_DELAY_MS, MILLISECONDS,
475                                     new ArrayBlockingQueue<Runnable>(10));
476 <        final CountDownLatch threadStarted = new CountDownLatch(1);
477 <        final CountDownLatch done = new CountDownLatch(1);
478 <        assertFalse(p.isTerminated());
479 <        try {
476 >        try (PoolCleaner cleaner = cleaner(p)) {
477 >            final CountDownLatch threadStarted = new CountDownLatch(1);
478 >            final CountDownLatch done = new CountDownLatch(1);
479 >            assertFalse(p.isTerminating());
480              p.execute(new CheckedRunnable() {
481                  public void realRun() throws InterruptedException {
482 <                    assertFalse(p.isTerminated());
482 >                    assertFalse(p.isTerminating());
483                      threadStarted.countDown();
484                      done.await();
485                  }});
486 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
486 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
487              assertFalse(p.isTerminating());
488              done.countDown();
491        } finally {
489              try { p.shutdown(); } catch (SecurityException ok) { return; }
490 +            assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
491 +            assertTrue(p.isTerminated());
492 +            assertFalse(p.isTerminating());
493          }
494        assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
495        assertTrue(p.isTerminated());
494      }
495  
496      /**
# Line 503 | Line 501 | public class ThreadPoolExecutorTest exte
501              new ThreadPoolExecutor(1, 1,
502                                     LONG_DELAY_MS, MILLISECONDS,
503                                     new ArrayBlockingQueue<Runnable>(10));
504 <        final CountDownLatch threadStarted = new CountDownLatch(1);
505 <        final CountDownLatch done = new CountDownLatch(1);
506 <        try {
504 >        try (PoolCleaner cleaner = cleaner(p)) {
505 >            final CountDownLatch threadStarted = new CountDownLatch(1);
506 >            final CountDownLatch done = new CountDownLatch(1);
507              assertFalse(p.isTerminating());
508              p.execute(new CheckedRunnable() {
509                  public void realRun() throws InterruptedException {
# Line 513 | Line 511 | public class ThreadPoolExecutorTest exte
511                      threadStarted.countDown();
512                      done.await();
513                  }});
514 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
514 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
515              assertFalse(p.isTerminating());
516              done.countDown();
519        } finally {
517              try { p.shutdown(); } catch (SecurityException ok) { return; }
518 +            assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
519 +            assertTrue(p.isTerminated());
520 +            assertFalse(p.isTerminating());
521          }
522        assertTrue(p.awaitTermination(LONG_DELAY_MS, MILLISECONDS));
523        assertTrue(p.isTerminated());
524        assertFalse(p.isTerminating());
522      }
523  
524      /**
# Line 533 | Line 530 | public class ThreadPoolExecutorTest exte
530              new ThreadPoolExecutor(1, 1,
531                                     LONG_DELAY_MS, MILLISECONDS,
532                                     q);
533 <        final CountDownLatch threadStarted = new CountDownLatch(1);
534 <        final CountDownLatch done = new CountDownLatch(1);
535 <        try {
533 >        try (PoolCleaner cleaner = cleaner(p)) {
534 >            final CountDownLatch threadStarted = new CountDownLatch(1);
535 >            final CountDownLatch done = new CountDownLatch(1);
536              FutureTask[] tasks = new FutureTask[5];
537              for (int i = 0; i < tasks.length; i++) {
538                  Callable task = new CheckedCallable<Boolean>() {
# Line 548 | Line 545 | public class ThreadPoolExecutorTest exte
545                  tasks[i] = new FutureTask(task);
546                  p.execute(tasks[i]);
547              }
548 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
548 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
549              assertSame(q, p.getQueue());
550              assertFalse(q.contains(tasks[0]));
551              assertTrue(q.contains(tasks[tasks.length - 1]));
552              assertEquals(tasks.length - 1, q.size());
556        } finally {
553              done.countDown();
558            joinPool(p);
554          }
555      }
556  
# Line 568 | Line 563 | public class ThreadPoolExecutorTest exte
563              new ThreadPoolExecutor(1, 1,
564                                     LONG_DELAY_MS, MILLISECONDS,
565                                     q);
566 <        Runnable[] tasks = new Runnable[5];
567 <        final CountDownLatch threadStarted = new CountDownLatch(1);
568 <        final CountDownLatch done = new CountDownLatch(1);
569 <        try {
566 >        try (PoolCleaner cleaner = cleaner(p)) {
567 >            Runnable[] tasks = new Runnable[6];
568 >            final CountDownLatch threadStarted = new CountDownLatch(1);
569 >            final CountDownLatch done = new CountDownLatch(1);
570              for (int i = 0; i < tasks.length; i++) {
571                  tasks[i] = new CheckedRunnable() {
572                      public void realRun() throws InterruptedException {
# Line 580 | Line 575 | public class ThreadPoolExecutorTest exte
575                      }};
576                  p.execute(tasks[i]);
577              }
578 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
578 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
579              assertFalse(p.remove(tasks[0]));
580              assertTrue(q.contains(tasks[4]));
581              assertTrue(q.contains(tasks[3]));
# Line 590 | Line 585 | public class ThreadPoolExecutorTest exte
585              assertTrue(q.contains(tasks[3]));
586              assertTrue(p.remove(tasks[3]));
587              assertFalse(q.contains(tasks[3]));
593        } finally {
588              done.countDown();
595            joinPool(p);
589          }
590      }
591  
# Line 607 | Line 600 | public class ThreadPoolExecutorTest exte
600              new ThreadPoolExecutor(1, 1,
601                                     LONG_DELAY_MS, MILLISECONDS,
602                                     q);
603 <        FutureTask[] tasks = new FutureTask[5];
604 <        try {
603 >        try (PoolCleaner cleaner = cleaner(p)) {
604 >            FutureTask[] tasks = new FutureTask[5];
605              for (int i = 0; i < tasks.length; i++) {
606                  Callable task = new CheckedCallable<Boolean>() {
607                      public Boolean realCall() throws InterruptedException {
# Line 619 | Line 612 | public class ThreadPoolExecutorTest exte
612                  tasks[i] = new FutureTask(task);
613                  p.execute(tasks[i]);
614              }
615 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
615 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
616              assertEquals(tasks.length, p.getTaskCount());
617              assertEquals(tasks.length - 1, q.size());
618              assertEquals(1L, p.getActiveCount());
# Line 632 | Line 625 | public class ThreadPoolExecutorTest exte
625              p.purge();         // Nothing to do
626              assertEquals(tasks.length - 3, q.size());
627              assertEquals(tasks.length - 2, p.getTaskCount());
635        } finally {
628              done.countDown();
637            joinPool(p);
629          }
630      }
631  
# Line 1027 | Line 1018 | public class ThreadPoolExecutorTest exte
1018                                     60, SECONDS,
1019                                     new ArrayBlockingQueue<Runnable>(10));
1020  
1021 <        final CountDownLatch threadStarted = new CountDownLatch(1);
1022 <        final CountDownLatch done = new CountDownLatch(1);
1023 <        try {
1021 >        try (PoolCleaner cleaner = cleaner(p)) {
1022 >            final CountDownLatch threadStarted = new CountDownLatch(1);
1023 >            final CountDownLatch done = new CountDownLatch(1);
1024              Thread t = newStartedThread(new CheckedInterruptedRunnable() {
1025                  public void realRun() throws Exception {
1026                      Callable task = new CheckedCallable<Boolean>() {
# Line 1041 | Line 1032 | public class ThreadPoolExecutorTest exte
1032                      p.submit(task).get();
1033                  }});
1034  
1035 <            assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS));
1035 >            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
1036              t.interrupt();
1037              awaitTermination(t, MEDIUM_DELAY_MS);
1047        } finally {
1038              done.countDown();
1049            joinPool(p);
1039          }
1040      }
1041  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines