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

Comparing jsr166/src/test/tck/ForkJoinTaskTest.java (file contents):
Revision 1.27 by jsr166, Mon Nov 22 07:50:50 2010 UTC vs.
Revision 1.39 by jsr166, Wed Dec 31 17:00:58 2014 UTC

# Line 1 | Line 1
1   /*
2   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * Expert Group and released to the public domain, as explained at
4 < * http://creativecommons.org/licenses/publicdomain
4 > * http://creativecommons.org/publicdomain/zero/1.0/
5   */
6 < import java.util.concurrent.ExecutionException;
6 > import java.util.HashSet;
7   import java.util.concurrent.CancellationException;
8 + import java.util.concurrent.ExecutionException;
9   import java.util.concurrent.ForkJoinPool;
10   import java.util.concurrent.ForkJoinTask;
10 import java.util.concurrent.ForkJoinWorkerThread;
11   import java.util.concurrent.RecursiveAction;
12 import java.util.concurrent.TimeUnit;
12   import java.util.concurrent.TimeoutException;
13   import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
14   import static java.util.concurrent.TimeUnit.MILLISECONDS;
15   import static java.util.concurrent.TimeUnit.SECONDS;
17 import java.util.HashSet;
16   import junit.framework.*;
17  
18   public class ForkJoinTaskTest extends JSR166TestCase {
# Line 93 | Line 91 | public class ForkJoinTaskTest extends JS
91          assertFalse(a.isCompletedAbnormally());
92          assertNull(a.getException());
93          assertSame(expected, a.getRawResult());
94 <        assertSame(expected, a.join());
94 >
95 >        {
96 >            Thread.currentThread().interrupt();
97 >            long t0 = System.nanoTime();
98 >            assertSame(expected, a.join());
99 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
100 >            Thread.interrupted();
101 >        }
102 >
103 >        {
104 >            Thread.currentThread().interrupt();
105 >            long t0 = System.nanoTime();
106 >            a.quietlyJoin();        // should be no-op
107 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
108 >            Thread.interrupted();
109 >        }
110 >
111          assertFalse(a.cancel(false));
112          assertFalse(a.cancel(true));
113          try {
# Line 115 | Line 129 | public class ForkJoinTaskTest extends JS
129          assertTrue(a.cancel(true));
130  
131          try {
132 +            Thread.currentThread().interrupt();
133              a.join();
134              shouldThrow();
135          } catch (CancellationException success) {
136          } catch (Throwable fail) { threadUnexpectedException(fail); }
137 +        Thread.interrupted();
138 +
139 +        {
140 +            long t0 = System.nanoTime();
141 +            a.quietlyJoin();        // should be no-op
142 +            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
143 +        }
144  
145          try {
146              a.get();
# Line 138 | Line 160 | public class ForkJoinTaskTest extends JS
160          assertFalse(a.isCancelled());
161          assertFalse(a.isCompletedNormally());
162          assertTrue(a.isCompletedAbnormally());
163 <        assertSame(t, a.getException());
163 >        assertSame(t.getClass(), a.getException().getClass());
164          assertNull(a.getRawResult());
165          assertFalse(a.cancel(false));
166          assertFalse(a.cancel(true));
167  
168          try {
169 +            Thread.currentThread().interrupt();
170              a.join();
171              shouldThrow();
172          } catch (Throwable expected) {
173 <            assertSame(t, expected);
173 >            assertSame(t.getClass(), expected.getClass());
174 >        }
175 >        Thread.interrupted();
176 >
177 >        {
178 >            long t0 = System.nanoTime();
179 >            a.quietlyJoin();        // should be no-op
180 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
181          }
182  
183          try {
184              a.get();
185              shouldThrow();
186          } catch (ExecutionException success) {
187 <            assertSame(t, success.getCause());
187 >            assertSame(t.getClass(), success.getCause().getClass());
188          } catch (Throwable fail) { threadUnexpectedException(fail); }
189  
190          try {
191              a.get(5L, SECONDS);
192              shouldThrow();
193          } catch (ExecutionException success) {
194 <            assertSame(t, success.getCause());
194 >            assertSame(t.getClass(), success.getCause().getClass());
195          } catch (Throwable fail) { threadUnexpectedException(fail); }
196      }
197  
# Line 173 | Line 203 | public class ForkJoinTaskTest extends JS
203       * differently than supplied Recursive forms.
204       */
205  
206 <    static final class FJException extends RuntimeException {
206 >    public static final class FJException extends RuntimeException {
207          FJException() { super(); }
208      }
209  
# Line 317 | Line 347 | public class ForkJoinTaskTest extends JS
347          }
348      }
349  
320
350      static final class FailingAsyncFib extends BinaryAsyncAction {
351          int number;
352          public FailingAsyncFib(int n) {
# Line 353 | Line 382 | public class ForkJoinTaskTest extends JS
382       */
383      public void testInvoke() {
384          RecursiveAction a = new CheckedRecursiveAction() {
385 <            public void realCompute() {
385 >            protected void realCompute() {
386                  AsyncFib f = new AsyncFib(8);
387                  assertNull(f.invoke());
388                  assertEquals(21, f.number);
# Line 369 | Line 398 | public class ForkJoinTaskTest extends JS
398       */
399      public void testQuietlyInvoke() {
400          RecursiveAction a = new CheckedRecursiveAction() {
401 <            public void realCompute() {
401 >            protected void realCompute() {
402                  AsyncFib f = new AsyncFib(8);
403                  f.quietlyInvoke();
404                  assertEquals(21, f.number);
# Line 383 | Line 412 | public class ForkJoinTaskTest extends JS
412       */
413      public void testForkJoin() {
414          RecursiveAction a = new CheckedRecursiveAction() {
415 <            public void realCompute() {
415 >            protected void realCompute() {
416                  AsyncFib f = new AsyncFib(8);
417                  assertSame(f, f.fork());
418                  assertNull(f.join());
# Line 398 | Line 427 | public class ForkJoinTaskTest extends JS
427       */
428      public void testForkGet() {
429          RecursiveAction a = new CheckedRecursiveAction() {
430 <            public void realCompute() throws Exception {
430 >            protected void realCompute() throws Exception {
431                  AsyncFib f = new AsyncFib(8);
432                  assertSame(f, f.fork());
433                  assertNull(f.get());
# Line 413 | Line 442 | public class ForkJoinTaskTest extends JS
442       */
443      public void testForkTimedGet() {
444          RecursiveAction a = new CheckedRecursiveAction() {
445 <            public void realCompute() throws Exception {
445 >            protected void realCompute() throws Exception {
446                  AsyncFib f = new AsyncFib(8);
447                  assertSame(f, f.fork());
448                  assertNull(f.get(LONG_DELAY_MS, MILLISECONDS));
# Line 428 | Line 457 | public class ForkJoinTaskTest extends JS
457       */
458      public void testForkTimedGetNPE() {
459          RecursiveAction a = new CheckedRecursiveAction() {
460 <            public void realCompute() throws Exception {
460 >            protected void realCompute() throws Exception {
461                  AsyncFib f = new AsyncFib(8);
462                  assertSame(f, f.fork());
463                  try {
# Line 444 | Line 473 | public class ForkJoinTaskTest extends JS
473       */
474      public void testForkQuietlyJoin() {
475          RecursiveAction a = new CheckedRecursiveAction() {
476 <            public void realCompute() {
476 >            protected void realCompute() {
477                  AsyncFib f = new AsyncFib(8);
478                  assertSame(f, f.fork());
479                  f.quietlyJoin();
# Line 454 | Line 483 | public class ForkJoinTaskTest extends JS
483          testInvokeOnPool(mainPool(), a);
484      }
485  
457
486      /**
487       * helpQuiesce returns when tasks are complete.
488       * getQueuedTaskCount returns 0 when quiescent
489       */
490      public void testForkHelpQuiesce() {
491          RecursiveAction a = new CheckedRecursiveAction() {
492 <            public void realCompute() {
492 >            protected void realCompute() {
493                  AsyncFib f = new AsyncFib(8);
494                  assertSame(f, f.fork());
495 <                f.helpQuiesce();
495 >                helpQuiesce();
496                  assertEquals(21, f.number);
497                  assertEquals(0, getQueuedTaskCount());
498                  checkCompletedNormally(f);
# Line 472 | Line 500 | public class ForkJoinTaskTest extends JS
500          testInvokeOnPool(mainPool(), a);
501      }
502  
475
503      /**
504       * invoke task throws exception when task completes abnormally
505       */
506      public void testAbnormalInvoke() {
507          RecursiveAction a = new CheckedRecursiveAction() {
508 <            public void realCompute() {
508 >            protected void realCompute() {
509                  FailingAsyncFib f = new FailingAsyncFib(8);
510                  try {
511                      f.invoke();
# Line 495 | Line 522 | public class ForkJoinTaskTest extends JS
522       */
523      public void testAbnormalQuietlyInvoke() {
524          RecursiveAction a = new CheckedRecursiveAction() {
525 <            public void realCompute() {
525 >            protected void realCompute() {
526                  FailingAsyncFib f = new FailingAsyncFib(8);
527                  f.quietlyInvoke();
528                  assertTrue(f.getException() instanceof FJException);
# Line 509 | Line 536 | public class ForkJoinTaskTest extends JS
536       */
537      public void testAbnormalForkJoin() {
538          RecursiveAction a = new CheckedRecursiveAction() {
539 <            public void realCompute() {
539 >            protected void realCompute() {
540                  FailingAsyncFib f = new FailingAsyncFib(8);
541                  assertSame(f, f.fork());
542                  try {
# Line 527 | Line 554 | public class ForkJoinTaskTest extends JS
554       */
555      public void testAbnormalForkGet() {
556          RecursiveAction a = new CheckedRecursiveAction() {
557 <            public void realCompute() throws Exception {
557 >            protected void realCompute() throws Exception {
558                  FailingAsyncFib f = new FailingAsyncFib(8);
559                  assertSame(f, f.fork());
560                  try {
# Line 547 | Line 574 | public class ForkJoinTaskTest extends JS
574       */
575      public void testAbnormalForkTimedGet() {
576          RecursiveAction a = new CheckedRecursiveAction() {
577 <            public void realCompute() throws Exception {
577 >            protected void realCompute() throws Exception {
578                  FailingAsyncFib f = new FailingAsyncFib(8);
579                  assertSame(f, f.fork());
580                  try {
# Line 567 | Line 594 | public class ForkJoinTaskTest extends JS
594       */
595      public void testAbnormalForkQuietlyJoin() {
596          RecursiveAction a = new CheckedRecursiveAction() {
597 <            public void realCompute() {
597 >            protected void realCompute() {
598                  FailingAsyncFib f = new FailingAsyncFib(8);
599                  assertSame(f, f.fork());
600                  f.quietlyJoin();
# Line 582 | Line 609 | public class ForkJoinTaskTest extends JS
609       */
610      public void testCancelledInvoke() {
611          RecursiveAction a = new CheckedRecursiveAction() {
612 <            public void realCompute() {
612 >            protected void realCompute() {
613                  AsyncFib f = new AsyncFib(8);
614                  assertTrue(f.cancel(true));
615                  try {
# Line 600 | Line 627 | public class ForkJoinTaskTest extends JS
627       */
628      public void testCancelledForkJoin() {
629          RecursiveAction a = new CheckedRecursiveAction() {
630 <            public void realCompute() {
630 >            protected void realCompute() {
631                  AsyncFib f = new AsyncFib(8);
632                  assertTrue(f.cancel(true));
633                  assertSame(f, f.fork());
# Line 619 | Line 646 | public class ForkJoinTaskTest extends JS
646       */
647      public void testCancelledForkGet() {
648          RecursiveAction a = new CheckedRecursiveAction() {
649 <            public void realCompute() throws Exception {
649 >            protected void realCompute() throws Exception {
650                  AsyncFib f = new AsyncFib(8);
651                  assertTrue(f.cancel(true));
652                  assertSame(f, f.fork());
# Line 638 | Line 665 | public class ForkJoinTaskTest extends JS
665       */
666      public void testCancelledForkTimedGet() throws Exception {
667          RecursiveAction a = new CheckedRecursiveAction() {
668 <            public void realCompute() throws Exception {
668 >            protected void realCompute() throws Exception {
669                  AsyncFib f = new AsyncFib(8);
670                  assertTrue(f.cancel(true));
671                  assertSame(f, f.fork());
# Line 657 | Line 684 | public class ForkJoinTaskTest extends JS
684       */
685      public void testCancelledForkQuietlyJoin() {
686          RecursiveAction a = new CheckedRecursiveAction() {
687 <            public void realCompute() {
687 >            protected void realCompute() {
688                  AsyncFib f = new AsyncFib(8);
689                  assertTrue(f.cancel(true));
690                  assertSame(f, f.fork());
# Line 673 | Line 700 | public class ForkJoinTaskTest extends JS
700      public void testGetPool() {
701          final ForkJoinPool mainPool = mainPool();
702          RecursiveAction a = new CheckedRecursiveAction() {
703 <            public void realCompute() {
703 >            protected void realCompute() {
704                  assertSame(mainPool, getPool());
705              }};
706          testInvokeOnPool(mainPool, a);
# Line 684 | Line 711 | public class ForkJoinTaskTest extends JS
711       */
712      public void testGetPool2() {
713          RecursiveAction a = new CheckedRecursiveAction() {
714 <            public void realCompute() {
714 >            protected void realCompute() {
715                  assertNull(getPool());
716              }};
717          assertNull(a.invoke());
# Line 695 | Line 722 | public class ForkJoinTaskTest extends JS
722       */
723      public void testInForkJoinPool() {
724          RecursiveAction a = new CheckedRecursiveAction() {
725 <            public void realCompute() {
725 >            protected void realCompute() {
726                  assertTrue(inForkJoinPool());
727              }};
728          testInvokeOnPool(mainPool(), a);
# Line 706 | Line 733 | public class ForkJoinTaskTest extends JS
733       */
734      public void testInForkJoinPool2() {
735          RecursiveAction a = new CheckedRecursiveAction() {
736 <            public void realCompute() {
736 >            protected void realCompute() {
737                  assertFalse(inForkJoinPool());
738              }};
739          assertNull(a.invoke());
# Line 717 | Line 744 | public class ForkJoinTaskTest extends JS
744       */
745      public void testSetRawResult() {
746          RecursiveAction a = new CheckedRecursiveAction() {
747 <            public void realCompute() {
747 >            protected void realCompute() {
748                  setRawResult(null);
749                  assertNull(getRawResult());
750              }};
# Line 729 | Line 756 | public class ForkJoinTaskTest extends JS
756       */
757      public void testCompleteExceptionally() {
758          RecursiveAction a = new CheckedRecursiveAction() {
759 <            public void realCompute() {
759 >            protected void realCompute() {
760                  AsyncFib f = new AsyncFib(8);
761                  f.completeExceptionally(new FJException());
762                  try {
# Line 747 | Line 774 | public class ForkJoinTaskTest extends JS
774       */
775      public void testInvokeAll2() {
776          RecursiveAction a = new CheckedRecursiveAction() {
777 <            public void realCompute() {
777 >            protected void realCompute() {
778                  AsyncFib f = new AsyncFib(8);
779                  AsyncFib g = new AsyncFib(9);
780                  invokeAll(f, g);
# Line 764 | Line 791 | public class ForkJoinTaskTest extends JS
791       */
792      public void testInvokeAll1() {
793          RecursiveAction a = new CheckedRecursiveAction() {
794 <            public void realCompute() {
794 >            protected void realCompute() {
795                  AsyncFib f = new AsyncFib(8);
796                  invokeAll(f);
797                  checkCompletedNormally(f);
# Line 778 | Line 805 | public class ForkJoinTaskTest extends JS
805       */
806      public void testInvokeAll3() {
807          RecursiveAction a = new CheckedRecursiveAction() {
808 <            public void realCompute() {
808 >            protected void realCompute() {
809                  AsyncFib f = new AsyncFib(8);
810                  AsyncFib g = new AsyncFib(9);
811                  AsyncFib h = new AsyncFib(7);
# Line 798 | Line 825 | public class ForkJoinTaskTest extends JS
825       */
826      public void testInvokeAllCollection() {
827          RecursiveAction a = new CheckedRecursiveAction() {
828 <            public void realCompute() {
828 >            protected void realCompute() {
829                  AsyncFib f = new AsyncFib(8);
830                  AsyncFib g = new AsyncFib(9);
831                  AsyncFib h = new AsyncFib(7);
# Line 817 | Line 844 | public class ForkJoinTaskTest extends JS
844          testInvokeOnPool(mainPool(), a);
845      }
846  
820
847      /**
848       * invokeAll(tasks) with any null task throws NPE
849       */
850      public void testInvokeAllNPE() {
851          RecursiveAction a = new CheckedRecursiveAction() {
852 <            public void realCompute() {
852 >            protected void realCompute() {
853                  AsyncFib f = new AsyncFib(8);
854                  AsyncFib g = new AsyncFib(9);
855                  AsyncFib h = null;
# Line 840 | Line 866 | public class ForkJoinTaskTest extends JS
866       */
867      public void testAbnormalInvokeAll2() {
868          RecursiveAction a = new CheckedRecursiveAction() {
869 <            public void realCompute() {
869 >            protected void realCompute() {
870                  AsyncFib f = new AsyncFib(8);
871                  FailingAsyncFib g = new FailingAsyncFib(9);
872                  try {
# Line 858 | Line 884 | public class ForkJoinTaskTest extends JS
884       */
885      public void testAbnormalInvokeAll1() {
886          RecursiveAction a = new CheckedRecursiveAction() {
887 <            public void realCompute() {
887 >            protected void realCompute() {
888                  FailingAsyncFib g = new FailingAsyncFib(9);
889                  try {
890                      invokeAll(g);
# Line 875 | Line 901 | public class ForkJoinTaskTest extends JS
901       */
902      public void testAbnormalInvokeAll3() {
903          RecursiveAction a = new CheckedRecursiveAction() {
904 <            public void realCompute() {
904 >            protected void realCompute() {
905                  AsyncFib f = new AsyncFib(8);
906                  FailingAsyncFib g = new FailingAsyncFib(9);
907                  AsyncFib h = new AsyncFib(7);
# Line 890 | Line 916 | public class ForkJoinTaskTest extends JS
916      }
917  
918      /**
919 <     * invokeAll(collection)  throws exception if any task does
919 >     * invokeAll(collection) throws exception if any task does
920       */
921      public void testAbnormalInvokeAllCollection() {
922          RecursiveAction a = new CheckedRecursiveAction() {
923 <            public void realCompute() {
923 >            protected void realCompute() {
924                  FailingAsyncFib f = new FailingAsyncFib(8);
925                  AsyncFib g = new AsyncFib(9);
926                  AsyncFib h = new AsyncFib(7);
# Line 918 | Line 944 | public class ForkJoinTaskTest extends JS
944       */
945      public void testTryUnfork() {
946          RecursiveAction a = new CheckedRecursiveAction() {
947 <            public void realCompute() {
947 >            protected void realCompute() {
948                  AsyncFib g = new AsyncFib(9);
949                  assertSame(g, g.fork());
950                  AsyncFib f = new AsyncFib(8);
# Line 937 | Line 963 | public class ForkJoinTaskTest extends JS
963       */
964      public void testGetSurplusQueuedTaskCount() {
965          RecursiveAction a = new CheckedRecursiveAction() {
966 <            public void realCompute() {
966 >            protected void realCompute() {
967                  AsyncFib h = new AsyncFib(7);
968                  assertSame(h, h.fork());
969                  AsyncFib g = new AsyncFib(9);
# Line 959 | Line 985 | public class ForkJoinTaskTest extends JS
985       */
986      public void testPeekNextLocalTask() {
987          RecursiveAction a = new CheckedRecursiveAction() {
988 <            public void realCompute() {
988 >            protected void realCompute() {
989                  AsyncFib g = new AsyncFib(9);
990                  assertSame(g, g.fork());
991                  AsyncFib f = new AsyncFib(8);
# Line 979 | Line 1005 | public class ForkJoinTaskTest extends JS
1005       */
1006      public void testPollNextLocalTask() {
1007          RecursiveAction a = new CheckedRecursiveAction() {
1008 <            public void realCompute() {
1008 >            protected void realCompute() {
1009                  AsyncFib g = new AsyncFib(9);
1010                  assertSame(g, g.fork());
1011                  AsyncFib f = new AsyncFib(8);
# Line 998 | Line 1024 | public class ForkJoinTaskTest extends JS
1024       */
1025      public void testPollTask() {
1026          RecursiveAction a = new CheckedRecursiveAction() {
1027 <            public void realCompute() {
1027 >            protected void realCompute() {
1028                  AsyncFib g = new AsyncFib(9);
1029                  assertSame(g, g.fork());
1030                  AsyncFib f = new AsyncFib(8);
# Line 1016 | Line 1042 | public class ForkJoinTaskTest extends JS
1042       */
1043      public void testPeekNextLocalTaskAsync() {
1044          RecursiveAction a = new CheckedRecursiveAction() {
1045 <            public void realCompute() {
1045 >            protected void realCompute() {
1046                  AsyncFib g = new AsyncFib(9);
1047                  assertSame(g, g.fork());
1048                  AsyncFib f = new AsyncFib(8);
# Line 1037 | Line 1063 | public class ForkJoinTaskTest extends JS
1063       */
1064      public void testPollNextLocalTaskAsync() {
1065          RecursiveAction a = new CheckedRecursiveAction() {
1066 <            public void realCompute() {
1066 >            protected void realCompute() {
1067                  AsyncFib g = new AsyncFib(9);
1068                  assertSame(g, g.fork());
1069                  AsyncFib f = new AsyncFib(8);
# Line 1057 | Line 1083 | public class ForkJoinTaskTest extends JS
1083       */
1084      public void testPollTaskAsync() {
1085          RecursiveAction a = new CheckedRecursiveAction() {
1086 <            public void realCompute() {
1086 >            protected void realCompute() {
1087                  AsyncFib g = new AsyncFib(9);
1088                  assertSame(g, g.fork());
1089                  AsyncFib f = new AsyncFib(8);
# Line 1080 | Line 1106 | public class ForkJoinTaskTest extends JS
1106       */
1107      public void testInvokeSingleton() {
1108          RecursiveAction a = new CheckedRecursiveAction() {
1109 <            public void realCompute() {
1109 >            protected void realCompute() {
1110                  AsyncFib f = new AsyncFib(8);
1111                  assertNull(f.invoke());
1112                  assertEquals(21, f.number);
# Line 1096 | Line 1122 | public class ForkJoinTaskTest extends JS
1122       */
1123      public void testQuietlyInvokeSingleton() {
1124          RecursiveAction a = new CheckedRecursiveAction() {
1125 <            public void realCompute() {
1125 >            protected void realCompute() {
1126                  AsyncFib f = new AsyncFib(8);
1127                  f.quietlyInvoke();
1128                  assertEquals(21, f.number);
# Line 1110 | Line 1136 | public class ForkJoinTaskTest extends JS
1136       */
1137      public void testForkJoinSingleton() {
1138          RecursiveAction a = new CheckedRecursiveAction() {
1139 <            public void realCompute() {
1139 >            protected void realCompute() {
1140                  AsyncFib f = new AsyncFib(8);
1141                  assertSame(f, f.fork());
1142                  assertNull(f.join());
# Line 1125 | Line 1151 | public class ForkJoinTaskTest extends JS
1151       */
1152      public void testForkGetSingleton() {
1153          RecursiveAction a = new CheckedRecursiveAction() {
1154 <            public void realCompute() throws Exception {
1154 >            protected void realCompute() throws Exception {
1155                  AsyncFib f = new AsyncFib(8);
1156                  assertSame(f, f.fork());
1157                  assertNull(f.get());
# Line 1140 | Line 1166 | public class ForkJoinTaskTest extends JS
1166       */
1167      public void testForkTimedGetSingleton() {
1168          RecursiveAction a = new CheckedRecursiveAction() {
1169 <            public void realCompute() throws Exception {
1169 >            protected void realCompute() throws Exception {
1170                  AsyncFib f = new AsyncFib(8);
1171                  assertSame(f, f.fork());
1172                  assertNull(f.get(LONG_DELAY_MS, MILLISECONDS));
# Line 1155 | Line 1181 | public class ForkJoinTaskTest extends JS
1181       */
1182      public void testForkTimedGetNPESingleton() {
1183          RecursiveAction a = new CheckedRecursiveAction() {
1184 <            public void realCompute() throws Exception {
1184 >            protected void realCompute() throws Exception {
1185                  AsyncFib f = new AsyncFib(8);
1186                  assertSame(f, f.fork());
1187                  try {
# Line 1171 | Line 1197 | public class ForkJoinTaskTest extends JS
1197       */
1198      public void testForkQuietlyJoinSingleton() {
1199          RecursiveAction a = new CheckedRecursiveAction() {
1200 <            public void realCompute() {
1200 >            protected void realCompute() {
1201                  AsyncFib f = new AsyncFib(8);
1202                  assertSame(f, f.fork());
1203                  f.quietlyJoin();
# Line 1181 | Line 1207 | public class ForkJoinTaskTest extends JS
1207          testInvokeOnPool(singletonPool(), a);
1208      }
1209  
1184
1210      /**
1211       * helpQuiesce returns when tasks are complete.
1212       * getQueuedTaskCount returns 0 when quiescent
1213       */
1214      public void testForkHelpQuiesceSingleton() {
1215          RecursiveAction a = new CheckedRecursiveAction() {
1216 <            public void realCompute() {
1216 >            protected void realCompute() {
1217                  AsyncFib f = new AsyncFib(8);
1218                  assertSame(f, f.fork());
1219 <                f.helpQuiesce();
1219 >                helpQuiesce();
1220                  assertEquals(0, getQueuedTaskCount());
1221                  assertEquals(21, f.number);
1222                  checkCompletedNormally(f);
# Line 1199 | Line 1224 | public class ForkJoinTaskTest extends JS
1224          testInvokeOnPool(singletonPool(), a);
1225      }
1226  
1202
1227      /**
1228       * invoke task throws exception when task completes abnormally
1229       */
1230      public void testAbnormalInvokeSingleton() {
1231          RecursiveAction a = new CheckedRecursiveAction() {
1232 <            public void realCompute() {
1232 >            protected void realCompute() {
1233                  FailingAsyncFib f = new FailingAsyncFib(8);
1234                  try {
1235                      f.invoke();
# Line 1222 | Line 1246 | public class ForkJoinTaskTest extends JS
1246       */
1247      public void testAbnormalQuietlyInvokeSingleton() {
1248          RecursiveAction a = new CheckedRecursiveAction() {
1249 <            public void realCompute() {
1249 >            protected void realCompute() {
1250                  FailingAsyncFib f = new FailingAsyncFib(8);
1251                  f.quietlyInvoke();
1252                  assertTrue(f.getException() instanceof FJException);
# Line 1236 | Line 1260 | public class ForkJoinTaskTest extends JS
1260       */
1261      public void testAbnormalForkJoinSingleton() {
1262          RecursiveAction a = new CheckedRecursiveAction() {
1263 <            public void realCompute() {
1263 >            protected void realCompute() {
1264                  FailingAsyncFib f = new FailingAsyncFib(8);
1265                  assertSame(f, f.fork());
1266                  try {
# Line 1254 | Line 1278 | public class ForkJoinTaskTest extends JS
1278       */
1279      public void testAbnormalForkGetSingleton() {
1280          RecursiveAction a = new CheckedRecursiveAction() {
1281 <            public void realCompute() throws Exception {
1281 >            protected void realCompute() throws Exception {
1282                  FailingAsyncFib f = new FailingAsyncFib(8);
1283                  assertSame(f, f.fork());
1284                  try {
# Line 1274 | Line 1298 | public class ForkJoinTaskTest extends JS
1298       */
1299      public void testAbnormalForkTimedGetSingleton() {
1300          RecursiveAction a = new CheckedRecursiveAction() {
1301 <            public void realCompute() throws Exception {
1301 >            protected void realCompute() throws Exception {
1302                  FailingAsyncFib f = new FailingAsyncFib(8);
1303                  assertSame(f, f.fork());
1304                  try {
# Line 1294 | Line 1318 | public class ForkJoinTaskTest extends JS
1318       */
1319      public void testAbnormalForkQuietlyJoinSingleton() {
1320          RecursiveAction a = new CheckedRecursiveAction() {
1321 <            public void realCompute() {
1321 >            protected void realCompute() {
1322                  FailingAsyncFib f = new FailingAsyncFib(8);
1323                  assertSame(f, f.fork());
1324                  f.quietlyJoin();
# Line 1309 | Line 1333 | public class ForkJoinTaskTest extends JS
1333       */
1334      public void testCancelledInvokeSingleton() {
1335          RecursiveAction a = new CheckedRecursiveAction() {
1336 <            public void realCompute() {
1336 >            protected void realCompute() {
1337                  AsyncFib f = new AsyncFib(8);
1338                  assertTrue(f.cancel(true));
1339                  try {
# Line 1327 | Line 1351 | public class ForkJoinTaskTest extends JS
1351       */
1352      public void testCancelledForkJoinSingleton() {
1353          RecursiveAction a = new CheckedRecursiveAction() {
1354 <            public void realCompute() {
1354 >            protected void realCompute() {
1355                  AsyncFib f = new AsyncFib(8);
1356                  assertTrue(f.cancel(true));
1357                  assertSame(f, f.fork());
# Line 1346 | Line 1370 | public class ForkJoinTaskTest extends JS
1370       */
1371      public void testCancelledForkGetSingleton() {
1372          RecursiveAction a = new CheckedRecursiveAction() {
1373 <            public void realCompute() throws Exception {
1373 >            protected void realCompute() throws Exception {
1374                  AsyncFib f = new AsyncFib(8);
1375                  assertTrue(f.cancel(true));
1376                  assertSame(f, f.fork());
# Line 1365 | Line 1389 | public class ForkJoinTaskTest extends JS
1389       */
1390      public void testCancelledForkTimedGetSingleton() throws Exception {
1391          RecursiveAction a = new CheckedRecursiveAction() {
1392 <            public void realCompute() throws Exception {
1392 >            protected void realCompute() throws Exception {
1393                  AsyncFib f = new AsyncFib(8);
1394                  assertTrue(f.cancel(true));
1395                  assertSame(f, f.fork());
# Line 1384 | Line 1408 | public class ForkJoinTaskTest extends JS
1408       */
1409      public void testCancelledForkQuietlyJoinSingleton() {
1410          RecursiveAction a = new CheckedRecursiveAction() {
1411 <            public void realCompute() {
1411 >            protected void realCompute() {
1412                  AsyncFib f = new AsyncFib(8);
1413                  assertTrue(f.cancel(true));
1414                  assertSame(f, f.fork());
# Line 1399 | Line 1423 | public class ForkJoinTaskTest extends JS
1423       */
1424      public void testCompleteExceptionallySingleton() {
1425          RecursiveAction a = new CheckedRecursiveAction() {
1426 <            public void realCompute() {
1426 >            protected void realCompute() {
1427                  AsyncFib f = new AsyncFib(8);
1428                  f.completeExceptionally(new FJException());
1429                  try {
# Line 1417 | Line 1441 | public class ForkJoinTaskTest extends JS
1441       */
1442      public void testInvokeAll2Singleton() {
1443          RecursiveAction a = new CheckedRecursiveAction() {
1444 <            public void realCompute() {
1444 >            protected void realCompute() {
1445                  AsyncFib f = new AsyncFib(8);
1446                  AsyncFib g = new AsyncFib(9);
1447                  invokeAll(f, g);
# Line 1434 | Line 1458 | public class ForkJoinTaskTest extends JS
1458       */
1459      public void testInvokeAll1Singleton() {
1460          RecursiveAction a = new CheckedRecursiveAction() {
1461 <            public void realCompute() {
1461 >            protected void realCompute() {
1462                  AsyncFib f = new AsyncFib(8);
1463                  invokeAll(f);
1464                  checkCompletedNormally(f);
# Line 1448 | Line 1472 | public class ForkJoinTaskTest extends JS
1472       */
1473      public void testInvokeAll3Singleton() {
1474          RecursiveAction a = new CheckedRecursiveAction() {
1475 <            public void realCompute() {
1475 >            protected void realCompute() {
1476                  AsyncFib f = new AsyncFib(8);
1477                  AsyncFib g = new AsyncFib(9);
1478                  AsyncFib h = new AsyncFib(7);
# Line 1468 | Line 1492 | public class ForkJoinTaskTest extends JS
1492       */
1493      public void testInvokeAllCollectionSingleton() {
1494          RecursiveAction a = new CheckedRecursiveAction() {
1495 <            public void realCompute() {
1495 >            protected void realCompute() {
1496                  AsyncFib f = new AsyncFib(8);
1497                  AsyncFib g = new AsyncFib(9);
1498                  AsyncFib h = new AsyncFib(7);
# Line 1487 | Line 1511 | public class ForkJoinTaskTest extends JS
1511          testInvokeOnPool(singletonPool(), a);
1512      }
1513  
1490
1514      /**
1515       * invokeAll(tasks) with any null task throws NPE
1516       */
1517      public void testInvokeAllNPESingleton() {
1518          RecursiveAction a = new CheckedRecursiveAction() {
1519 <            public void realCompute() {
1519 >            protected void realCompute() {
1520                  AsyncFib f = new AsyncFib(8);
1521                  AsyncFib g = new AsyncFib(9);
1522                  AsyncFib h = null;
# Line 1510 | Line 1533 | public class ForkJoinTaskTest extends JS
1533       */
1534      public void testAbnormalInvokeAll2Singleton() {
1535          RecursiveAction a = new CheckedRecursiveAction() {
1536 <            public void realCompute() {
1536 >            protected void realCompute() {
1537                  AsyncFib f = new AsyncFib(8);
1538                  FailingAsyncFib g = new FailingAsyncFib(9);
1539                  try {
# Line 1528 | Line 1551 | public class ForkJoinTaskTest extends JS
1551       */
1552      public void testAbnormalInvokeAll1Singleton() {
1553          RecursiveAction a = new CheckedRecursiveAction() {
1554 <            public void realCompute() {
1554 >            protected void realCompute() {
1555                  FailingAsyncFib g = new FailingAsyncFib(9);
1556                  try {
1557                      invokeAll(g);
# Line 1545 | Line 1568 | public class ForkJoinTaskTest extends JS
1568       */
1569      public void testAbnormalInvokeAll3Singleton() {
1570          RecursiveAction a = new CheckedRecursiveAction() {
1571 <            public void realCompute() {
1571 >            protected void realCompute() {
1572                  AsyncFib f = new AsyncFib(8);
1573                  FailingAsyncFib g = new FailingAsyncFib(9);
1574                  AsyncFib h = new AsyncFib(7);
# Line 1560 | Line 1583 | public class ForkJoinTaskTest extends JS
1583      }
1584  
1585      /**
1586 <     * invokeAll(collection)  throws exception if any task does
1586 >     * invokeAll(collection) throws exception if any task does
1587       */
1588      public void testAbnormalInvokeAllCollectionSingleton() {
1589          RecursiveAction a = new CheckedRecursiveAction() {
1590 <            public void realCompute() {
1590 >            protected void realCompute() {
1591                  FailingAsyncFib f = new FailingAsyncFib(8);
1592                  AsyncFib g = new AsyncFib(9);
1593                  AsyncFib h = new AsyncFib(7);
# Line 1582 | Line 1605 | public class ForkJoinTaskTest extends JS
1605          testInvokeOnPool(singletonPool(), a);
1606      }
1607  
1608 +    /**
1609 +     * ForkJoinTask.quietlyComplete returns when task completes
1610 +     * normally without setting a value. The most recent value
1611 +     * established by setRawResult(V) (or null by default) is returned
1612 +     * from invoke.
1613 +     */
1614 +    public void testQuietlyComplete() {
1615 +        RecursiveAction a = new CheckedRecursiveAction() {
1616 +                protected void realCompute() {
1617 +                    AsyncFib f = new AsyncFib(8);
1618 +                    f.quietlyComplete();
1619 +                    assertEquals(8, f.number);
1620 +                    checkCompletedNormally(f);
1621 +                }};
1622 +        testInvokeOnPool(mainPool(), a);
1623 +    }
1624 +
1625   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines