11 |
|
import java.security.PrivilegedExceptionAction; |
12 |
|
import java.util.ArrayList; |
13 |
|
import java.util.Collection; |
14 |
+ |
import java.util.Collections; |
15 |
|
import java.util.List; |
16 |
|
import java.util.concurrent.Callable; |
17 |
|
import java.util.concurrent.CountDownLatch; |
28 |
|
import java.util.concurrent.atomic.AtomicInteger; |
29 |
|
import java.util.concurrent.locks.ReentrantLock; |
30 |
|
|
30 |
– |
import junit.framework.AssertionFailedError; |
31 |
|
import junit.framework.Test; |
32 |
|
import junit.framework.TestSuite; |
33 |
|
|
109 |
|
return n; |
110 |
|
FibTask f1 = new FibTask(n - 1); |
111 |
|
f1.fork(); |
112 |
< |
return (new FibTask(n - 2)).compute() + f1.join(); |
112 |
> |
return new FibTask(n - 2).compute() + f1.join(); |
113 |
|
} |
114 |
|
} |
115 |
|
|
303 |
|
p.getFactory()); |
304 |
|
while (! p.isQuiescent()) { |
305 |
|
if (millisElapsedSince(startTime) > LONG_DELAY_MS) |
306 |
< |
throw new AssertionFailedError("timed out"); |
306 |
> |
throw new AssertionError("timed out"); |
307 |
|
assertFalse(p.getAsyncMode()); |
308 |
|
assertFalse(p.isShutdown()); |
309 |
|
assertFalse(p.isTerminating()); |
348 |
|
p.shutdown(); |
349 |
|
assertTrue(p.isShutdown()); |
350 |
|
try { |
351 |
< |
ForkJoinTask<Integer> f = p.submit(new FibTask(8)); |
351 |
> |
ForkJoinTask<Integer> unused = p.submit(new FibTask(8)); |
352 |
|
shouldThrow(); |
353 |
|
} catch (RejectedExecutionException success) {} |
354 |
|
} |
536 |
|
ExecutorService e = new ForkJoinPool(1); |
537 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
538 |
|
try { |
539 |
< |
Future<?> future = e.submit((Runnable) null); |
539 |
> |
Future<?> unused = e.submit((Runnable) null); |
540 |
|
shouldThrow(); |
541 |
|
} catch (NullPointerException success) {} |
542 |
|
} |
549 |
|
ExecutorService e = new ForkJoinPool(1); |
550 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
551 |
|
try { |
552 |
< |
Future<String> future = e.submit((Callable) null); |
552 |
> |
Future<String> unused = e.submit((Callable) null); |
553 |
|
shouldThrow(); |
554 |
|
} catch (NullPointerException success) {} |
555 |
|
} |
703 |
|
} |
704 |
|
|
705 |
|
/** |
706 |
< |
* invokeAll(empty collection) returns empty collection |
706 |
> |
* invokeAll(empty collection) returns empty list |
707 |
|
*/ |
708 |
|
public void testInvokeAll2() throws InterruptedException { |
709 |
|
ExecutorService e = new ForkJoinPool(1); |
710 |
+ |
final Collection<Callable<String>> emptyCollection |
711 |
+ |
= Collections.emptyList(); |
712 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
713 |
< |
List<Future<String>> r |
712 |
< |
= e.invokeAll(new ArrayList<Callable<String>>()); |
713 |
> |
List<Future<String>> r = e.invokeAll(emptyCollection); |
714 |
|
assertTrue(r.isEmpty()); |
715 |
|
} |
716 |
|
} |
820 |
|
l.add(latchAwaitingStringTask(latch)); |
821 |
|
l.add(null); |
822 |
|
try { |
823 |
< |
e.invokeAny(l, MEDIUM_DELAY_MS, MILLISECONDS); |
823 |
> |
e.invokeAny(l, randomTimeout(), randomTimeUnit()); |
824 |
|
shouldThrow(); |
825 |
|
} catch (NullPointerException success) {} |
826 |
|
latch.countDown(); |
869 |
|
ExecutorService e = new ForkJoinPool(1); |
870 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
871 |
|
try { |
872 |
< |
e.invokeAll(null, MEDIUM_DELAY_MS, MILLISECONDS); |
872 |
> |
e.invokeAll(null, randomTimeout(), randomTimeUnit()); |
873 |
|
shouldThrow(); |
874 |
|
} catch (NullPointerException success) {} |
875 |
|
} |
884 |
|
List<Callable<String>> l = new ArrayList<>(); |
885 |
|
l.add(new StringTask()); |
886 |
|
try { |
887 |
< |
e.invokeAll(l, MEDIUM_DELAY_MS, null); |
887 |
> |
e.invokeAll(l, randomTimeout(), null); |
888 |
|
shouldThrow(); |
889 |
|
} catch (NullPointerException success) {} |
890 |
|
} |
891 |
|
} |
892 |
|
|
893 |
|
/** |
894 |
< |
* timed invokeAll(empty collection) returns empty collection |
894 |
> |
* timed invokeAll(empty collection) returns empty list |
895 |
|
*/ |
896 |
|
public void testTimedInvokeAll2() throws InterruptedException { |
897 |
|
ExecutorService e = new ForkJoinPool(1); |
898 |
+ |
final Collection<Callable<String>> emptyCollection |
899 |
+ |
= Collections.emptyList(); |
900 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
901 |
|
List<Future<String>> r |
902 |
< |
= e.invokeAll(new ArrayList<Callable<String>>(), |
903 |
< |
MEDIUM_DELAY_MS, MILLISECONDS); |
902 |
> |
= e.invokeAll(emptyCollection, |
903 |
> |
randomTimeout(), randomTimeUnit()); |
904 |
|
assertTrue(r.isEmpty()); |
905 |
|
} |
906 |
|
} |
915 |
|
l.add(new StringTask()); |
916 |
|
l.add(null); |
917 |
|
try { |
918 |
< |
e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS); |
918 |
> |
e.invokeAll(l, randomTimeout(), randomTimeUnit()); |
919 |
|
shouldThrow(); |
920 |
|
} catch (NullPointerException success) {} |
921 |
|
} |