1 package org.xmlBlaster.test.jmx;
2
3 import junit.framework.*;
4
5 import javax.management.*;
6 import org.xmlBlaster.client.jmx.AsyncMBeanServer;
7 import org.xmlBlaster.client.jmx.ConnectorFactory;
8 import org.xmlBlaster.client.jmx.*;
9
10 import java.util.logging.Logger;
11 import java.util.logging.Level;
12 import org.xmlBlaster.util.Global;
13 import java.rmi.*;
14
15 public class TestRemoteMBeanServer extends TestCase{
16
17 private final static String ME = "TestRemoteMBeanServer";
18 private Global glob = null;
19 private static Logger log = Logger.getLogger(TestRemoteMBeanServer.class.getName());
20 protected ObjectName RequestBrokerName;
21 protected AsyncMBeanServer server;
22 ObjectName JmxLoggerName;
23
24 /**
25 * Method is used by TestRunner to load these tests
26 */
27 public static Test suite() {
28 TestSuite suite= new TestSuite();
29 suite.addTest(new TestRemoteMBeanServer("testRemoteMBeanServer"));
30 return suite;
31 }
32
33
34 public TestRemoteMBeanServer() {
35 super(ME);
36 }
37
38
39 public TestRemoteMBeanServer(String testName)
40 {
41 super(testName);
42 }
43
44 public static void main(String[] args) {
45 TestRemoteMBeanServer testRemoteMBeanServer1 = new TestRemoteMBeanServer();
46 testRemoteMBeanServer1.setUp();
47 testRemoteMBeanServer1.testRemoteMBeanServer();
48 testRemoteMBeanServer1.tearDown();
49 }
50
51 protected void setUp() {
52 this.glob = (this.glob == null) ? new Global() : this.glob;
53
54 try {
55 log.info("setUp of TestRemoteMBeanServer...");
56 JmxLoggerName = new ObjectName("xmlBlaster:name=JmxLogChannel");
57 RequestBrokerName = new ObjectName("xmlBlaster:name=requestBroker");
58 }
59 catch (MalformedObjectNameException ex) {
60 assertTrue("Object not found!! " + ex.toString(), false);
61 log.severe("Object not found!! " + ex.toString());
62 ex.printStackTrace();
63 }
64 catch (Exception ex) {
65 assertTrue("Error creating ObjectName!! " + ex.toString(), false);
66 log.severe("Error creating ObjectName!! " + ex.toString());
67 ex.printStackTrace();
68 }
69 }
70
71 protected void tearDown() {
72 log.info("shutting down server...");
73 server.close();
74 }
75
76 public void testRemoteMBeanServer() {
77 log.info("creating server on localhost");
78 try {
79 server = ConnectorFactory.getInstance(this.glob).getMBeanServer("localhost");
80 }
81 catch (ConnectorException ex) {
82 assertTrue("Error connecting to server! " + ex.toString(), false);
83 }
84 testCreateMBean();
85 Callback cb2 = server.getObjectInstance(JmxLoggerName);
86 log.info("Playing around with Bean...");
87 testInvoke();
88 boolean registered = testIsRegistered();
89 testGetAttribute();
90 testGetMBeanInfo();
91 testGetMBeanCount();
92
93 testUnregisterMBean(registered);
94
95
96 }
97
98 private boolean testIsRegistered() {
99 log.info("Is JmxLoggerMBean still registered?");
100 boolean registered = false;
101 try {
102 registered = ( (Boolean) server.isRegistered(JmxLoggerName).get()).booleanValue();
103 }
104 catch (Exception ex) {
105 log.severe("Error when checking for JmxLogger! " + ex.toString());
106 assertTrue("Error when checking for JmxLogger " + ex.toString(), false);
107 }
108 if (registered) log.info("success, JmxLogger still registered");
109 else {
110 log.severe("JmxLogger no longer registered!");
111 assertTrue("JmxLogger no longer registered!", false);
112 }
113 return registered;
114 }
115
116 private void testInvoke() {
117 log.info("Invoking addDumpLevel on JmxLoggerMBean");
118 try {
119 server.invoke(JmxLoggerName, "addDumpLevel", null,null);
120 }
121 catch (Exception ex) {
122 log.severe("Error when invoking addDumpLevel on JmxLoggerMBean! " + ex.toString());
123 assertTrue("Error when invoking addDumpLevel on JmxLoggerMBean! " + ex.toString(), false);
124 }
125 }
126
127 private void testCreateMBean() {
128 log.info("creating MBean org.xmlBlaster.util.admin.extern.JmxLogger");
129 server.createMBean("org.xmlBlaster.util.admin.extern.JmxLogger", JmxLoggerName);
130 Callback cb = server.getDefaultDomain();
131 if (cb==null) {
132 assertTrue("Error when receiving callback...", false);
133 log.warning("Error when receiving callback...");
134 }
135 }
136
137 private void testGetMBeanCount() {
138 log.info("counting MBeans on server");
139 try {
140 server.getMBeanCount().get();
141 }
142 catch (RemoteException ex) {
143 log.severe("Error when counting MBeans on server! " + ex.toString());
144 assertTrue("Error when counting MBeans on server! " + ex.toString(), false);
145 }
146 }
147
148 private void testGetAttribute() {
149 log.info("Reading attribute");
150 try {
151 server.getAttribute(JmxLoggerName, "LogText");
152 }
153 catch (Exception ex) {
154 log.severe("Attribute not found!");
155 assertTrue("Attribute not found!", false);
156 }
157 }
158
159 private void testUnregisterMBean(boolean registered) {
160 log.info("Unregistering MBean");
161 try {
162 server.unregisterMBean(JmxLoggerName);
163 }
164 catch (Exception ex) {
165 log.severe("Error when unregistering JmxLogger! " + ex.toString());
166 assertTrue("Error when unregistering JmxLogger " + ex.toString(), false);
167
168 }
169
170 log.info("Is JmxLoggerMBean still registered?");
171
172 try {
173 registered = ( (Boolean) server.isRegistered(JmxLoggerName).get()).booleanValue();
174 }
175 catch (Exception ex) {
176 log.severe("Error when checking for JmxLogger! " + ex.toString());
177 assertTrue("Error when checking for JmxLogger " + ex.toString(), false);
178 }
179 if (!(registered)) log.info("success, JmxLogger removed");
180 else {
181 log.severe("JmxLogger not removed!");
182 assertTrue("JmxLogger not removed", false);
183 }
184 }
185
186 private void testGetMBeanInfo() {
187 log.info("Reading MBeanInfo..");
188 MBeanInfo info = null;
189 try {
190 info = (MBeanInfo) server.getMBeanInfo(JmxLoggerName).get();
191 }
192 catch (Exception ex) {
193 log.severe("MBeanInfo not found!");
194 assertTrue("MBeanInfo not found!", false);
195 }
196 if (info==null) {
197 log.severe("MBeanInfo not found!");
198 assertTrue("MBeanInfo not found!", false);
199 }
200 }
201 }
syntax highlighted by Code2HTML, v. 0.9.1