28
29 /**
30 * Generic test case for SHA-related options targeted to X86 CPUs that don't
31 * support SHA-related instructions.
32 */
33 public class GenericTestCaseForUnsupportedX86CPU
34 extends SHAOptionsBase.TestCase {
35 public GenericTestCaseForUnsupportedX86CPU(String optionName) {
36 super(optionName, new OrPredicate(Platform::isX64, Platform::isX86));
37 }
38
39 @Override
40 protected void verifyWarnings() throws Throwable {
41 String shouldPassMessage = String.format("JVM should start with '-XX:+"
42 + "%s' flag, but output should contain warning.", optionName);
43 // Verify that when the tested option is explicitly enabled, then
44 // a warning will occur in VM output.
45 CommandLineOptionTest.verifySameJVMStartup(new String[] {
46 SHAOptionsBase.getWarningForUnsupportedCPU(optionName)
47 }, null, shouldPassMessage, shouldPassMessage, ExitCode.OK,
48 CommandLineOptionTest.prepareBooleanFlag(optionName, true));
49
50 shouldPassMessage = String.format("JVM should start with '-XX:-%s' "
51 + "flag without any warnings", optionName);
52 // Verify that the tested option could be explicitly disabled without
53 // a warning.
54 CommandLineOptionTest.verifySameJVMStartup(null, new String[] {
55 SHAOptionsBase.getWarningForUnsupportedCPU(optionName)
56 }, shouldPassMessage, shouldPassMessage, ExitCode.OK,
57 CommandLineOptionTest.prepareBooleanFlag(optionName, false));
58 }
59
60 @Override
61 protected void verifyOptionValues() throws Throwable {
62 // Verify that the tested option is disabled by default.
63 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
64 String.format("Option '%s' should be disabled by default",
65 optionName));
66
67 // Verify that it is not possible to explicitly enable the option.
68 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
69 String.format("Option '%s' should be off on unsupported "
70 + "X86CPU even if set to true directly", optionName),
71 CommandLineOptionTest.prepareBooleanFlag(optionName, true));
72
73 // Verify that the tested option is disabled even if +UseSHA was passed
74 // to JVM.
75 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
76 String.format("Option '%s' should be off on unsupported "
77 + "X86CPU even if %s flag set to JVM",
78 optionName, CommandLineOptionTest.prepareBooleanFlag(
79 SHAOptionsBase.USE_SHA_OPTION, true)),
80 CommandLineOptionTest.prepareBooleanFlag(
81 SHAOptionsBase.USE_SHA_OPTION, true));
82 }
83 }
|
28
29 /**
30 * Generic test case for SHA-related options targeted to X86 CPUs that don't
31 * support SHA-related instructions.
32 */
33 public class GenericTestCaseForUnsupportedX86CPU
34 extends SHAOptionsBase.TestCase {
35 public GenericTestCaseForUnsupportedX86CPU(String optionName) {
36 super(optionName, new OrPredicate(Platform::isX64, Platform::isX86));
37 }
38
39 @Override
40 protected void verifyWarnings() throws Throwable {
41 String shouldPassMessage = String.format("JVM should start with '-XX:+"
42 + "%s' flag, but output should contain warning.", optionName);
43 // Verify that when the tested option is explicitly enabled, then
44 // a warning will occur in VM output.
45 CommandLineOptionTest.verifySameJVMStartup(new String[] {
46 SHAOptionsBase.getWarningForUnsupportedCPU(optionName)
47 }, null, shouldPassMessage, shouldPassMessage, ExitCode.OK,
48 SHAOptionsBase.UNLOCK_DIAGNOSTIC_VM_OPTIONS,
49 CommandLineOptionTest.prepareBooleanFlag(optionName, true));
50
51 shouldPassMessage = String.format("JVM should start with '-XX:-%s' "
52 + "flag without any warnings", optionName);
53 // Verify that the tested option could be explicitly disabled without
54 // a warning.
55 CommandLineOptionTest.verifySameJVMStartup(null, new String[] {
56 SHAOptionsBase.getWarningForUnsupportedCPU(optionName)
57 }, shouldPassMessage, shouldPassMessage, ExitCode.OK,
58 SHAOptionsBase.UNLOCK_DIAGNOSTIC_VM_OPTIONS,
59 CommandLineOptionTest.prepareBooleanFlag(optionName, false));
60 }
61
62 @Override
63 protected void verifyOptionValues() throws Throwable {
64 // Verify that the tested option is disabled by default.
65 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
66 String.format("Option '%s' should be disabled by default",
67 optionName),
68 SHAOptionsBase.UNLOCK_DIAGNOSTIC_VM_OPTIONS);
69
70 // Verify that it is not possible to explicitly enable the option.
71 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
72 String.format("Option '%s' should be off on unsupported "
73 + "X86CPU even if set to true directly", optionName),
74 SHAOptionsBase.UNLOCK_DIAGNOSTIC_VM_OPTIONS,
75 CommandLineOptionTest.prepareBooleanFlag(optionName, true));
76
77 // Verify that the tested option is disabled even if +UseSHA was passed
78 // to JVM.
79 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, "false",
80 String.format("Option '%s' should be off on unsupported "
81 + "X86CPU even if %s flag set to JVM",
82 optionName, CommandLineOptionTest.prepareBooleanFlag(
83 SHAOptionsBase.USE_SHA_OPTION, true)),
84 SHAOptionsBase.UNLOCK_DIAGNOSTIC_VM_OPTIONS,
85 CommandLineOptionTest.prepareBooleanFlag(
86 SHAOptionsBase.USE_SHA_OPTION, true));
87 }
88 }
|