1 8 9 package test.javax.management; 10 11 import java.util.ArrayList ; 12 import java.util.Iterator ; 13 import java.util.List ; 14 import java.util.Set ; 15 import javax.management.InstanceNotFoundException ; 16 import javax.management.MBeanServerConnection ; 17 import javax.management.MBeanServerDelegate ; 18 import javax.management.Notification ; 19 import javax.management.NotificationListener ; 20 import javax.management.ObjectInstance ; 21 import javax.management.ObjectName ; 22 import javax.management.loading.MLet ; 23 import javax.management.timer.Timer ; 24 25 import test.MX4JTestCase; 26 import test.MultiThreadTestRunner; 27 28 31 public class MultiThreadMBeanServerTest extends MX4JTestCase 32 { 33 protected MBeanServerConnection server; 34 35 public MultiThreadMBeanServerTest(String s) 36 { 37 super(s); 38 } 39 40 protected void setUp() throws Exception 41 { 42 server = newMBeanServer(); 43 } 44 45 protected void tearDown() throws Exception 46 { 47 server = null; 48 } 49 50 public void testAddRemoveNotifyListeners() throws Exception 51 { 52 final ObjectName delegateName = ObjectName.getInstance("JMImplementation:type=MBeanServerDelegate"); 53 54 MultiThreadTestRunner.Test test = new MultiThreadTestRunner.Test() 55 { 56 public void test() throws Exception 57 { 58 final List notifications = new ArrayList (); 59 NotificationListener listener = new NotificationListener () 60 { 61 public void handleNotification(Notification notification, Object handback) 62 { 63 synchronized (notifications) 64 { 65 notifications.add(notification); 66 } 67 } 68 }; 69 70 server.addNotificationListener(delegateName, listener, null, null); 72 73 ObjectName mletName = ObjectName.getInstance(":name=" + new Object ().hashCode()); 75 server.createMBean(MLet .class.getName(), mletName, null); 76 77 server.unregisterMBean(mletName); 79 80 server.removeNotificationListener(delegateName, listener, null, null); 82 } 83 }; 84 85 MultiThreadTestRunner runner = new MultiThreadTestRunner(50, 10); 86 runner.run(test); 87 } 88 89 public void testRegisterUnregisterQueryMBeans() throws Exception 90 { 91 MultiThreadTestRunner.Test test = new MultiThreadTestRunner.Test() 92 { 93 public void test() throws Exception 94 { 95 Set names = server.queryNames(null, null); 96 97 for (Iterator i = names.iterator(); i.hasNext();) 98 { 99 ObjectName name = (ObjectName )i.next(); 100 try 101 { 102 if (server.isInstanceOf(name, MBeanServerDelegate .class.getName())) 103 { 104 server.getAttribute(name, "ImplementationVendor"); 105 } 106 } 107 catch (InstanceNotFoundException ignored) 108 { 109 } 111 } 112 113 ObjectName timerName = ObjectName.getInstance(":timer=" + new Object ().hashCode()); 114 server.createMBean(Timer .class.getName(), timerName, null); 115 116 Set mbeans = server.queryMBeans(new ObjectName ("JMImplementation:*"), null); 117 118 for (Iterator i = mbeans.iterator(); i.hasNext();) 119 { 120 ObjectInstance instance = (ObjectInstance )i.next(); 121 try 122 { 123 if (server.isInstanceOf(instance.getObjectName(), MBeanServerDelegate .class.getName())) 124 { 125 server.getAttribute(instance.getObjectName(), "ImplementationVendor"); 126 } 127 } 128 catch (InstanceNotFoundException ignored) 129 { 130 } 132 } 133 134 server.unregisterMBean(timerName); 135 } 136 }; 137 138 MultiThreadTestRunner runner = new MultiThreadTestRunner(50, 10); 139 runner.run(test); 140 } 141 } 142 | Popular Tags |