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

Comparing jsr166/src/test/tck/AbstractExecutorServiceTest.java (file contents):
Revision 1.10 by dl, Sat Dec 27 19:26:42 2003 UTC vs.
Revision 1.17 by jsr166, Mon Nov 16 04:57:09 2009 UTC

# Line 2 | Line 2
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
5 < * Other contributors include Andrew Wright, Jeffrey Hayes,
6 < * Pat Fisher, Mike Judd.
5 > * Other contributors include Andrew Wright, Jeffrey Hayes,
6 > * Pat Fisher, Mike Judd.
7   */
8  
9  
# Line 21 | Line 21 | public class AbstractExecutorServiceTest
21          return new TestSuite(AbstractExecutorServiceTest.class);
22      }
23  
24 <    /**
24 >    /**
25       * A no-frills implementation of AbstractExecutorService, designed
26       * to test the submit methods only.
27       */
# Line 36 | Line 36 | public class AbstractExecutorServiceTest
36      }
37  
38      /**
39 <     * execute of runnable runs it to completion
39 >     * execute(runnable) runs it to completion
40       */
41      public void testExecuteRunnable() {
42          try {
# Line 57 | Line 57 | public class AbstractExecutorServiceTest
57  
58  
59      /**
60 <     * completed submit of callable returns result
60 >     * Completed submit(callable) returns result
61       */
62      public void testSubmitCallable() {
63          try {
# Line 75 | Line 75 | public class AbstractExecutorServiceTest
75      }
76  
77      /**
78 <     * completed submit of runnable returns successfully
78 >     * Completed submit(runnable) returns successfully
79       */
80      public void testSubmitRunnable() {
81          try {
# Line 93 | Line 93 | public class AbstractExecutorServiceTest
93      }
94  
95      /**
96 <     * completed submit of (runnable, result) returns result
96 >     * Completed submit(runnable, result) returns result
97       */
98      public void testSubmitRunnable2() {
99          try {
# Line 112 | Line 112 | public class AbstractExecutorServiceTest
112  
113  
114      /**
115 <     * submit of a privileged action runs it to completion
115 >     * A submitted privileged action to completion
116       */
117      public void testSubmitPrivilegedAction() {
118 <        Policy savedPolicy = Policy.getPolicy();
119 <        AdjustablePolicy policy = new AdjustablePolicy();
120 <        policy.addPermission(new RuntimePermission("getContextClassLoader"));
121 <        policy.addPermission(new RuntimePermission("setContextClassLoader"));
122 <        Policy.setPolicy(policy);
118 >        Policy savedPolicy = null;
119 >        try {
120 >            savedPolicy = Policy.getPolicy();
121 >            AdjustablePolicy policy = new AdjustablePolicy();
122 >            policy.addPermission(new RuntimePermission("getContextClassLoader"));
123 >            policy.addPermission(new RuntimePermission("setContextClassLoader"));
124 >            Policy.setPolicy(policy);
125 >        } catch (AccessControlException ok) {
126 >            return;
127 >        }
128          try {
129              ExecutorService e = new DirectExecutorService();
130              Future future = e.submit(Executors.callable(new PrivilegedAction() {
# Line 137 | Line 142 | public class AbstractExecutorServiceTest
142              unexpectedException();
143          }
144          finally {
145 <            Policy.setPolicy(savedPolicy);
145 >            try {
146 >                Policy.setPolicy(savedPolicy);
147 >            } catch (AccessControlException ok) {
148 >                return;
149 >            }
150          }
151      }
152  
153      /**
154 <     * submit of a privileged exception action runs it to completion
154 >     * A submitted a privileged exception action runs to completion
155       */
156      public void testSubmitPrivilegedExceptionAction() {
157 <        Policy savedPolicy = Policy.getPolicy();
158 <        AdjustablePolicy policy = new AdjustablePolicy();
159 <        policy.addPermission(new RuntimePermission("getContextClassLoader"));
160 <        policy.addPermission(new RuntimePermission("setContextClassLoader"));
161 <        Policy.setPolicy(policy);
157 >        Policy savedPolicy = null;
158 >        try {
159 >            savedPolicy = Policy.getPolicy();
160 >            AdjustablePolicy policy = new AdjustablePolicy();
161 >            policy.addPermission(new RuntimePermission("getContextClassLoader"));
162 >            policy.addPermission(new RuntimePermission("setContextClassLoader"));
163 >            Policy.setPolicy(policy);
164 >        } catch (AccessControlException ok) {
165 >            return;
166 >        }
167 >
168          try {
169              ExecutorService e = new DirectExecutorService();
170              Future future = e.submit(Executors.callable(new PrivilegedExceptionAction() {
# Line 172 | Line 187 | public class AbstractExecutorServiceTest
187      }
188  
189      /**
190 <     * submit of a failed privileged exception action reports exception
190 >     * A submitted failed privileged exception action reports exception
191       */
192      public void testSubmitFailedPrivilegedExceptionAction() {
193 <        Policy savedPolicy = Policy.getPolicy();
194 <        AdjustablePolicy policy = new AdjustablePolicy();
195 <        policy.addPermission(new RuntimePermission("getContextClassLoader"));
196 <        policy.addPermission(new RuntimePermission("setContextClassLoader"));
197 <        Policy.setPolicy(policy);
193 >        Policy savedPolicy = null;
194 >        try {
195 >            savedPolicy = Policy.getPolicy();
196 >            AdjustablePolicy policy = new AdjustablePolicy();
197 >            policy.addPermission(new RuntimePermission("getContextClassLoader"));
198 >            policy.addPermission(new RuntimePermission("setContextClassLoader"));
199 >            Policy.setPolicy(policy);
200 >        } catch (AccessControlException ok) {
201 >            return;
202 >        }
203 >
204 >
205          try {
206              ExecutorService e = new DirectExecutorService();
207              Future future = e.submit(Executors.callable(new PrivilegedExceptionAction() {
# Line 201 | Line 223 | public class AbstractExecutorServiceTest
223      }
224  
225      /**
226 <     * execute with a null runnable throws NPE
226 >     * execute(null runnable) throws NPE
227       */
228      public void testExecuteNullRunnable() {
229          try {
# Line 219 | Line 241 | public class AbstractExecutorServiceTest
241  
242  
243      /**
244 <     * submit of a null callable throws NPE
244 >     * submit(null callable) throws NPE
245       */
246      public void testSubmitNullCallable() {
247          try {
# Line 236 | Line 258 | public class AbstractExecutorServiceTest
258      }
259  
260      /**
261 <     * submit of Runnable throws RejectedExecutionException if
262 <     * saturated.
261 >     * submit(runnable) throws RejectedExecutionException if
262 >     * executor is saturated.
263       */
264      public void testExecute1() {
265 <        ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, SHORT_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
265 >        ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1));
266          try {
267  
268 <            for(int i = 0; i < 5; ++i){
268 >            for (int i = 0; i < 5; ++i){
269                  p.submit(new MediumRunnable());
270              }
271              shouldThrow();
272 <        } catch(RejectedExecutionException success){}
272 >        } catch (RejectedExecutionException success){}
273          joinPool(p);
274      }
275  
276      /**
277 <     * Completed submit of Callable throws RejectedExecutionException
278 <     *  if saturated.
277 >     * submit(callable) throws RejectedExecutionException
278 >     * if executor is saturated.
279       */
280      public void testExecute2() {
281 <         ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, SHORT_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
281 >         ThreadPoolExecutor p = new ThreadPoolExecutor(1,1, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(1));
282          try {
283 <            for(int i = 0; i < 5; ++i) {
283 >            for (int i = 0; i < 5; ++i) {
284                  p.submit(new SmallCallable());
285              }
286              shouldThrow();
287 <        } catch(RejectedExecutionException e){}
287 >        } catch (RejectedExecutionException e){}
288          joinPool(p);
289      }
290  
291  
292      /**
293 <     *  blocking on submit of Callable throws InterruptedException if
293 >     *  Blocking on submit(callable) throws InterruptedException if
294       *  caller interrupted.
295       */
296      public void testInterruptedSubmit() {
297 <        final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,SHORT_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
297 >        final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
298          Thread t = new Thread(new Runnable() {
299                  public void run() {
300                      try {
# Line 281 | Line 303 | public class AbstractExecutorServiceTest
303                                      try {
304                                          Thread.sleep(MEDIUM_DELAY_MS);
305                                          shouldThrow();
306 <                                    } catch(InterruptedException e){
306 >                                    } catch (InterruptedException e){
307                                      }
308                                      return null;
309                                  }
310                              }).get();
311 <                    } catch(InterruptedException success){
312 <                    } catch(Exception e) {
311 >                    } catch (InterruptedException success){
312 >                    } catch (Exception e) {
313                          unexpectedException();
314                      }
315  
# Line 297 | Line 319 | public class AbstractExecutorServiceTest
319              t.start();
320              Thread.sleep(SHORT_DELAY_MS);
321              t.interrupt();
322 <        } catch(Exception e){
322 >        } catch (Exception e){
323              unexpectedException();
324          }
325          joinPool(p);
326      }
327  
328      /**
329 <     *  get of submit of Callable throws Exception if callable
329 >     *  get of submitted callable throws Exception if callable
330       *  interrupted
331       */
332      public void testSubmitIE() {
333 <        final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,SHORT_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
333 >        final ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
334  
335          final Callable c = new Callable() {
336                  public Object call() {
337                      try {
338                          p.submit(new SmallCallable()).get();
339                          shouldThrow();
340 <                    } catch(InterruptedException e){}
341 <                    catch(RejectedExecutionException e2){}
342 <                    catch(ExecutionException e3){}
340 >                    } catch (InterruptedException e){}
341 >                    catch (RejectedExecutionException e2){}
342 >                    catch (ExecutionException e3){}
343                      return Boolean.TRUE;
344                  }
345              };
# Line 328 | Line 350 | public class AbstractExecutorServiceTest
350                  public void run() {
351                      try {
352                          c.call();
353 <                    } catch(Exception e){}
353 >                    } catch (Exception e){}
354                  }
355            });
356          try {
# Line 336 | Line 358 | public class AbstractExecutorServiceTest
358              Thread.sleep(SHORT_DELAY_MS);
359              t.interrupt();
360              t.join();
361 <        } catch(InterruptedException e){
361 >        } catch (InterruptedException e){
362              unexpectedException();
363          }
364  
# Line 344 | Line 366 | public class AbstractExecutorServiceTest
366      }
367  
368      /**
369 <     *  completed submit of Callable throws ExecutionException if
370 <     *  callable throws exception
369 >     *  get of submit(callable) throws ExecutionException if callable
370 >     *  throws exception
371       */
372      public void testSubmitEE() {
373 <        ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,SHORT_DELAY_MS, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10));
373 >        ThreadPoolExecutor p = new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10));
374  
375          try {
376              Callable c = new Callable() {
# Line 358 | Line 380 | public class AbstractExecutorServiceTest
380                      }
381                  };
382  
383 <            for(int i =0; i < 5; i++){
383 >            for (int i =0; i < 5; i++){
384                  p.submit(c).get();
385              }
386  
387              shouldThrow();
388          }
389 <        catch(ExecutionException success){
390 <        } catch(Exception e) {
389 >        catch (ExecutionException success){
390 >        } catch (Exception e) {
391              unexpectedException();
392          }
393          joinPool(p);
# Line 379 | Line 401 | public class AbstractExecutorServiceTest
401          try {
402              e.invokeAny(null);
403          } catch (NullPointerException success) {
404 <        } catch(Exception ex) {
404 >        } catch (Exception ex) {
405              unexpectedException();
406          } finally {
407              joinPool(e);
# Line 394 | Line 416 | public class AbstractExecutorServiceTest
416          try {
417              e.invokeAny(new ArrayList<Callable<String>>());
418          } catch (IllegalArgumentException success) {
419 <        } catch(Exception ex) {
419 >        } catch (Exception ex) {
420              unexpectedException();
421          } finally {
422              joinPool(e);
# Line 412 | Line 434 | public class AbstractExecutorServiceTest
434              l.add(null);
435              e.invokeAny(l);
436          } catch (NullPointerException success) {
437 <        } catch(Exception ex) {
437 >        } catch (Exception ex) {
438              ex.printStackTrace();
439              unexpectedException();
440          } finally {
# Line 421 | Line 443 | public class AbstractExecutorServiceTest
443      }
444  
445      /**
446 <     * invokeAny(c) throws ExecutionException if no task completes
446 >     * invokeAny(c) throws ExecutionException if no task in c completes
447       */
448      public void testInvokeAny4() {
449          ExecutorService e = new DirectExecutorService();
# Line 429 | Line 451 | public class AbstractExecutorServiceTest
451              ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
452              l.add(new NPETask());
453              e.invokeAny(l);
454 <        } catch(ExecutionException success) {
455 <        } catch(Exception ex) {
454 >        } catch (ExecutionException success) {
455 >        } catch (Exception ex) {
456              unexpectedException();
457          } finally {
458              joinPool(e);
# Line 438 | Line 460 | public class AbstractExecutorServiceTest
460      }
461  
462      /**
463 <     * invokeAny(c) returns result of some task
463 >     * invokeAny(c) returns result of some task in c if at least one completes
464       */
465      public void testInvokeAny5() {
466          ExecutorService e = new DirectExecutorService();
# Line 449 | Line 471 | public class AbstractExecutorServiceTest
471              String result = e.invokeAny(l);
472              assertSame(TEST_STRING, result);
473          } catch (ExecutionException success) {
474 <        } catch(Exception ex) {
474 >        } catch (Exception ex) {
475              unexpectedException();
476          } finally {
477              joinPool(e);
# Line 464 | Line 486 | public class AbstractExecutorServiceTest
486          try {
487              e.invokeAll(null);
488          } catch (NullPointerException success) {
489 <        } catch(Exception ex) {
489 >        } catch (Exception ex) {
490              unexpectedException();
491          } finally {
492              joinPool(e);
# Line 479 | Line 501 | public class AbstractExecutorServiceTest
501          try {
502              List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>());
503              assertTrue(r.isEmpty());
504 <        } catch(Exception ex) {
504 >        } catch (Exception ex) {
505              unexpectedException();
506          } finally {
507              joinPool(e);
# Line 497 | Line 519 | public class AbstractExecutorServiceTest
519              l.add(null);
520              e.invokeAll(l);
521          } catch (NullPointerException success) {
522 <        } catch(Exception ex) {
522 >        } catch (Exception ex) {
523              unexpectedException();
524          } finally {
525              joinPool(e);
# Line 505 | Line 527 | public class AbstractExecutorServiceTest
527      }
528  
529      /**
530 <     * get of element of invokeAll(c) throws exception on failed task
530 >     * get of returned element of invokeAll(c) throws exception on failed task
531       */
532      public void testInvokeAll4() {
533          ExecutorService e = new DirectExecutorService();
# Line 514 | Line 536 | public class AbstractExecutorServiceTest
536              l.add(new NPETask());
537              List<Future<String>> result = e.invokeAll(l);
538              assertEquals(1, result.size());
539 <            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
539 >            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
540                  it.next().get();
541 <        } catch(ExecutionException success) {
542 <        } catch(Exception ex) {
541 >        } catch (ExecutionException success) {
542 >        } catch (Exception ex) {
543              unexpectedException();
544          } finally {
545              joinPool(e);
# Line 525 | Line 547 | public class AbstractExecutorServiceTest
547      }
548  
549      /**
550 <     * invokeAll(c) returns results of all completed tasks
550 >     * invokeAll(c) returns results of all completed tasks in c
551       */
552      public void testInvokeAll5() {
553          ExecutorService e = new DirectExecutorService();
# Line 535 | Line 557 | public class AbstractExecutorServiceTest
557              l.add(new StringTask());
558              List<Future<String>> result = e.invokeAll(l);
559              assertEquals(2, result.size());
560 <            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
560 >            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
561                  assertSame(TEST_STRING, it.next().get());
562          } catch (ExecutionException success) {
563 <        } catch(Exception ex) {
563 >        } catch (Exception ex) {
564              unexpectedException();
565          } finally {
566              joinPool(e);
# Line 554 | Line 576 | public class AbstractExecutorServiceTest
576          try {
577              e.invokeAny(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
578          } catch (NullPointerException success) {
579 <        } catch(Exception ex) {
579 >        } catch (Exception ex) {
580              unexpectedException();
581          } finally {
582              joinPool(e);
# Line 562 | Line 584 | public class AbstractExecutorServiceTest
584      }
585  
586      /**
587 <     * timed invokeAny(,,null) throws NPE
587 >     * timed invokeAny(null time unit) throws NPE
588       */
589      public void testTimedInvokeAnyNullTimeUnit() {
590          ExecutorService e = new DirectExecutorService();
# Line 571 | Line 593 | public class AbstractExecutorServiceTest
593              l.add(new StringTask());
594              e.invokeAny(l, MEDIUM_DELAY_MS, null);
595          } catch (NullPointerException success) {
596 <        } catch(Exception ex) {
596 >        } catch (Exception ex) {
597              unexpectedException();
598          } finally {
599              joinPool(e);
# Line 586 | Line 608 | public class AbstractExecutorServiceTest
608          try {
609              e.invokeAny(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
610          } catch (IllegalArgumentException success) {
611 <        } catch(Exception ex) {
611 >        } catch (Exception ex) {
612              unexpectedException();
613          } finally {
614              joinPool(e);
# Line 604 | Line 626 | public class AbstractExecutorServiceTest
626              l.add(null);
627              e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
628          } catch (NullPointerException success) {
629 <        } catch(Exception ex) {
629 >        } catch (Exception ex) {
630              ex.printStackTrace();
631              unexpectedException();
632          } finally {
# Line 621 | Line 643 | public class AbstractExecutorServiceTest
643              ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
644              l.add(new NPETask());
645              e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
646 <        } catch(ExecutionException success) {
647 <        } catch(Exception ex) {
646 >        } catch (ExecutionException success) {
647 >        } catch (Exception ex) {
648              unexpectedException();
649          } finally {
650              joinPool(e);
# Line 630 | Line 652 | public class AbstractExecutorServiceTest
652      }
653  
654      /**
655 <     * timed invokeAny(c) returns result of some task
655 >     * timed invokeAny(c) returns result of some task in c
656       */
657      public void testTimedInvokeAny5() {
658          ExecutorService e = new DirectExecutorService();
# Line 641 | Line 663 | public class AbstractExecutorServiceTest
663              String result = e.invokeAny(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
664              assertSame(TEST_STRING, result);
665          } catch (ExecutionException success) {
666 <        } catch(Exception ex) {
666 >        } catch (Exception ex) {
667              unexpectedException();
668          } finally {
669              joinPool(e);
# Line 656 | Line 678 | public class AbstractExecutorServiceTest
678          try {
679              e.invokeAll(null, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
680          } catch (NullPointerException success) {
681 <        } catch(Exception ex) {
681 >        } catch (Exception ex) {
682              unexpectedException();
683          } finally {
684              joinPool(e);
# Line 664 | Line 686 | public class AbstractExecutorServiceTest
686      }
687  
688      /**
689 <     * timed invokeAll(,,null) throws NPE
689 >     * timed invokeAll(null time unit) throws NPE
690       */
691      public void testTimedInvokeAllNullTimeUnit() {
692          ExecutorService e = new DirectExecutorService();
# Line 673 | Line 695 | public class AbstractExecutorServiceTest
695              l.add(new StringTask());
696              e.invokeAll(l, MEDIUM_DELAY_MS, null);
697          } catch (NullPointerException success) {
698 <        } catch(Exception ex) {
698 >        } catch (Exception ex) {
699              unexpectedException();
700          } finally {
701              joinPool(e);
# Line 688 | Line 710 | public class AbstractExecutorServiceTest
710          try {
711              List<Future<String>> r = e.invokeAll(new ArrayList<Callable<String>>(), MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
712              assertTrue(r.isEmpty());
713 <        } catch(Exception ex) {
713 >        } catch (Exception ex) {
714              unexpectedException();
715          } finally {
716              joinPool(e);
# Line 706 | Line 728 | public class AbstractExecutorServiceTest
728              l.add(null);
729              e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
730          } catch (NullPointerException success) {
731 <        } catch(Exception ex) {
731 >        } catch (Exception ex) {
732              unexpectedException();
733          } finally {
734              joinPool(e);
# Line 714 | Line 736 | public class AbstractExecutorServiceTest
736      }
737  
738      /**
739 <     * get of element of invokeAll(c) throws exception on failed task
739 >     * get of returned element of invokeAll(c) throws exception on failed task
740       */
741      public void testTimedInvokeAll4() {
742          ExecutorService e = new DirectExecutorService();
# Line 723 | Line 745 | public class AbstractExecutorServiceTest
745              l.add(new NPETask());
746              List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
747              assertEquals(1, result.size());
748 <            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
748 >            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
749                  it.next().get();
750 <        } catch(ExecutionException success) {
751 <        } catch(Exception ex) {
750 >        } catch (ExecutionException success) {
751 >        } catch (Exception ex) {
752              unexpectedException();
753          } finally {
754              joinPool(e);
# Line 734 | Line 756 | public class AbstractExecutorServiceTest
756      }
757  
758      /**
759 <     * timed invokeAll(c) returns results of all completed tasks
759 >     * timed invokeAll(c) returns results of all completed tasks in c
760       */
761      public void testTimedInvokeAll5() {
762          ExecutorService e = new DirectExecutorService();
# Line 744 | Line 766 | public class AbstractExecutorServiceTest
766              l.add(new StringTask());
767              List<Future<String>> result = e.invokeAll(l, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS);
768              assertEquals(2, result.size());
769 <            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
769 >            for (Iterator<Future<String>> it = result.iterator(); it.hasNext();)
770                  assertSame(TEST_STRING, it.next().get());
771          } catch (ExecutionException success) {
772 <        } catch(Exception ex) {
772 >        } catch (Exception ex) {
773              unexpectedException();
774          } finally {
775              joinPool(e);
# Line 755 | Line 777 | public class AbstractExecutorServiceTest
777      }
778  
779      /**
780 <     * timed invokeAll(c) cancels tasks not completed by timeout
780 >     * timed invokeAll cancels tasks not completed by timeout
781       */
782      public void testTimedInvokeAll6() {
783          ExecutorService e = new DirectExecutorService();
784          try {
785              ArrayList<Callable<String>> l = new ArrayList<Callable<String>>();
786              l.add(new StringTask());
787 <            l.add(Executors.callable(new LongPossiblyInterruptedRunnable(), TEST_STRING));
788 <            List<Future<String>> result = e.invokeAll(l, SHORT_DELAY_MS, TimeUnit.MILLISECONDS);
789 <            assertEquals(2, result.size());
790 <            Iterator<Future<String>> it = result.iterator();
787 >            l.add(Executors.callable(new MediumPossiblyInterruptedRunnable(), TEST_STRING));
788 >            l.add(new StringTask());
789 >            List<Future<String>> result = e.invokeAll(l, SMALL_DELAY_MS, TimeUnit.MILLISECONDS);
790 >            assertEquals(3, result.size());
791 >            Iterator<Future<String>> it = result.iterator();
792              Future<String> f1 = it.next();
793              Future<String> f2 = it.next();
794 +            Future<String> f3 = it.next();
795              assertTrue(f1.isDone());
796              assertFalse(f1.isCancelled());
797              assertTrue(f2.isDone());
798 <            //            assertTrue(f2.isCancelled());
799 <        } catch(Exception ex) {
798 >            assertTrue(f3.isDone());
799 >            assertTrue(f3.isCancelled());
800 >        } catch (Exception ex) {
801              unexpectedException();
802          } finally {
803              joinPool(e);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines