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

Comparing jsr166/src/test/tck/ScheduledExecutorTest.java (file contents):
Revision 1.63 by jsr166, Sun Oct 4 18:28:51 2015 UTC vs.
Revision 1.66 by jsr166, Mon Oct 5 21:54:33 2015 UTC

# Line 416 | Line 416 | public class ScheduledExecutorTest exten
416       * submitted
417       */
418      public void testGetTaskCount() throws InterruptedException {
419 +        final int TASKS = 3;
420 +        final CountDownLatch done = new CountDownLatch(1);
421          final ThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1);
422 <        try (PoolCleaner cleaner = cleaner(p)) {
422 >        try (PoolCleaner cleaner = cleaner(p, done)) {
423              final CountDownLatch threadStarted = new CountDownLatch(1);
422            final CountDownLatch done = new CountDownLatch(1);
423            final int TASKS = 5;
424              assertEquals(0, p.getTaskCount());
425 <            for (int i = 0; i < TASKS; i++)
425 >            assertEquals(0, p.getCompletedTaskCount());
426 >            p.execute(new CheckedRunnable() {
427 >                public void realRun() throws InterruptedException {
428 >                    threadStarted.countDown();
429 >                    done.await();
430 >                }});
431 >            assertTrue(threadStarted.await(LONG_DELAY_MS, MILLISECONDS));
432 >            assertEquals(1, p.getTaskCount());
433 >            assertEquals(0, p.getCompletedTaskCount());
434 >            for (int i = 0; i < TASKS; i++) {
435 >                assertEquals(1 + i, p.getTaskCount());
436                  p.execute(new CheckedRunnable() {
437                      public void realRun() throws InterruptedException {
438                          threadStarted.countDown();
439 +                        assertEquals(1 + TASKS, p.getTaskCount());
440                          done.await();
441                      }});
442 <            assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS));
443 <            assertEquals(TASKS, p.getTaskCount());
444 <            done.countDown();
442 >            }
443 >            assertEquals(1 + TASKS, p.getTaskCount());
444 >            assertEquals(0, p.getCompletedTaskCount());
445          }
446 +        assertEquals(1 + TASKS, p.getTaskCount());
447 +        assertEquals(1 + TASKS, p.getCompletedTaskCount());
448      }
449  
450      /**
# Line 596 | Line 609 | public class ScheduledExecutorTest exten
609       * purge eventually removes cancelled tasks from the queue
610       */
611      public void testPurge() throws InterruptedException {
612 <        ScheduledThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1);
613 <        ScheduledFuture[] tasks = new ScheduledFuture[5];
614 <        for (int i = 0; i < tasks.length; i++)
615 <            tasks[i] = p.schedule(new SmallPossiblyInterruptedRunnable(),
616 <                                  LONG_DELAY_MS, MILLISECONDS);
617 <        try {
612 >        final ScheduledFuture[] tasks = new ScheduledFuture[5];
613 >        final Runnable releaser = new Runnable() { public void run() {
614 >            for (ScheduledFuture task : tasks)
615 >                if (task != null) task.cancel(true); }};
616 >        final ScheduledThreadPoolExecutor p = new ScheduledThreadPoolExecutor(1);
617 >        try (PoolCleaner cleaner = cleaner(p, releaser)) {
618 >            for (int i = 0; i < tasks.length; i++)
619 >                tasks[i] = p.schedule(new SmallPossiblyInterruptedRunnable(),
620 >                                      LONG_DELAY_MS, MILLISECONDS);
621              int max = tasks.length;
622              if (tasks[4].cancel(true)) --max;
623              if (tasks[3].cancel(true)) --max;
# Line 613 | Line 629 | public class ScheduledExecutorTest exten
629                  long count = p.getTaskCount();
630                  if (count == max)
631                      return;
632 <            } while (millisElapsedSince(startTime) < MEDIUM_DELAY_MS);
632 >            } while (millisElapsedSince(startTime) < LONG_DELAY_MS);
633              fail("Purge failed to remove cancelled tasks");
618        } finally {
619            for (ScheduledFuture task : tasks)
620                task.cancel(true);
621            joinPool(p);
634          }
635      }
636  
# Line 632 | Line 644 | public class ScheduledExecutorTest exten
644          final AtomicInteger ran = new AtomicInteger(0);
645          final ScheduledThreadPoolExecutor p =
646              new ScheduledThreadPoolExecutor(poolSize);
647 <        CountDownLatch threadsStarted = new CountDownLatch(poolSize);
647 >        final CountDownLatch threadsStarted = new CountDownLatch(poolSize);
648          Runnable waiter = new CheckedRunnable() { public void realRun() {
649              threadsStarted.countDown();
650              try {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines