|
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