test/tools/launcher/ChangeDataModel.java
Print this page
*** 21,65 ****
* questions.
*/
/**
* @test
! * @bug 4894330 4810347 6277269
* @compile -XDignore.symbol.file ChangeDataModel.java
* @run main ChangeDataModel
* @summary Verify -d32 and -d64 options are accepted(rejected) on all platforms
* @author Joseph D. Darcy, ksrini
*/
import java.io.File;
public class ChangeDataModel extends TestHelper {
private static final File TestJar = new File("test" + JAR_FILE_EXT);
private static final String OPT_PREFIX = "ARCH_OPT:";
! public static void main(String... args) throws Exception {
String[] code = {
" public static void main(String argv[]) {",
" System.out.println(\"" + OPT_PREFIX + "-d\" + System.getProperty(\"sun.arch.data.model\", \"none\"));",
! " }",
! };
createJar(TestJar, code);
-
- // verify if data model flag for default data model is accepted
- if (is32Bit) {
- checkAcceptance(javaCmd, "-d32");
- } else if (is64Bit) {
- checkAcceptance(javaCmd, "-d64");
- } else {
- throw new Error("unsupported data model");
}
! // Negative tests: ensure that non-dual mode systems reject the
! // complementary (other) data model
if (is32Bit) {
checkRejection(javaCmd, "-d64");
} else if (is64Bit) {
checkRejection(javaCmd, "-d32");
} else {
throw new Error("unsupported data model");
}
}
--- 21,67 ----
* questions.
*/
/**
* @test
! * @bug 4894330 4810347 6277269 8029388
* @compile -XDignore.symbol.file ChangeDataModel.java
* @run main ChangeDataModel
* @summary Verify -d32 and -d64 options are accepted(rejected) on all platforms
* @author Joseph D. Darcy, ksrini
*/
import java.io.File;
+ import java.util.ArrayList;
+ import java.util.List;
public class ChangeDataModel extends TestHelper {
private static final File TestJar = new File("test" + JAR_FILE_EXT);
+ private static final String OptionName = "Args";
+ private static final File TestOptionJar = new File(OptionName + JAR_FILE_EXT);
private static final String OPT_PREFIX = "ARCH_OPT:";
! static void createTestJar() throws Exception {
String[] code = {
" public static void main(String argv[]) {",
" System.out.println(\"" + OPT_PREFIX + "-d\" + System.getProperty(\"sun.arch.data.model\", \"none\"));",
! " }",};
createJar(TestJar, code);
}
+ public static void main(String... args) throws Exception {
+ createTestJar();
+ createOptionsJar();
! // verify if data model flag for default data model is accepted, also
! // verify if the complimentary data model is rejected.
if (is32Bit) {
+ checkAcceptance(javaCmd, "-d32");
checkRejection(javaCmd, "-d64");
+ checkOption(javaCmd, "-d64");
} else if (is64Bit) {
+ checkAcceptance(javaCmd, "-d64");
checkRejection(javaCmd, "-d32");
+ checkOption(javaCmd, "-d32");
} else {
throw new Error("unsupported data model");
}
}
*** 79,84 ****
--- 81,126 ----
System.out.println(tr);
String message = "Data model flag " + dmodel + " was accepted.";
throw new RuntimeException(message);
}
}
+
+ static void checkOption(String cmd, String dmodel) throws Exception {
+ TestResult tr = doExec(cmd, "-jar", TestOptionJar.getAbsolutePath(), dmodel);
+ verifyOption(tr, dmodel);
+
+ tr = doExec(cmd, "-cp", ".", OptionName, dmodel);
+ verifyOption(tr, dmodel);
+ }
+
+ static void verifyOption(TestResult tr, String dmodel) {
+ if (!tr.contains(OPT_PREFIX + dmodel)) {
+ System.out.println(tr);
+ String message = "app argument: " + dmodel + " not found.";
+ throw new RuntimeException(message);
+ }
+ if (!tr.isOK()) {
+ System.out.println(tr);
+ String message = "app argument: " + dmodel + " interpreted ?";
+ throw new RuntimeException(message);
+ }
+ }
+
+ static void createOptionsJar() throws Exception {
+ List<String> code = new ArrayList<>();
+ code.add("public class Args {");
+ code.add(" public static void main(String argv[]) {");
+ code.add(" for (String x : argv)");
+ code.add(" System.out.println(\"" + OPT_PREFIX + "\" + x);");
+ code.add(" }");
+ code.add("}");
+ File optionsJava = new File(OptionName + JAVA_FILE_EXT);
+ createFile(optionsJava, code);
+ File optionsClass = new File(OptionName + CLASS_FILE_EXT);
+
+ compile(optionsJava.getName());
+ createJar("cvfe",
+ TestOptionJar.getName(),
+ OptionName,
+ optionsClass.getName());
+ }
}