Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/mxbean/MXBeanInteropTest2.java
41149 views
1
/*
2
* Copyright (c) 2005, 2015, 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 8058865
27
* @summary Checks access to test MXBean
28
* @author Olivier Lagneau
29
* @modules java.management.rmi
30
* @library /lib/testlibrary
31
* @compile Basic.java
32
* @run main/othervm/timeout=300 -DDEBUG_STANDARD MXBeanInteropTest2
33
*/
34
35
import java.util.Iterator;
36
import java.util.Map;
37
import java.util.Set;
38
39
import javax.management.Attribute;
40
import javax.management.JMX;
41
import javax.management.MBeanAttributeInfo;
42
import javax.management.MBeanConstructorInfo;
43
import javax.management.MBeanServer;
44
import java.lang.management.ManagementFactory;
45
import javax.management.MBeanInfo;
46
import javax.management.MBeanNotificationInfo;
47
import javax.management.MBeanOperationInfo;
48
import javax.management.MBeanServerConnection;
49
import javax.management.ObjectName;
50
import javax.management.remote.JMXConnector;
51
import javax.management.remote.JMXConnectorFactory;
52
import javax.management.remote.JMXConnectorServer;
53
import javax.management.remote.JMXConnectorServerFactory;
54
import javax.management.remote.JMXServiceURL;
55
56
public class MXBeanInteropTest2 {
57
58
private static String BASIC_MXBEAN_CLASS_NAME = "Basic";
59
60
/*
61
* First Debug properties and arguments are collect in expected
62
* map (argName, value) format, then calls original test's run method.
63
*/
64
public static void main(String args[]) throws Exception {
65
66
System.out.println("=================================================");
67
68
// Parses parameters
69
Utils.parseDebugProperties();
70
Map<String, Object> map = Utils.parseParameters(args) ;
71
72
// Run test
73
MXBeanInteropTest2 test = new MXBeanInteropTest2();
74
test.run(map);
75
76
}
77
78
public void run(Map<String, Object> args) {
79
80
System.out.println("MXBeanInteropTest2::run: Start") ;
81
int errorCount = 0 ;
82
83
try {
84
// JMX MbeanServer used inside single VM as if remote.
85
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
86
87
JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
88
JMXConnectorServer cs =
89
JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
90
cs.start();
91
92
JMXServiceURL addr = cs.getAddress();
93
JMXConnector cc = JMXConnectorFactory.connect(addr);
94
MBeanServerConnection mbsc = cc.getMBeanServerConnection();
95
96
// Prints all MBeans whatever the domain is.
97
printMBeans(mbsc) ;
98
99
// Call test body
100
errorCount += doBasicMXBeanTest(mbsc) ;
101
102
// Terminate the JMX Client
103
cc.close();
104
105
} catch(Exception e) {
106
Utils.printThrowable(e, true) ;
107
throw new RuntimeException(e);
108
}
109
110
if ( errorCount == 0 ) {
111
System.out.println("MXBeanInteropTest2::run: Done without any error") ;
112
} else {
113
System.out.println("MXBeanInteropTest2::run: Done with "
114
+ errorCount
115
+ " error(s)") ;
116
throw new RuntimeException("errorCount = " + errorCount);
117
}
118
}
119
120
121
/**
122
* Prints all MBeans whatever the domain is.
123
*/
124
private static void printMBeans(MBeanServerConnection mbsc) throws Exception {
125
Set<ObjectName> set = mbsc.queryNames(null, null);
126
System.out.println("---- MBeans found :");
127
128
for (Iterator<ObjectName> iter = set.iterator(); iter.hasNext(); ) {
129
System.out.println(iter.next().toString());
130
}
131
132
System.out.println("\n") ;
133
}
134
135
136
private final int doBasicMXBeanTest(MBeanServerConnection mbsc) {
137
int errorCount = 0 ;
138
System.out.println("---- doBasicMXBeanTest") ;
139
140
try {
141
ObjectName objName =
142
new ObjectName("sqe:type=BasicMXBean") ;
143
mbsc.createMBean(BASIC_MXBEAN_CLASS_NAME, objName);
144
MBeanInfo mbInfo = mbsc.getMBeanInfo(objName);
145
printMBeanInfo(mbInfo);
146
System.out.println("---- OK\n") ;
147
System.out.println("getMBeanInfo\t\t"
148
+ mbInfo);
149
System.out.println("---- OK\n") ;
150
151
System.out.println("Check mxbean field in the MBeanInfo");
152
String mxbeanField =
153
(String)mbInfo.getDescriptor().getFieldValue(JMX.MXBEAN_FIELD);
154
155
if ( mxbeanField == null || ! mxbeanField.equals("true")) {
156
System.out.println("---- ERROR : Improper mxbean field value "
157
+ mxbeanField);
158
errorCount++;
159
}
160
System.out.println("---- OK\n") ;
161
162
System.out.println("Set attribute ObjectNameAtt");
163
Attribute att = new Attribute("ObjectNameAtt", objName);
164
mbsc.setAttribute(objName, att);
165
ObjectName value =
166
(ObjectName)mbsc.getAttribute(objName, "ObjectNameAtt");
167
168
if ( ! value.equals(objName) ) {
169
errorCount++;
170
System.out.println("---- ERROR : setAttribute failed, got "
171
+ value
172
+ " while expecting "
173
+ objName);
174
}
175
System.out.println("---- OK\n") ;
176
177
System.out.println("Call operation doNothing");
178
mbsc.invoke(objName, "doNothing", null, null);
179
System.out.println("---- OK\n") ;
180
181
System.out.println("Call operation getWeather");
182
Object weather = mbsc.invoke(objName,
183
"getWeather",
184
new Object[]{Boolean.TRUE},
185
new String[]{"boolean"});
186
System.out.println("Weather is " + weather);
187
System.out.println("---- OK\n") ;
188
} catch (Exception e) {
189
Utils.printThrowable(e, true) ;
190
errorCount++ ;
191
System.out.println("---- ERROR\n") ;
192
}
193
194
return errorCount ;
195
}
196
197
private void printMBeanInfo(MBeanInfo mbInfo) {
198
System.out.println("Description " + mbInfo.getDescription());
199
200
for (MBeanConstructorInfo ctor : mbInfo.getConstructors()) {
201
System.out.println("Constructor " + ctor.getName());
202
}
203
204
for (MBeanAttributeInfo att : mbInfo.getAttributes()) {
205
System.out.println("Attribute " + att.getName()
206
+ " [" + att.getType() + "]");
207
}
208
209
for (MBeanOperationInfo oper : mbInfo.getOperations()) {
210
System.out.println("Operation " + oper.getName());
211
}
212
213
for (MBeanNotificationInfo notif : mbInfo.getNotifications()) {
214
System.out.println("Notification " + notif.getName());
215
}
216
}
217
}
218
219