1/*
2 * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
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/*
25 * @test
26 * @requires vm.aot
27 * @library /test/lib /testlibrary /
28 * @modules java.base/jdk.internal.misc
29 * @build compiler.aot.cli.SingleAOTOptionTest
30 *        compiler.aot.AotCompiler
31 * @run driver compiler.aot.AotCompiler -libname libSingleAOTOptionTest.so
32 *      -class compiler.aot.HelloWorldPrinter
33 *      -compile compiler.aot.HelloWorldPrinter.print()V
34 *      -extraopt -XX:+UseCompressedOops
35 * @run driver compiler.aot.cli.SingleAOTOptionTest -XX:+UseCompressedOops
36 *      -XX:AOTLibrary=./libSingleAOTOptionTest.so
37 * @run main compiler.aot.cli.SingleAOTOptionTest
38 *      -XX:+UseCompressedOops -XX:+UseAOT
39 * @run driver compiler.aot.AotCompiler -libname libSingleAOTOptionTest.so
40 *      -class compiler.aot.HelloWorldPrinter
41 *      -compile compiler.aot.HelloWorldPrinter.print()V
42 *      -extraopt -XX:-UseCompressedOops
43 * @run driver compiler.aot.cli.SingleAOTOptionTest -XX:-UseCompressedOops
44 *      -XX:AOTLibrary=./libSingleAOTOptionTest.so
45 * @run driver compiler.aot.cli.SingleAOTOptionTest
46 *      -XX:-UseCompressedOops -XX:+UseAOT
47 * @summary check if specifying only one aot option handled properly
48 */
49
50package compiler.aot.cli;
51
52import compiler.aot.HelloWorldPrinter;
53import jdk.test.lib.process.ExitCode;
54import jdk.test.lib.cli.CommandLineOptionTest;
55
56public class SingleAOTOptionTest {
57    private static final String[] EXPECTED_MESSAGES = new String[] {
58        HelloWorldPrinter.MESSAGE
59    };
60    private static final String[] UNEXPECTED_MESSAGES = null;
61
62    public static void main(String args[]) {
63        if (args.length == 2) {
64            new SingleAOTOptionTest().runTest(args[0], args[1]);
65        } else {
66            throw new Error("Test expects 2 parameters");
67        }
68    }
69
70    private void runTest(String arg1, String arg2) {
71        try {
72            String exitCodeErrorMessage = String.format("Unexpected exit code "
73                    + "using %s and %s", arg1, arg2);
74            String outputErrorMessage = String.format("Unexpected output using"
75                    + " %s and %s", arg1, arg2);
76            boolean addTestVMOptions = true;
77            CommandLineOptionTest.verifyJVMStartup(EXPECTED_MESSAGES,
78                    UNEXPECTED_MESSAGES, exitCodeErrorMessage,
79                    outputErrorMessage, ExitCode.OK, addTestVMOptions, arg1,
80                    arg2, HelloWorldPrinter.class.getName());
81        } catch (Throwable t) {
82            throw new Error("Problems executing test: " + t, t);
83        }
84    }
85
86}
87