author | pliden |
Tue, 12 Jun 2018 17:40:28 +0200 | |
changeset 50525 | 767cdb97f103 |
parent 50223 | 28a33a0dbf04 |
child 53602 | d1282cd2c1fc |
permissions | -rw-r--r-- |
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 |
|
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 |
/* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
26 |
* @test |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
27 |
* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
28 |
* @summary converted from VM Testbase metaspace/shrink_grow/ShrinkGrowTest. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
29 |
* |
50525
767cdb97f103
8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
50223
diff
changeset
|
30 |
* @requires vm.opt.final.ClassUnloading |
50223
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
31 |
* @library /vmTestbase /test/lib |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
32 |
* @run driver jdk.test.lib.FileInstaller . . |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
33 |
* @run main/othervm |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
34 |
* -XX:MetaspaceSize=10m |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
35 |
* -XX:MaxMetaspaceSize=20m |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
36 |
* -Xlog:gc*:gc.log |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
37 |
* metaspace.shrink_grow.ShrinkGrowTest.ShrinkGrowTest |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
38 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
39 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
40 |
package metaspace.shrink_grow.ShrinkGrowTest; |
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 |
import java.lang.reflect.InvocationHandler; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
43 |
import java.lang.reflect.Method; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
44 |
import java.lang.reflect.Proxy; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
45 |
import java.lang.management.ManagementFactory; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
46 |
import java.lang.management.MemoryPoolMXBean; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
47 |
import java.net.URL; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
48 |
import java.net.URLClassLoader; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
49 |
import java.util.HashMap; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
50 |
import java.util.Map; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
51 |
|
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 |
* This is the main test in the metaspace shrink/grow series. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
54 |
* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
55 |
* It tries to allocate all available metespace (loads new classes and keeps |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
56 |
* them in map), then checks that loading new classes causes OOM. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
57 |
* After that it does cleanup loaded classes and then expect the new classes |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
58 |
* could be loaded again. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
59 |
* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
60 |
* <b>Note</b>: Don't forget to limit the metaspace size by giving |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
61 |
* -XX:MaxMetaspaceSize=100k vm option. |
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 |
public class ShrinkGrowTest { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
64 |
|
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 |
* Dead classes storage. |
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 |
private final Map<String, ShrinkGrowTest.Foo> loadedClasses = new HashMap<>(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
69 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
70 |
private static int counter = 0; |
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 |
private String errorMessage = "not completed"; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
73 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
74 |
// thread id to distinguish threads in output |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
75 |
private final String whoAmI; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
76 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
77 |
// the limit of classes to load expecting OOM |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
78 |
private final int maxClassesToLoad; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
79 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
80 |
public static void main(String[] args) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
81 |
String name = args.length > 0 ? args[0] : "singleTest" ; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
82 |
new ShrinkGrowTest(name, 20000).run(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
83 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
84 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
85 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
86 |
* @param name - thread id used in logging |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
87 |
* @param classesToLoad - the limit of classes to load expecting OOM |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
88 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
89 |
public ShrinkGrowTest(String name, int classesToLoad) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
90 |
whoAmI = name; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
91 |
maxClassesToLoad = classesToLoad; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
92 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
93 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
94 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
95 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
96 |
* Just outputs given message preceeded with the thread identifier |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
97 |
* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
98 |
* @param message text to print out |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
99 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
100 |
void log(String message) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
101 |
System.out.println("%" + whoAmI + "% " + message); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
102 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
103 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
104 |
void throwFault(String message) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
105 |
throw new TestFault("%" + whoAmI + "% " + message); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
106 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
107 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
108 |
void throwFault(String message, Throwable t) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
109 |
throw new TestFault("%" + whoAmI + "% " + message, t); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
110 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
111 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
112 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
113 |
* Entry to the test. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
114 |
* Just exits if passes or throws an Error if failed. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
115 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
116 |
public void run() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
117 |
if (System.getProperty("requiresCompressedClassSpace") != null && |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
118 |
!isCompressedClassSpaceAvailable()) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
119 |
System.out.println("Not applicalbe, Compressed Class Space is required"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
120 |
return; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
121 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
122 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
123 |
try { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
124 |
log("Bootstrapping string concatenation for " + whoAmI ); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
125 |
go(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
126 |
// The quest completed! Yahoo! |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
127 |
setErrorMessage(null); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
128 |
log("passed"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
129 |
} catch (TestFault failure) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
130 |
failure.printStackTrace(System.err); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
131 |
setErrorMessage(failure.getMessage()); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
132 |
log("failed :" + errorMessage); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
133 |
throw failure; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
134 |
} catch (Throwable badThing) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
135 |
setErrorMessage(badThing.toString()); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
136 |
throw new TestFault(badThing); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
137 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
138 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
139 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
140 |
private void go() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
141 |
// step 1: eat all metaspace |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
142 |
log("eating metaspace"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
143 |
runOutOfMetaspace(maxClassesToLoad); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
144 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
145 |
// step 2: try to load one more class |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
146 |
// it should be impossible |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
147 |
try { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
148 |
eatALittleMemory(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
149 |
throwFault("We haven't cleaned metaspace yet!"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
150 |
} catch (OutOfMemoryError error) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
151 |
if (!isMetaspaceError(error)) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
152 |
throwFault("Hmm, we ran out metaspace. Metaspace error is still excpected here " + error, error); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
153 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
154 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
155 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
156 |
// step 3: clean up metaspace and try loading a class again. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
157 |
log("washing hands before meal"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
158 |
loadedClasses.clear(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
159 |
System.gc(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
160 |
try { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
161 |
log("one more try to eat"); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
162 |
eatALittleMemory(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
163 |
} catch (OutOfMemoryError error) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
164 |
throwFault("we already should be able to consume metaspace " + error, error); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
165 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
166 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
167 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
168 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
169 |
* @return true if the test has successfully passed. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
170 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
171 |
public boolean isPassed() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
172 |
return errorMessage == null; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
173 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
174 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
175 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
176 |
* @return message describing the reason of failure, or null if passes |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
177 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
178 |
public String getErrorMessage() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
179 |
return errorMessage; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
180 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
181 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
182 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
183 |
* Sets the message describing why test failed, or null if test passed |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
184 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
185 |
void setErrorMessage(String msg) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
186 |
errorMessage = msg; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
187 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
188 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
189 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
190 |
* Loads new classes until OOM. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
191 |
* Checks that OOM is caused by metaspace and throws an Error if not. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
192 |
* |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
193 |
* @param times - maximum limit of classes to load. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
194 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
195 |
private void runOutOfMetaspace(int times) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
196 |
try { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
197 |
for (int i = 0; i < times; i++) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
198 |
eatALittleMemory(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
199 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
200 |
} catch (OutOfMemoryError error) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
201 |
if (isMetaspaceError(error)) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
202 |
return; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
203 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
204 |
throwFault("We ran out of another space, not metaspace: " + error, error); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
205 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
206 |
throwFault("OOM hasn't happened after " + times + " iterations. Might be too much space?.."); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
207 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
208 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
209 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
210 |
* Imitates class loading. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
211 |
* Each invocation of this method causes a new class loader object is created |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
212 |
* and a new class is loaded by this class loader. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
213 |
* Method throws OOM when run out of memory. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
214 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
215 |
private void eatALittleMemory() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
216 |
try { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
217 |
String jarUrl = "file:" + counter + ".jar"; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
218 |
counter++; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
219 |
URL[] urls = new URL[]{new URL(jarUrl)}; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
220 |
URLClassLoader cl = new URLClassLoader(urls); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
221 |
ShrinkGrowTest.Foo foo = (ShrinkGrowTest.Foo) Proxy.newProxyInstance(cl, |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
222 |
new Class[]{ShrinkGrowTest.Foo.class}, |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
223 |
new ShrinkGrowTest.FooInvocationHandler(new ShrinkGrowTest.FooBar())); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
224 |
loadedClasses.put(jarUrl, foo); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
225 |
} catch (java.net.MalformedURLException badThing) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
226 |
// should never occur |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
227 |
throwFault("Unexpeted error: " + badThing, badThing); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
228 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
229 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
230 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
231 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
232 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
233 |
* Checks if given OOM is about metaspace |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
234 |
* @param error OOM |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
235 |
* @return true if message contains 'metaspace' word, false otherwise. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
236 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
237 |
boolean isMetaspaceError(OutOfMemoryError error) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
238 |
String message = error.getMessage(); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
239 |
return message != null && (message.contains("Metaspace") || |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
240 |
message.contains("Compressed class space")); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
241 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
242 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
243 |
boolean isCompressedClassSpaceAvailable() { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
244 |
for (MemoryPoolMXBean pool : ManagementFactory.getMemoryPoolMXBeans()) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
245 |
if (pool.getName().equalsIgnoreCase("Compressed class space")) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
246 |
return true; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
247 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
248 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
249 |
return false; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
250 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
251 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
252 |
/** |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
253 |
* Runtime exception signaling test failure. |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
254 |
*/ |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
255 |
public static class TestFault extends RuntimeException { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
256 |
public TestFault(String message) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
257 |
super(message); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
258 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
259 |
public TestFault(Throwable t) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
260 |
super(t); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
261 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
262 |
public TestFault(String message, Throwable t) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
263 |
super(message, t); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
264 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
265 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
266 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
267 |
public static interface Foo { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
268 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
269 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
270 |
public static class FooBar implements ShrinkGrowTest.Foo { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
271 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
272 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
273 |
class FooInvocationHandler implements InvocationHandler { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
274 |
private final ShrinkGrowTest.Foo foo; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
275 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
276 |
FooInvocationHandler(ShrinkGrowTest.Foo foo) { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
277 |
this.foo = foo; |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
278 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
279 |
|
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
280 |
@Override |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
281 |
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
282 |
return method.invoke(foo, args); |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
283 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
284 |
} |
28a33a0dbf04
8199257: [TESTBUG] Open source VM testbase metaspace tests
mseledtsov
parents:
diff
changeset
|
285 |
} |