test/hotspot/jtreg/vmTestbase/metaspace/stressHierarchy/common/StressHierarchy3.java
author mseledtsov
Tue, 22 May 2018 13:05:22 -0700
changeset 50223 28a33a0dbf04
permissions -rw-r--r--
8199257: [TESTBUG] Open source VM testbase metaspace tests Summary: Open sourced VM metaspace tests Reviewed-by: coleenp, stuefe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50223
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     1
/*
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     2
 * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     4
 *
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     7
 * published by the Free Software Foundation.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     8
 *
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    13
 * accompanied this code).
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    14
 *
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    18
 *
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    21
 * questions.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    22
 */
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    23
package metaspace.stressHierarchy.common;
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    24
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    25
import metaspace.stressHierarchy.common.classloader.tree.Tree;
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    26
import nsk.share.test.ExecutionController;
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    27
import nsk.share.test.Tests;
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    28
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    29
/**
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    30
 * 1. Test case cleans up all levels except bottom, then checks that bottom level is alive (and whole tree).
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    31
 * 2. Then test cleans up whole tree and checks that it is reclaimed.
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    32
 */
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    33
public class StressHierarchy3 extends StressHierarchyBaseClass {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    34
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    35
    public static void main(String[] args) {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    36
        try {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    37
            StressHierarchyBaseClass.args = args;
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    38
            Tests.runTest(new StressHierarchy3(), args);
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    39
        } catch (OutOfMemoryError error) {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    40
            System.out.print("Got OOME: " + error.getMessage());
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    41
        }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    42
    }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    43
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    44
    @Override
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    45
    protected void runTestLogic(Tree tree, ExecutionController stresser)
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    46
            throws Throwable {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    47
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    48
        for (int cleanupLevel = tree.getMaxLevel() - 1; cleanupLevel >= 0; cleanupLevel--) {
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    49
            if (! stresser.continueExecution()) { return; }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    50
            tree.cleanupLevel(cleanupLevel);
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    51
            log.info("cleanupLevel=" + cleanupLevel);
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    52
        }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    53
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    54
        triggerUnloadingHelper.triggerUnloading(stresser);
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    55
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    56
        if (! stresser.continueExecution()) { return; }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    57
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    58
        log.info("Check bottom level alive ");
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    59
        performChecksHelper.checkLevelAlive(tree, tree.getMaxLevel());
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    60
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    61
        if (! stresser.continueExecution()) { return; }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    62
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    63
        log.info("Cleanup all");
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    64
        tree.cleanupLevel(tree.getMaxLevel());
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    65
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    66
        triggerUnloadingHelper.triggerUnloading(stresser);
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    67
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    68
        log.info("Check bottom level reclaimed");
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    69
        performChecksHelper.checkLevelReclaimed(tree, tree.getMaxLevel());
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    70
    }
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    71
28a33a0dbf04 8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff changeset
    72
}