< prev index next >
test/compiler/compilercontrol/jcmd/StressAddMultiThreadedTest.java
Print this page
rev 10239 : imported patch StressAdd
*** 25,49 ****
* @test
* @bug 8137167
* @summary Tests jcmd to be able to add a lot of huge directive files with
* parallel executed jcmds until timeout has reached
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
- * @ignore 8148563
* @build compiler.compilercontrol.jcmd.StressAddMultiThreadedTest
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
* compiler.testlibrary.CompilerUtils
* compiler.compilercontrol.share.actions.*
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
! * @run main/othervm/timeout=360 compiler.compilercontrol.jcmd.StressAddMultiThreadedTest
*/
package compiler.compilercontrol.jcmd;
import jdk.test.lib.dcmd.PidJcmdExecutor;
- import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
--- 25,47 ----
* @test
* @bug 8137167
* @summary Tests jcmd to be able to add a lot of huge directive files with
* parallel executed jcmds until timeout has reached
* @library /testlibrary /test/lib /compiler/testlibrary ../share /
* @build compiler.compilercontrol.jcmd.StressAddMultiThreadedTest
* pool.sub.* pool.subpack.* sun.hotspot.WhiteBox
* compiler.testlibrary.CompilerUtils
* compiler.compilercontrol.share.actions.*
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
! * @run main/othervm/timeout=360 -Xmixed compiler.compilercontrol.jcmd.StressAddMultiThreadedTest
*/
package compiler.compilercontrol.jcmd;
import jdk.test.lib.dcmd.PidJcmdExecutor;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
*** 52,93 ****
private static final int THREADS;
private final BlockingQueue<Runnable> queue;
private final ExecutorService executor;
static {
! THREADS = Runtime.getRuntime().availableProcessors()
! * Integer.getInteger("compiler.compilercontrol.jcmd" +
! ".StressAddMultiThreadedTest.threadFactor", 10);
}
public StressAddMultiThreadedTest() {
queue = new ArrayBlockingQueue<>(THREADS);
executor = new ThreadPoolExecutor(THREADS, THREADS, 100,
TimeUnit.MILLISECONDS, queue,
new ThreadPoolExecutor.CallerRunsPolicy());
}
public static void main(String[] args) {
new StressAddMultiThreadedTest().test();
}
@Override
! protected boolean makeConnection(int pid, List<String> commands) {
! commands.forEach(command -> {
if (!executor.isShutdown()) {
executor.submit(() -> new PidJcmdExecutor(String.valueOf(pid))
! .execute(command));
}
- });
return !executor.isShutdown();
}
@Override
protected void finish() {
executor.shutdown();
try {
! executor.awaitTermination(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
throw new Error("Interrupted while awaiting for termination: " + e,
e);
}
executor.shutdownNow();
--- 50,90 ----
private static final int THREADS;
private final BlockingQueue<Runnable> queue;
private final ExecutorService executor;
static {
! THREADS = (int) (Math.log(Runtime.getRuntime().availableProcessors()
! * Integer.getInteger("compiler.compilercontrol.jcmd"
! + ".StressAddMultiThreadedTest.threadFactor", 10)));
}
public StressAddMultiThreadedTest() {
queue = new ArrayBlockingQueue<>(THREADS);
executor = new ThreadPoolExecutor(THREADS, THREADS, 100,
TimeUnit.MILLISECONDS, queue,
new ThreadPoolExecutor.CallerRunsPolicy());
+ System.out.println("INFO: stress threads: " + THREADS);
}
public static void main(String[] args) {
new StressAddMultiThreadedTest().test();
}
@Override
! protected boolean makeConnection(int pid) {
if (!executor.isShutdown()) {
executor.submit(() -> new PidJcmdExecutor(String.valueOf(pid))
! .execute(nextCommand()));
}
return !executor.isShutdown();
}
@Override
protected void finish() {
executor.shutdown();
try {
! executor.awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
throw new Error("Interrupted while awaiting for termination: " + e,
e);
}
executor.shutdownNow();
< prev index next >