test/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java

Thu, 04 Dec 2014 15:20:09 -0800

author
iklam
date
Thu, 04 Dec 2014 15:20:09 -0800
changeset 7414
0558eb13dcf3
permissions
-rw-r--r--

8066670: PrintSharedArchiveAndExit does not exit the VM when the archive is invalid
Summary: in FileMapInfo::fail_continue do not set UseSharedSpaces = false
Reviewed-by: dholmes, ccheung

iklam@7414 1 /*
iklam@7414 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
iklam@7414 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
iklam@7414 4 *
iklam@7414 5 * This code is free software; you can redistribute it and/or modify it
iklam@7414 6 * under the terms of the GNU General Public License version 2 only, as
iklam@7414 7 * published by the Free Software Foundation.
iklam@7414 8 *
iklam@7414 9 * This code is distributed in the hope that it will be useful, but WITHOUT
iklam@7414 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
iklam@7414 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
iklam@7414 12 * version 2 for more details (a copy is included in the LICENSE file that
iklam@7414 13 * accompanied this code).
iklam@7414 14 *
iklam@7414 15 * You should have received a copy of the GNU General Public License version
iklam@7414 16 * 2 along with this work; if not, write to the Free Software Foundation,
iklam@7414 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
iklam@7414 18 *
iklam@7414 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
iklam@7414 20 * or visit www.oracle.com if you need additional information or have any
iklam@7414 21 * questions.
iklam@7414 22 */
iklam@7414 23
iklam@7414 24 /*
iklam@7414 25 * @test
iklam@7414 26 * @bug 8066670
iklam@7414 27 * @summary Testing -XX:+PrintSharedArchiveAndExit option
iklam@7414 28 * @library /testlibrary
iklam@7414 29 */
iklam@7414 30
iklam@7414 31 import com.oracle.java.testlibrary.*;
iklam@7414 32
iklam@7414 33 public class PrintSharedArchiveAndExit {
iklam@7414 34 public static void main(String[] args) throws Exception {
iklam@7414 35 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
iklam@7414 36 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa", "-Xshare:dump");
iklam@7414 37 OutputAnalyzer output = new OutputAnalyzer(pb.start());
iklam@7414 38 try {
iklam@7414 39 output.shouldContain("Loading classes to share");
iklam@7414 40 output.shouldHaveExitValue(0);
iklam@7414 41
iklam@7414 42 // (1) With a valid archive
iklam@7414 43 pb = ProcessTools.createJavaProcessBuilder(
iklam@7414 44 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa",
iklam@7414 45 "-XX:+PrintSharedArchiveAndExit", "-version");
iklam@7414 46 output = new OutputAnalyzer(pb.start());
iklam@7414 47 output.shouldContain("archive is valid");
iklam@7414 48 output.shouldNotContain("java version"); // Should not print JVM version
iklam@7414 49 output.shouldHaveExitValue(0); // Should report success in error code.
iklam@7414 50
iklam@7414 51 pb = ProcessTools.createJavaProcessBuilder(
iklam@7414 52 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa",
iklam@7414 53 "-XX:+PrintSharedArchiveAndExit");
iklam@7414 54 output = new OutputAnalyzer(pb.start());
iklam@7414 55 output.shouldContain("archive is valid");
iklam@7414 56 output.shouldNotContain("Usage:"); // Should not print JVM help message
iklam@7414 57 output.shouldHaveExitValue(0); // Should report success in error code.
iklam@7414 58
iklam@7414 59 // (2) With an invalid archive (boot class path has been prepended)
iklam@7414 60 pb = ProcessTools.createJavaProcessBuilder(
iklam@7414 61 "-Xbootclasspath/p:foo.jar",
iklam@7414 62 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa",
iklam@7414 63 "-XX:+PrintSharedArchiveAndExit", "-version");
iklam@7414 64 output = new OutputAnalyzer(pb.start());
iklam@7414 65 output.shouldContain("archive is invalid");
iklam@7414 66 output.shouldNotContain("java version"); // Should not print JVM version
iklam@7414 67 output.shouldHaveExitValue(1); // Should report failure in error code.
iklam@7414 68
iklam@7414 69 pb = ProcessTools.createJavaProcessBuilder(
iklam@7414 70 "-Xbootclasspath/p:foo.jar",
iklam@7414 71 "-XX:+UnlockDiagnosticVMOptions", "-XX:SharedArchiveFile=./sample.jsa",
iklam@7414 72 "-XX:+PrintSharedArchiveAndExit");
iklam@7414 73 output = new OutputAnalyzer(pb.start());
iklam@7414 74 output.shouldContain("archive is invalid");
iklam@7414 75 output.shouldNotContain("Usage:"); // Should not print JVM help message
iklam@7414 76 output.shouldHaveExitValue(1); // Should report failure in error code.
iklam@7414 77 } catch (RuntimeException e) {
iklam@7414 78 e.printStackTrace();
iklam@7414 79 output.shouldContain("Unable to use shared archive");
iklam@7414 80 output.shouldHaveExitValue(1);
iklam@7414 81 }
iklam@7414 82 }
iklam@7414 83 }

mercurial