Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/lang/management/CompositeData/MemoryNotifInfoCompositeData.java
38821 views
1
/*
2
* Copyright (c) 2004, 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
*/
23
24
/*
25
* @test
26
* @bug 4982289
27
* @summary Test MemoryNotificationInfo.from to return a valid
28
* MemoryNotificationInfo object. Or throw exception if
29
* the input CompositeData is invalid.
30
* @author Mandy Chung
31
*
32
* @compile OpenTypeConverter.java
33
* @build MemoryNotifInfoCompositeData
34
* @run main MemoryNotifInfoCompositeData
35
*/
36
37
import javax.management.openmbean.*;
38
import java.lang.management.MemoryNotificationInfo;
39
import java.lang.management.MemoryUsage;
40
import sun.management.MemoryUsageCompositeData;
41
42
public class MemoryNotifInfoCompositeData {
43
public static void main(String[] argv) throws Exception {
44
createGoodCompositeData();
45
badNameCompositeData();
46
badTypeCompositeData();
47
System.out.println("Test passed");
48
}
49
50
private static final int POOL_NAME = 1;
51
private static final int COUNT = 2;
52
private static final int USAGE = 3;
53
private static final String[] validItemNames = {
54
"dummy1",
55
"poolName",
56
"count",
57
"usage",
58
"dummy2",
59
};
60
61
// these values are synchronized with the item names
62
private static final Object[] values = {
63
"Dummy",
64
"Foo",
65
new Long(100),
66
MemoryUsageCompositeData.
67
toCompositeData(new MemoryUsage(0, 100, 1000, 5000)),
68
"Dummy",
69
};
70
71
public static void createGoodCompositeData() throws Exception {
72
73
// get the CompositeType for MemoryUsage
74
validItemTypes[USAGE] = OpenTypeConverter.toOpenType(MemoryUsage.class);
75
CompositeType ct =
76
new CompositeType("MyCompositeType",
77
"CompositeType for MemoryNotificationInfo",
78
validItemNames,
79
validItemNames,
80
validItemTypes);
81
CompositeData cd =
82
new CompositeDataSupport(ct,
83
validItemNames,
84
values);
85
86
MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
87
if (!info.getPoolName().equals(values[POOL_NAME])) {
88
throw new RuntimeException("pool name = " + info.getPoolName() +
89
" expected = " + values[POOL_NAME]);
90
}
91
if (info.getCount() != ((Long) values[COUNT]).longValue()) {
92
throw new RuntimeException("count = " + info.getCount() +
93
" expected = " + values[COUNT]);
94
}
95
if (info.getUsage().getInit() != 0) {
96
throw new RuntimeException("usage init = " +
97
info.getUsage().getInit() +
98
" expected = 0");
99
}
100
if (info.getUsage().getUsed() != 100) {
101
throw new RuntimeException("usage used = " +
102
info.getUsage().getUsed() +
103
" expected = 100");
104
}
105
if (info.getUsage().getCommitted () != 1000) {
106
throw new RuntimeException("usage committed = " +
107
info.getUsage().getCommitted() +
108
" expected = 1000");
109
}
110
if (info.getUsage().getMax() != 5000) {
111
throw new RuntimeException("usage max = " +
112
info.getUsage().getMax() +
113
" expected = 5000");
114
}
115
System.out.print("Pool name = " + info.getPoolName());
116
System.out.println(" Count = " + info.getCount());
117
System.out.println("Usage = " + info.getUsage());
118
}
119
120
public static void badNameCompositeData() throws Exception {
121
CompositeType ct =
122
new CompositeType("MyCompositeType",
123
"CompositeType for MemoryNotificationInfo",
124
badItemNames,
125
badItemNames,
126
validItemTypes);
127
CompositeData cd =
128
new CompositeDataSupport(ct,
129
badItemNames,
130
values);
131
132
try {
133
MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
134
} catch (IllegalArgumentException e) {
135
System.out.println("Expected exception: " +
136
e.getMessage());
137
return;
138
}
139
throw new RuntimeException(
140
"IllegalArgumentException not thrown");
141
}
142
143
public static void badTypeCompositeData() throws Exception {
144
CompositeType ct =
145
new CompositeType("MyCompositeType",
146
"CompositeType for MemoryNotificationInfo",
147
validItemNames,
148
validItemNames,
149
badItemTypes);
150
151
final Object[] values1 = {
152
"Dummy",
153
"Foo",
154
new Long(100),
155
"Bad memory usage object",
156
"Dummy",
157
};
158
159
CompositeData cd =
160
new CompositeDataSupport(ct,
161
validItemNames,
162
values1);
163
164
try {
165
MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
166
} catch (IllegalArgumentException e) {
167
System.out.println("Expected exception: " +
168
e.getMessage());
169
return;
170
}
171
throw new RuntimeException(
172
"IllegalArgumentException not thrown");
173
}
174
175
private static OpenType[] validItemTypes = {
176
SimpleType.STRING,
177
SimpleType.STRING,
178
SimpleType.LONG,
179
null, // OpenTypeConverter.toOpenType(MemoryUsage.class)
180
SimpleType.STRING,
181
};
182
private static final String[] badItemNames = {
183
"poolName",
184
"BadCountName",
185
"usage",
186
"dummy1",
187
"dummy2",
188
};
189
private static final OpenType[] badItemTypes = {
190
SimpleType.STRING,
191
SimpleType.STRING,
192
SimpleType.LONG,
193
SimpleType.STRING, // Bad type
194
SimpleType.STRING,
195
};
196
}
197
198