40 import com.oracle.java.testlibrary.cli.CommandLineOptionTest; 41 import com.oracle.java.testlibrary.cli.predicate.AndPredicate; 42 import com.oracle.java.testlibrary.cli.predicate.NotPredicate; 43 import rtm.predicate.SupportedCPU; 44 import rtm.predicate.SupportedVM; 45 46 public class TestUseRTMForStackLocksOptionOnUnsupportedConfig 47 extends RTMGenericCommandLineOptionTest { 48 private static final String DEFAULT_VALUE = "false"; 49 50 private TestUseRTMForStackLocksOptionOnUnsupportedConfig() { 51 super(new NotPredicate(new AndPredicate(new SupportedCPU(), 52 new SupportedVM())), 53 "UseRTMForStackLocks", true, true, 54 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 55 "true"); 56 } 57 58 @Override 59 protected void runX86SupportedVMTestCases() throws Throwable { 60 // verify that option is experimental 61 CommandLineOptionTest.verifySameJVMStartup( 62 new String[]{ experimentalOptionError }, 63 null, ExitCode.FAIL, prepareOptionValue("true")); 64 65 CommandLineOptionTest.verifySameJVMStartup( 66 new String[]{ experimentalOptionError }, 67 null, ExitCode.FAIL, prepareOptionValue("false")); 68 69 // verify that if we turn it on, then VM output will contain 70 // warning saying that this option could be turned on only 71 // when we use rtm locking 72 CommandLineOptionTest.verifySameJVMStartup( 73 new String[]{ 74 RTMGenericCommandLineOptionTest.RTM_FOR_STACK_LOCKS_WARNING 75 }, 76 null, ExitCode.OK, 77 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 78 prepareOptionValue("true") 79 ); 80 // verify that options is turned off by default 81 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, 82 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 83 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS); 84 // verify that it could not be turned on without rtm locking 85 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, 86 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 87 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 88 prepareOptionValue("true")); 89 } 90 91 public static void main(String args[]) throws Throwable { 92 new TestUseRTMForStackLocksOptionOnUnsupportedConfig().test(); 93 } 94 } | 40 import com.oracle.java.testlibrary.cli.CommandLineOptionTest; 41 import com.oracle.java.testlibrary.cli.predicate.AndPredicate; 42 import com.oracle.java.testlibrary.cli.predicate.NotPredicate; 43 import rtm.predicate.SupportedCPU; 44 import rtm.predicate.SupportedVM; 45 46 public class TestUseRTMForStackLocksOptionOnUnsupportedConfig 47 extends RTMGenericCommandLineOptionTest { 48 private static final String DEFAULT_VALUE = "false"; 49 50 private TestUseRTMForStackLocksOptionOnUnsupportedConfig() { 51 super(new NotPredicate(new AndPredicate(new SupportedCPU(), 52 new SupportedVM())), 53 "UseRTMForStackLocks", true, true, 54 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 55 "true"); 56 } 57 58 @Override 59 protected void runX86SupportedVMTestCases() throws Throwable { 60 String shouldFailMessage = String.format("VM option '%s' is " 61 + "experimental%nJVM startup should fail without " 62 + "-XX:+UnlockExperimentalVMOptions flag", optionName); 63 64 // verify that option is experimental 65 CommandLineOptionTest.verifySameJVMStartup( 66 new String[] { experimentalOptionError }, null, 67 shouldFailMessage, shouldFailMessage + "%nError message " 68 + "should be shown", ExitCode.FAIL, 69 prepareOptionValue("true")); 70 71 CommandLineOptionTest.verifySameJVMStartup( 72 new String[]{ experimentalOptionError }, null, 73 shouldFailMessage, shouldFailMessage + "%nError message " 74 + "should be shown", ExitCode.FAIL, 75 prepareOptionValue("false")); 76 77 String shouldPassMessage = String.format("VM option '%s' is " 78 + " experimental%nJVM startup should pass with " 79 + "-XX:+UnlockExperimentalVMOptions flag", optionName); 80 // verify that if we turn it on, then VM output will contain 81 // warning saying that this option could be turned on only 82 // when we use rtm locking 83 CommandLineOptionTest.verifySameJVMStartup( 84 new String[]{ 85 RTMGenericCommandLineOptionTest.RTM_FOR_STACK_LOCKS_WARNING 86 }, null, shouldPassMessage, "There should be warning when try " 87 + "to use rtm for stack lock, but not using rtm locking", 88 ExitCode.OK, 89 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 90 prepareOptionValue("true") 91 ); 92 // verify that options is turned off by default 93 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, 94 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 95 String.format("Default value of option '%s' should be '%s'", 96 optionName, DEFAULT_VALUE), 97 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS); 98 // verify that it could not be turned on without rtm locking 99 CommandLineOptionTest.verifyOptionValueForSameVM(optionName, 100 TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE, 101 String.format("Value of '%s' shouldn't able to be set to " 102 + "'true' without setting -XX:+UseRTMLocking flag", 103 optionName), 104 CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 105 prepareOptionValue("true")); 106 } 107 108 public static void main(String args[]) throws Throwable { 109 new TestUseRTMForStackLocksOptionOnUnsupportedConfig().test(); 110 } 111 } |