Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8341261: Tests assume UnlockExperimentalVMOptions is disabled by default #1025

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
* @test
* @library /test/lib /
* @requires vm.flagless
* @requires ! vm.opt.final.UnlockExperimentalVMOptions
* @requires vm.compMode != "Xint"
* @run driver compiler.blackhole.BlackholeExperimentalUnlockTest
*/
Expand Down
84 changes: 60 additions & 24 deletions test/hotspot/jtreg/runtime/CommandLine/VMOptionWarning.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,37 @@
*/

/*
* @test
* @test VMOptionWarningExperimental
* @bug 8027314
* @summary Warn if diagnostic or experimental vm option is used and -XX:+UnlockDiagnosticVMOptions or -XX:+UnlockExperimentalVMOptions, respectively, isn't specified. Warn if develop or notproduct vm option is used with product version of VM.
* @summary Warn if experimental vm option is used and -XX:+UnlockExperimentalVMOptions isn't specified.
* @requires vm.flagless
* @requires ! vm.opt.final.UnlockExperimentalVMOptions
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
* @run driver VMOptionWarning
* @run driver VMOptionWarning Experimental
*/

/* @test VMOptionWarningDiagnostic
* @bug 8027314
* @summary Warn if diagnostic vm option is used and -XX:+UnlockDiagnosticVMOptions isn't specified.
* @requires vm.flagless
* @requires ! vm.debug
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
* @run driver VMOptionWarning Diagnostic
*/

/* @test VMOptionWarningDevelop
* @bug 8027314
* @summary Warn if develop or notproduct vm option is used with product version of VM.
* @requires vm.flagless
* @requires ! vm.debug
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
* @run driver VMOptionWarning Develop
*/

import jdk.test.lib.process.ProcessTools;
Expand All @@ -38,29 +61,42 @@

public class VMOptionWarning {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+AlwaysSafeConstructors", "-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'AlwaysSafeConstructors' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.");

if (Platform.isDebugBuild()) {
System.out.println("Skip the rest of the tests on debug builds since diagnostic, develop, and notproduct options are available on debug builds.");
return;
if (args.length != 1) {
throw new RuntimeException("wrong number of args: " + args.length);
}

pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+PrintInlining", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'PrintInlining' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions.");
ProcessBuilder pb;
OutputAnalyzer output;
switch (args[0]) {
case "Experimental": {
pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+AlwaysSafeConstructors", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'AlwaysSafeConstructors' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.");
break;
}
case "Diagnostic": {
pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+PrintInlining", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'PrintInlining' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions.");
break;
}
case "Develop": {
pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+VerifyStack", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'VerifyStack' is develop and is available only in debug version of VM.");

pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+VerifyStack", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'VerifyStack' is develop and is available only in debug version of VM.");

pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+CheckCompressedOops", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'CheckCompressedOops' is notproduct and is available only in debug version of VM.");
pb = ProcessTools.createLimitedTestJavaProcessBuilder("-XX:+CheckCompressedOops", "-version");
output = new OutputAnalyzer(pb.start());
output.shouldNotHaveExitValue(0);
output.shouldContain("Error: VM option 'CheckCompressedOops' is notproduct and is available only in debug version of VM.");
break;
}
default: {
throw new RuntimeException("Invalid argument: " + args[0]);
}
}
}
}
1 change: 1 addition & 0 deletions test/jtreg-ext/requires/VMProps.java
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ protected void vmOptFinalFlags(SafeMap map) {
vmOptFinalFlag(map, "CriticalJNINatives");
vmOptFinalFlag(map, "EnableJVMCI");
vmOptFinalFlag(map, "EliminateAllocations");
vmOptFinalFlag(map, "UnlockExperimentalVMOptions");
vmOptFinalFlag(map, "UseCompressedOops");
vmOptFinalFlag(map, "UseVectorizedMismatchIntrinsic");
vmOptFinalFlag(map, "UseVtableBasedCHA");
Expand Down