8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package compiler.aot.cli.jaotc;
25
26 import java.io.File;
27 import java.io.IOException;
28 import jdk.test.lib.process.ExitCode;
29 import jdk.test.lib.JDKToolLauncher;
30 import jdk.test.lib.Utils;
31 import jdk.test.lib.cli.CommandLineOptionTest;
32 import jdk.test.lib.process.OutputAnalyzer;
33
34 public class JaotcTestHelper {
35 public static final String DEFAULT_LIB_PATH = "./unnamed.so";
36 public static final String DEFAULT_LIBRARY_LOAD_MESSAGE = "loaded " + DEFAULT_LIB_PATH
37 + " aot library";
38 private static final String ENABLE_AOT = "-XX:+UseAOT";
39 private static final String AOT_LIBRARY = "-XX:AOTLibrary=" + DEFAULT_LIB_PATH;
40 private static final String PRINT_AOT = "-XX:+PrintAOT";
41
42 public static OutputAnalyzer compileLibrary(String... args) {
43 JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jaotc");
44 for (String vmOpt : Utils.getTestJavaOpts()) {
45 launcher.addVMArg(vmOpt);
46 }
47 launcher.addToolArg("--compile-with-assertions");
48 for (String arg : args) {
49 launcher.addToolArg(arg);
50 }
51 String[] cmd = launcher.getCommand();
52 try {
53 return new OutputAnalyzer(new ProcessBuilder(cmd).start());
54 } catch (IOException e) {
55 throw new Error("Can't start test process: " + e, e);
56 }
57 }
58
59 public static void checkLibraryUsage(String classToRun) {
60 checkLibraryUsage(classToRun, new String[]{DEFAULT_LIBRARY_LOAD_MESSAGE}, null);
61 }
62
63 public static void checkLibraryUsage(String classToRun, String[] expectedOutput,
64 String[] unexpectedOutput) {
65 try {
66 CommandLineOptionTest.verifyJVMStartup(expectedOutput, unexpectedOutput,
67 "Unexpected exit code", "Unexpected output", ExitCode.OK,
68 /* addTestVMOpts */ true, ENABLE_AOT, AOT_LIBRARY, PRINT_AOT, classToRun);
69 } catch (Throwable t) {
70 throw new Error("Library usage verification failed: " + t, t);
71 }
72 }
73
74 public static String getClassAotCompilationFilename(Class<?> classToCompile) {
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package compiler.aot.cli.jaotc;
25
26 import java.io.File;
27 import java.io.IOException;
28
29 import compiler.aot.AotCompiler;
30 import jdk.test.lib.process.ExitCode;
31 import jdk.test.lib.JDKToolLauncher;
32 import jdk.test.lib.Utils;
33 import jdk.test.lib.cli.CommandLineOptionTest;
34 import jdk.test.lib.process.OutputAnalyzer;
35 import jdk.test.lib.process.ProcessTools;
36
37 public class JaotcTestHelper {
38 public static final String DEFAULT_LIB_PATH = "./unnamed.so";
39 public static final String DEFAULT_LIBRARY_LOAD_MESSAGE = "loaded " + DEFAULT_LIB_PATH
40 + " aot library";
41 private static final String ENABLE_AOT = "-XX:+UseAOT";
42 private static final String AOT_LIBRARY = "-XX:AOTLibrary=" + DEFAULT_LIB_PATH;
43 private static final String PRINT_AOT = "-XX:+PrintAOT";
44
45 public static OutputAnalyzer compileLibrary(String... args) {
46 JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jaotc");
47 for (String vmOpt : Utils.getTestJavaOpts()) {
48 launcher.addVMArg(vmOpt);
49 }
50 launcher.addToolArg("--compile-with-assertions");
51 for (String arg : args) {
52 launcher.addToolArg(arg);
53 }
54 String linker = AotCompiler.resolveLinker();
55 if (linker != null) {
56 launcher.addToolArg("--linker-path");
57 launcher.addToolArg(linker);
58 }
59 String[] cmd = launcher.getCommand();
60 try {
61 return ProcessTools.executeCommand(cmd);
62 } catch (Throwable e) {
63 throw new Error("Can't start test process: " + e, e);
64 }
65 }
66
67 public static void checkLibraryUsage(String classToRun) {
68 checkLibraryUsage(classToRun, new String[]{DEFAULT_LIBRARY_LOAD_MESSAGE}, null);
69 }
70
71 public static void checkLibraryUsage(String classToRun, String[] expectedOutput,
72 String[] unexpectedOutput) {
73 try {
74 CommandLineOptionTest.verifyJVMStartup(expectedOutput, unexpectedOutput,
75 "Unexpected exit code", "Unexpected output", ExitCode.OK,
76 /* addTestVMOpts */ true, ENABLE_AOT, AOT_LIBRARY, PRINT_AOT, classToRun);
77 } catch (Throwable t) {
78 throw new Error("Library usage verification failed: " + t, t);
79 }
80 }
81
82 public static String getClassAotCompilationFilename(Class<?> classToCompile) {
|