1 22 package org.jboss.test.jmx.test; 23 24 import javax.management.Attribute ; 25 import javax.management.ListenerNotFoundException ; 26 import javax.management.MBeanInfo ; 27 import javax.management.MBeanServerConnection ; 28 import javax.management.MalformedObjectNameException ; 29 import javax.management.ObjectName ; 30 import javax.management.ReflectionException ; 31 32 import junit.framework.Test; 33 import junit.framework.TestSuite; 34 35 import org.jboss.jmx.adaptor.rmi.RMIAdaptor; 36 import org.jboss.test.JBossTestCase; 37 import org.jboss.test.jmx.invoker.CustomClass; 38 import org.jboss.test.jmx.invoker.InvokerTestMBean; 39 import org.jboss.test.jmx.invoker.RMIBadListener; 40 import org.jboss.test.jmx.invoker.RMIListener; 41 42 50 public class JMXInvokerUnitTestCase extends JBossTestCase 51 { 52 public JMXInvokerUnitTestCase(String name) 53 { 54 super(name); 55 } 56 57 public static Test suite() throws Exception 58 { 59 TestSuite suite = new TestSuite(); 62 suite.addTest(new JMXInvokerUnitTestCase("testGetSomething")); 63 suite.addTest(new JMXInvokerUnitTestCase("testGetCustom")); 64 suite.addTest(new JMXInvokerUnitTestCase("testGetCustomXMBean")); 65 suite.addTest(new JMXInvokerUnitTestCase("testGetXMBeanInfo")); 66 suite.addTest(new JMXInvokerUnitTestCase("testXMBeanDoSomething")); 67 suite.addTest(new JMXInvokerUnitTestCase("testSetCustom")); 68 suite.addTest(new JMXInvokerUnitTestCase("testClassNotFoundException")); 69 suite.addTest(new JMXInvokerUnitTestCase("testNotification")); 70 suite.addTest(new JMXInvokerUnitTestCase("testNotificationWithBadListener")); 71 72 return getDeploySetup(suite, "invoker-adaptor-test.ear"); 73 } 74 75 80 ObjectName getObjectName() throws MalformedObjectNameException 81 { 82 return InvokerTestMBean.OBJECT_NAME; 83 } 84 85 public void testGetSomething() 86 throws Exception 87 { 88 log.info("+++ testGetSomething"); 89 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 90 assertEquals("something", server.getAttribute(getObjectName(), "Something")); 91 } 92 93 public void testGetCustom() 94 throws Exception 95 { 96 log.info("+++ testGetCustom"); 97 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 98 CustomClass custom = (CustomClass) server.getAttribute(getObjectName(), "Custom"); 99 assertEquals("InitialValue", custom.getValue()); 100 } 101 102 public void testGetCustomXMBean() 103 throws Exception 104 { 105 log.info("+++ testGetCustomXMBean"); 106 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 107 ObjectName xmbean = new ObjectName ("jboss.test:service=InvokerTest,type=XMBean"); 108 CustomClass custom = (CustomClass) server.getAttribute(xmbean, "Custom"); 109 assertEquals("InitialValue", custom.getValue()); 110 } 111 public void testGetXMBeanInfo() 112 throws Exception 113 { 114 log.info("+++ testGetXMBeanInfo"); 115 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 116 ObjectName xmbean = new ObjectName ("jboss.test:service=InvokerTest,type=XMBean"); 117 MBeanInfo info = server.getMBeanInfo(xmbean); 118 log.info("MBeanInfo: "+info); 119 } 120 public void testXMBeanDoSomething() 121 throws Exception 122 { 123 log.info("+++ testXMBeanDoSomething"); 124 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 125 ObjectName xmbean = new ObjectName ("jboss.test:service=InvokerTest,type=XMBean"); 126 Object [] args = {}; 127 String [] sig = {}; 128 CustomClass custom = (CustomClass) server.invoke(xmbean, "doSomething", args, sig); 129 log.info("doSomething: "+custom); 130 } 131 132 public void testSetCustom() 133 throws Exception 134 { 135 log.info("+++ testSetCustom"); 136 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 137 server.setAttribute(getObjectName(), new Attribute ("Custom", new CustomClass("changed"))); 138 CustomClass custom = (CustomClass) server.getAttribute(getObjectName(), "Custom"); 139 assertEquals("changed", custom.getValue()); 140 } 141 142 148 public void testClassNotFoundException() throws Exception 149 { 150 log.info("+++ testClassNotFoundException"); 151 MBeanServerConnection server = (MBeanServerConnection ) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 152 ObjectName name = new ObjectName ("jboss.test:test=testClassNotFoundException"); 153 try 154 { 155 server.createMBean("org.jboss.text.jmx.DoesNotExist", name); 156 fail("Was able to create org.jboss.text.jmx.DoesNotExist mbean"); 157 } 158 catch (ReflectionException e) 159 { 160 Exception ex = e.getTargetException(); 161 assertTrue("ReflectionException.target is ClassNotFoundException", 162 ex instanceof ClassNotFoundException ); 163 } 164 } 165 166 169 public void testNotification() throws Exception 170 { 171 log.info("+++ testNotification"); 172 RMIListener listener = new RMIListener(10); 173 listener.export(); 174 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 175 server.addNotificationListener(getObjectName(), listener, null, "runTimer"); 176 synchronized( listener ) 177 { 178 listener.wait(15000); 179 } 180 server.removeNotificationListener(getObjectName(), listener); 181 listener.unexport(); 182 int count = listener.getCount(); 183 assertTrue("Received 10 notifications, count="+count, count == 10); 184 } 185 186 192 public void testNotificationWithBadListener() throws Exception 193 { 194 log.info("+++ testNotificationWithBadListener"); 195 RMIAdaptor server = (RMIAdaptor) getInitialContext().lookup("jmx/invoker/RMIAdaptor"); 196 RMIBadListener badListener = new RMIBadListener(); 198 badListener.export(); 199 server.addNotificationListener(getObjectName(), badListener, null, "BadListener"); 200 RMIListener listener = new RMIListener(10); 201 listener.export(); 202 server.addNotificationListener(getObjectName(), listener, null, "runTimer"); 204 synchronized( listener ) 206 { 207 listener.wait(25000); 208 } 209 server.removeNotificationListener(getObjectName(), listener); 210 listener.unexport(); 211 int count = listener.getCount(); 212 assertTrue("Received 10 notifications from Listener, count="+count, 213 count == 10); 214 count = badListener.getCount(); 215 assertTrue("Received >= 1 notifications from BadListener, count="+count, 216 count >= 1); 217 try 218 { 219 server.removeNotificationListener(getObjectName(), badListener); 220 badListener.unexport(); 221 } 222 catch(ListenerNotFoundException e) 223 { 224 225 log.debug("The BadListener was not found", e); 226 } 227 } 228 } 229 | Popular Tags |