hotspot/test/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java
author minqi
Wed, 15 Apr 2015 17:34:28 -0700
changeset 30240 a7ba42fa1df6
parent 30146 a5809dde4617
child 30604 b8d532cb6420
permissions -rw-r--r--
8074354: Make CreateMinidumpOnCrash a new name and available on all platforms Summary: Rename CreateMinidumpOnCrash which is used only for Windows as CreateCoredumpOnCrash and make it available for all platforms. Changed order for dumping core on Windows to be similar on other platforms. Also reviewed by thomas.stuefe@gmail.com Reviewed-by: dcubed Contributed-by: yumin.qi@oracle.com, thomas.stuefe@gmail.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     1
/*
29678
dd2f3932c21e 8075586: Add @modules as needed to the open hotspot tests
ykantser
parents: 23442
diff changeset
     2
 * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     4
 *
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     7
 * published by the Free Software Foundation.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     8
 *
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    13
 * accompanied this code).
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    14
 *
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    18
 *
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    21
 * questions.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    22
 */
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    23
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    24
/*
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    25
 * @test CdsDifferentObjectAlignment
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    26
 * @summary Testing CDS (class data sharing) using varying object alignment.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    27
 *          Using different object alignment for each dump/load pair.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    28
 *          This is a negative test; using  object alignment for loading that
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    29
 *          is different from object alignment for creating a CDS file
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    30
 *          should fail when loading.
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    31
 * @library /testlibrary
22892
1709e0e0b87c 8034898: [TESTBUG]: Zero failure project - tag all Runtime JTReg bugs that fail nightly
gtriantafill
parents: 18071
diff changeset
    32
 * @bug 8025642
29678
dd2f3932c21e 8075586: Add @modules as needed to the open hotspot tests
ykantser
parents: 23442
diff changeset
    33
 * @modules java.base/sun.misc
dd2f3932c21e 8075586: Add @modules as needed to the open hotspot tests
ykantser
parents: 23442
diff changeset
    34
 *          java.management
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    35
 */
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    36
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    37
import com.oracle.java.testlibrary.*;
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    38
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    39
public class CdsDifferentObjectAlignment {
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    40
    public static void main(String[] args) throws Exception {
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    41
        String nativeWordSize = System.getProperty("sun.arch.data.model");
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    42
        if (!Platform.is64bit()) {
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    43
            System.out.println("ObjectAlignmentInBytes for CDS is only " +
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    44
                "supported on 64bit platforms; this plaform is " +
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    45
                nativeWordSize);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    46
            System.out.println("Skipping the test");
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    47
        } else {
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    48
            createAndLoadSharedArchive(16, 64);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    49
            createAndLoadSharedArchive(64, 32);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    50
        }
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    51
    }
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    52
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    53
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    54
    // Parameters are object alignment expressed in bytes
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    55
    private static void
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    56
    createAndLoadSharedArchive(int createAlignment, int loadAlignment)
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    57
    throws Exception {
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    58
        String createAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    59
            createAlignment;
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    60
        String loadAlignmentArgument = "-XX:ObjectAlignmentInBytes=" +
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    61
            loadAlignment;
30123
7a8b6bd85e24 8075438: [TESTBUG] Hotspot JTREG tests should use unique CDS archive names
ctornqvi
parents: 23442
diff changeset
    62
        String filename = "./CdsDifferentObjectAlignment" + createAlignment + ".jsa";
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    63
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    64
        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    65
            "-XX:+UnlockDiagnosticVMOptions",
30123
7a8b6bd85e24 8075438: [TESTBUG] Hotspot JTREG tests should use unique CDS archive names
ctornqvi
parents: 23442
diff changeset
    66
            "-XX:SharedArchiveFile=" + filename,
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    67
            "-Xshare:dump",
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    68
            createAlignmentArgument);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    69
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    70
        OutputAnalyzer output = new OutputAnalyzer(pb.start());
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    71
        output.shouldContain("Loading classes to share");
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    72
        output.shouldHaveExitValue(0);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    73
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    74
        pb = ProcessTools.createJavaProcessBuilder(
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    75
            "-XX:+UnlockDiagnosticVMOptions",
30123
7a8b6bd85e24 8075438: [TESTBUG] Hotspot JTREG tests should use unique CDS archive names
ctornqvi
parents: 23442
diff changeset
    76
            "-XX:SharedArchiveFile=" + filename,
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    77
            "-Xshare:on",
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    78
            loadAlignmentArgument,
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    79
            "-version");
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    80
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    81
        output = new OutputAnalyzer(pb.start());
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    82
        String expectedErrorMsg =
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    83
            String.format(
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    84
            "The shared archive file's ObjectAlignmentInBytes of %d " +
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    85
            "does not equal the current ObjectAlignmentInBytes of %d",
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    86
            createAlignment,
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    87
            loadAlignment);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    88
23442
be6bd2c1f2a8 8026154: [TESTBUG] runtime/CDSCompressedKPtrs/XShareAuto.java failed due to exception
mseledtsov
parents: 22892
diff changeset
    89
        try {
be6bd2c1f2a8 8026154: [TESTBUG] runtime/CDSCompressedKPtrs/XShareAuto.java failed due to exception
mseledtsov
parents: 22892
diff changeset
    90
            output.shouldContain(expectedErrorMsg);
be6bd2c1f2a8 8026154: [TESTBUG] runtime/CDSCompressedKPtrs/XShareAuto.java failed due to exception
mseledtsov
parents: 22892
diff changeset
    91
        } catch (RuntimeException e) {
be6bd2c1f2a8 8026154: [TESTBUG] runtime/CDSCompressedKPtrs/XShareAuto.java failed due to exception
mseledtsov
parents: 22892
diff changeset
    92
            output.shouldContain("Unable to use shared archive");
be6bd2c1f2a8 8026154: [TESTBUG] runtime/CDSCompressedKPtrs/XShareAuto.java failed due to exception
mseledtsov
parents: 22892
diff changeset
    93
        }
18071
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    94
        output.shouldHaveExitValue(1);
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    95
    }
156996e4323f 8015324: Create tests for CDS feature
ctornqvi
parents:
diff changeset
    96
}