|
17 | 17 | import static org.junit.platform.engine.support.hierarchical.Node.ExecutionMode.SAME_THREAD; |
18 | 18 |
|
19 | 19 | import java.io.Serial; |
20 | | -import java.lang.Thread.UncaughtExceptionHandler; |
21 | | -import java.lang.reflect.Constructor; |
22 | 20 | import java.util.ArrayDeque; |
23 | 21 | import java.util.ArrayList; |
24 | 22 | import java.util.Deque; |
25 | 23 | import java.util.List; |
26 | | -import java.util.Optional; |
27 | | -import java.util.concurrent.Callable; |
28 | 24 | import java.util.concurrent.ForkJoinPool; |
29 | | -import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory; |
30 | 25 | import java.util.concurrent.ForkJoinTask; |
31 | 26 | import java.util.concurrent.ForkJoinWorkerThread; |
32 | 27 | import java.util.concurrent.Future; |
33 | 28 | import java.util.concurrent.TimeUnit; |
34 | | -import java.util.function.Function; |
35 | | -import java.util.function.Predicate; |
36 | 29 |
|
37 | 30 | import org.apiguardian.api.API; |
38 | 31 | import org.jspecify.annotations.Nullable; |
39 | 32 | import org.junit.platform.commons.JUnitException; |
40 | | -import org.junit.platform.commons.function.Try; |
41 | 33 | import org.junit.platform.commons.logging.LoggerFactory; |
42 | 34 | import org.junit.platform.commons.util.ExceptionUtils; |
43 | 35 | import org.junit.platform.engine.ConfigurationParameters; |
@@ -97,33 +89,14 @@ private static ParallelExecutionConfiguration createConfiguration(ConfigurationP |
97 | 89 | } |
98 | 90 |
|
99 | 91 | private ForkJoinPool createForkJoinPool(ParallelExecutionConfiguration configuration) { |
100 | | - ForkJoinWorkerThreadFactory threadFactory = new WorkerThreadFactory(); |
101 | | - // Try to use constructor available in Java >= 9 |
102 | | - Callable<ForkJoinPool> constructorInvocation = sinceJava9Constructor() // |
103 | | - .map(sinceJava9ConstructorInvocation(configuration, threadFactory)) |
104 | | - // Fallback for Java 8 |
105 | | - .orElse(sinceJava7ConstructorInvocation(configuration, threadFactory)); |
106 | | - return Try.call(constructorInvocation) // |
107 | | - .getOrThrow(cause -> new JUnitException("Failed to create ForkJoinPool", cause)); |
108 | | - } |
109 | | - |
110 | | - private static Optional<Constructor<ForkJoinPool>> sinceJava9Constructor() { |
111 | | - return Try.call(() -> ForkJoinPool.class.getDeclaredConstructor(int.class, ForkJoinWorkerThreadFactory.class, |
112 | | - UncaughtExceptionHandler.class, boolean.class, int.class, int.class, int.class, Predicate.class, long.class, |
113 | | - TimeUnit.class)) // |
114 | | - .toOptional(); |
115 | | - } |
116 | | - |
117 | | - private static Function<Constructor<ForkJoinPool>, Callable<ForkJoinPool>> sinceJava9ConstructorInvocation( |
118 | | - ParallelExecutionConfiguration configuration, ForkJoinWorkerThreadFactory threadFactory) { |
119 | | - return constructor -> () -> constructor.newInstance(configuration.getParallelism(), threadFactory, null, false, |
120 | | - configuration.getCorePoolSize(), configuration.getMaxPoolSize(), configuration.getMinimumRunnable(), |
121 | | - configuration.getSaturatePredicate(), configuration.getKeepAliveSeconds(), TimeUnit.SECONDS); |
122 | | - } |
123 | | - |
124 | | - private static Callable<ForkJoinPool> sinceJava7ConstructorInvocation(ParallelExecutionConfiguration configuration, |
125 | | - ForkJoinWorkerThreadFactory threadFactory) { |
126 | | - return () -> new ForkJoinPool(configuration.getParallelism(), threadFactory, null, false); |
| 92 | + try { |
| 93 | + return new ForkJoinPool(configuration.getParallelism(), new WorkerThreadFactory(), null, false, |
| 94 | + configuration.getCorePoolSize(), configuration.getMaxPoolSize(), configuration.getMinimumRunnable(), |
| 95 | + configuration.getSaturatePredicate(), configuration.getKeepAliveSeconds(), TimeUnit.SECONDS); |
| 96 | + } |
| 97 | + catch (Exception cause) { |
| 98 | + throw new JUnitException("Failed to create ForkJoinPool", cause); |
| 99 | + } |
127 | 100 | } |
128 | 101 |
|
129 | 102 | @Override |
|
0 commit comments