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