test/runtime/interned/SanityTest.java

Tue, 02 Apr 2013 11:28:33 +0200

author
mgerdin
date
Tue, 02 Apr 2013 11:28:33 +0200
changeset 4850
ede380e13960
parent 0
f90c822e73f8
permissions
-rw-r--r--

8009763: Add WB test for String.intern()
Summary: Add convenience method in StringTable, add WhiteBox method and simple sanity test
Reviewed-by: mgerdin, zgu
Contributed-by: leonid.mesnik@oracle.com

     1 /*
     2  * Copyright (c) 2013, 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  */
    24 /*
    25  * @test SanityTest
    26  * @summary Sanity check of String.intern() & GC
    27  * @library /testlibrary /testlibrary/whitebox
    28  * @build SanityTest
    29  * @run main ClassFileInstaller sun.hotspot.WhiteBox
    30  * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SanityTest
    31  */
    33 import java.util.*;
    34 import sun.hotspot.WhiteBox;
    37 public class SanityTest {
    38     public static Object tmp;
    39     public static void main(String... args) {
    41         WhiteBox wb = WhiteBox.getWhiteBox();
    42         StringBuilder sb = new StringBuilder();
    43         sb.append("1234x"); sb.append("x56789");
    44         String str = sb.toString();
    46         if (wb.isInStringTable(str)) {
    47             throw new RuntimeException("String " + str + " is already interned");
    48         }
    49         str.intern();
    50         if (!wb.isInStringTable(str)) {
    51             throw new RuntimeException("String " + str + " is not interned");
    52         }
    53         str = sb.toString();
    54         wb.fullGC();
    55         if (wb.isInStringTable(str)) {
    56             throw new RuntimeException("String " + str + " is in StringTable even after GC");
    57         }
    58     }
    59 }

mercurial