Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/remote/mandatory/notif/NotificationBufferCreationTest.java
41155 views
1
/*
2
* Copyright (c) 2003, 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 4934236
27
* @summary Tests that NotificationBuffer is created when used.
28
* @author jfd@...
29
*
30
* @run clean NotificationBufferCreationTest NotificationSender
31
* @run build NotificationBufferCreationTest
32
* @run main NotificationBufferCreationTest
33
*/
34
import java.net.MalformedURLException;
35
36
import javax.management.MBeanServerFactory;
37
import javax.management.MBeanServer;
38
import javax.management.MBeanServerConnection;
39
import javax.management.NotificationListener;
40
import javax.management.ObjectName;
41
import javax.management.Notification;
42
43
import javax.management.remote.JMXConnector;
44
import javax.management.remote.JMXConnectorFactory;
45
import javax.management.remote.JMXConnectorServer;
46
import javax.management.remote.JMXConnectorServerFactory;
47
import javax.management.remote.JMXServiceURL;
48
49
public class NotificationBufferCreationTest {
50
private static final MBeanServer mbs =
51
MBeanServerFactory.createMBeanServer();
52
private static final String[] protocols = {"rmi", "iiop", "jmxmp"};
53
public static void main(String[] args) {
54
try {
55
boolean error = false;
56
ObjectName notifierName =
57
new ObjectName("TestDomain:type=NotificationSender");
58
59
NotificationSender s = new NotificationSender();
60
mbs.registerMBean(s, notifierName);
61
62
for(int i = 0; i < protocols.length; i++) {
63
try {
64
System.out.println("dotest for " + protocols[i]);
65
dotest(protocols[i], s, notifierName);
66
}catch(Exception e) {
67
e.printStackTrace();
68
error = true;
69
}
70
}
71
72
if(error)
73
System.exit(1);
74
75
System.out.println("Test OK");
76
77
}catch(Exception e) {
78
e.printStackTrace();
79
System.exit(1);
80
}
81
}
82
private static void dotest(String protocol,
83
NotificationSender s,
84
ObjectName notifierName) throws Exception {
85
JMXConnector client = null;
86
JMXConnectorServer server = null;
87
JMXServiceURL u = null;
88
try {
89
u = new JMXServiceURL(protocol, null, 0);
90
server =
91
JMXConnectorServerFactory.newJMXConnectorServer(u,
92
null,
93
mbs);
94
checkNotifier(s, 0, "new ConnectorServer");
95
96
server.start();
97
98
checkNotifier(s, 0, "ConnectorServer start");
99
100
JMXServiceURL addr = server.getAddress();
101
client = JMXConnectorFactory.newJMXConnector(addr, null);
102
103
checkNotifier(s, 0, "new Connector");
104
105
client.connect(null);
106
107
checkNotifier(s, 0, "Connector connect");
108
109
MBeanServerConnection mbsc = client.getMBeanServerConnection();
110
111
final NotificationListener dummyListener =
112
new NotificationListener() {
113
public void handleNotification(Notification n,
114
Object o) {
115
// do nothing
116
return;
117
}
118
};
119
120
mbsc.addNotificationListener(notifierName,
121
dummyListener,
122
null,
123
null);
124
125
// 1 Listener is expected to be added by the ServerNotifForwader
126
checkNotifier(s, 1, "addNotificationListener");
127
128
mbsc.removeNotificationListener(notifierName,
129
dummyListener);
130
System.out.println("Test OK for " + protocol);
131
}catch(MalformedURLException e) {
132
System.out.println("Skipping URL " + u);
133
}
134
finally {
135
if(client != null)
136
client.close();
137
if(server != null)
138
server.stop();
139
}
140
}
141
142
private static void checkNotifier(NotificationSender s,
143
int expectedListenerCount,
144
String msg) throws Exception {
145
int count = s.getListenerCount();
146
if(count != expectedListenerCount) {
147
String errorMsg = "Invalid expected listener count [" +
148
expectedListenerCount + "], real [" + count +"] for " + msg;
149
System.out.println(errorMsg);
150
throw new Exception(errorMsg);
151
}
152
153
}
154
}
155
156