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.26 by jsr166, Mon Nov 22 07:40:24 2010 UTC vs.
Revision 1.33 by jsr166, Fri May 27 19:42:42 2011 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;
7   import java.util.concurrent.CancellationException;
# Line 93 | Line 93 | public class ForkJoinTaskTest extends JS
93          assertFalse(a.isCompletedAbnormally());
94          assertNull(a.getException());
95          assertSame(expected, a.getRawResult());
96 <        assertSame(expected, a.join());
96 >
97 >        {
98 >            Thread.currentThread().interrupt();
99 >            long t0 = System.nanoTime();
100 >            assertSame(expected, a.join());
101 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
102 >            Thread.interrupted();
103 >        }
104 >
105 >        {
106 >            Thread.currentThread().interrupt();
107 >            long t0 = System.nanoTime();
108 >            a.quietlyJoin();        // should be no-op
109 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
110 >            Thread.interrupted();
111 >        }
112 >
113          assertFalse(a.cancel(false));
114          assertFalse(a.cancel(true));
115          try {
# Line 115 | Line 131 | public class ForkJoinTaskTest extends JS
131          assertTrue(a.cancel(true));
132  
133          try {
134 +            Thread.currentThread().interrupt();
135              a.join();
136              shouldThrow();
137          } catch (CancellationException success) {
138          } catch (Throwable fail) { threadUnexpectedException(fail); }
139 +        Thread.interrupted();
140 +
141 +        {
142 +            long t0 = System.nanoTime();
143 +            a.quietlyJoin();        // should be no-op
144 +            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
145 +        }
146  
147          try {
148              a.get();
# Line 138 | Line 162 | public class ForkJoinTaskTest extends JS
162          assertFalse(a.isCancelled());
163          assertFalse(a.isCompletedNormally());
164          assertTrue(a.isCompletedAbnormally());
165 <        assertSame(t, a.getException());
165 >        assertSame(t.getClass(), a.getException().getClass());
166          assertNull(a.getRawResult());
167          assertFalse(a.cancel(false));
168          assertFalse(a.cancel(true));
169  
170          try {
171 +            Thread.currentThread().interrupt();
172              a.join();
173              shouldThrow();
174          } catch (Throwable expected) {
175 <            assertSame(t, expected);
175 >            assertSame(t.getClass(), expected.getClass());
176 >        }
177 >        Thread.interrupted();
178 >
179 >        {
180 >            long t0 = System.nanoTime();
181 >            a.quietlyJoin();        // should be no-op
182 >            assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
183          }
184  
185          try {
186              a.get();
187              shouldThrow();
188          } catch (ExecutionException success) {
189 <            assertSame(t, success.getCause());
189 >            assertSame(t.getClass(), success.getCause().getClass());
190          } catch (Throwable fail) { threadUnexpectedException(fail); }
191  
192          try {
193              a.get(5L, SECONDS);
194              shouldThrow();
195          } catch (ExecutionException success) {
196 <            assertSame(t, success.getCause());
196 >            assertSame(t.getClass(), success.getCause().getClass());
197          } catch (Throwable fail) { threadUnexpectedException(fail); }
198      }
199  
# Line 173 | Line 205 | public class ForkJoinTaskTest extends JS
205       * differently than supplied Recursive forms.
206       */
207  
208 <    static final class FJException extends RuntimeException {
208 >    public static final class FJException extends RuntimeException {
209          FJException() { super(); }
210      }
211  
# Line 317 | Line 349 | public class ForkJoinTaskTest extends JS
349          }
350      }
351  
320
352      static final class FailingAsyncFib extends BinaryAsyncAction {
353          int number;
354          public FailingAsyncFib(int n) {
# Line 454 | Line 485 | public class ForkJoinTaskTest extends JS
485          testInvokeOnPool(mainPool(), a);
486      }
487  
457
488      /**
489       * helpQuiesce returns when tasks are complete.
490       * getQueuedTaskCount returns 0 when quiescent
# Line 464 | Line 494 | public class ForkJoinTaskTest extends JS
494              public void realCompute() {
495                  AsyncFib f = new AsyncFib(8);
496                  assertSame(f, f.fork());
497 <                f.helpQuiesce();
497 >                helpQuiesce();
498                  assertEquals(21, f.number);
499                  assertEquals(0, getQueuedTaskCount());
500                  checkCompletedNormally(f);
# Line 472 | Line 502 | public class ForkJoinTaskTest extends JS
502          testInvokeOnPool(mainPool(), a);
503      }
504  
475
505      /**
506       * invoke task throws exception when task completes abnormally
507       */
# Line 719 | Line 748 | public class ForkJoinTaskTest extends JS
748          RecursiveAction a = new CheckedRecursiveAction() {
749              public void realCompute() {
750                  setRawResult(null);
751 +                assertNull(getRawResult());
752              }};
753          assertNull(a.invoke());
754      }
# Line 816 | Line 846 | public class ForkJoinTaskTest extends JS
846          testInvokeOnPool(mainPool(), a);
847      }
848  
819
849      /**
850       * invokeAll(tasks) with any null task throws NPE
851       */
# Line 1180 | Line 1209 | public class ForkJoinTaskTest extends JS
1209          testInvokeOnPool(singletonPool(), a);
1210      }
1211  
1183
1212      /**
1213       * helpQuiesce returns when tasks are complete.
1214       * getQueuedTaskCount returns 0 when quiescent
# Line 1190 | Line 1218 | public class ForkJoinTaskTest extends JS
1218              public void realCompute() {
1219                  AsyncFib f = new AsyncFib(8);
1220                  assertSame(f, f.fork());
1221 <                f.helpQuiesce();
1221 >                helpQuiesce();
1222                  assertEquals(0, getQueuedTaskCount());
1223                  assertEquals(21, f.number);
1224                  checkCompletedNormally(f);
# Line 1198 | Line 1226 | public class ForkJoinTaskTest extends JS
1226          testInvokeOnPool(singletonPool(), a);
1227      }
1228  
1201
1229      /**
1230       * invoke task throws exception when task completes abnormally
1231       */
# Line 1486 | Line 1513 | public class ForkJoinTaskTest extends JS
1513          testInvokeOnPool(singletonPool(), a);
1514      }
1515  
1489
1516      /**
1517       * invokeAll(tasks) with any null task throws NPE
1518       */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines