1 8 9 package test.javax.management.loading; 10 11 import java.lang.reflect.Method ; 12 import javax.management.MBeanServer ; 13 import javax.management.MBeanServerFactory ; 14 import javax.management.ObjectName ; 15 import javax.management.loading.ClassLoaderRepository ; 16 import javax.management.loading.MLet ; 17 18 import junit.framework.TestCase; 19 20 23 public class ClassLoaderRepositoryTest extends TestCase 24 { 25 public ClassLoaderRepositoryTest(String s) 26 { 27 super(s); 28 } 29 30 public void testSingleMBeanServer() throws Exception 31 { 32 MBeanServer server = MBeanServerFactory.newMBeanServer(); 33 ClassLoaderRepository clr = server.getClassLoaderRepository(); 34 Method method = clr.getClass().getDeclaredMethod("getSize", new Class [0]); 35 method.setAccessible(true); 36 Integer size = (Integer )method.invoke(clr, new Object [0]); 37 int initial = size.intValue(); 38 39 ObjectName name1 = new ObjectName (":name=mlet1"); 40 ObjectName name2 = new ObjectName (":name=mlet2"); 41 42 MLet mlet1 = new MLet (); 43 server.registerMBean(mlet1, name1); 44 45 size = (Integer )method.invoke(clr, new Object [0]); 47 if (size.intValue() != initial + 1) fail("ClassLoader not registered in ClassLoaderRepository"); 48 49 MLet mlet2 = new MLet (); 51 server.registerMBean(mlet2, name2); 52 53 size = (Integer )method.invoke(clr, new Object [0]); 54 if (size.intValue() != initial + 2) fail("ClassLoader not registered in ClassLoaderRepository"); 55 } 56 57 public void testMultipleMBeanServer() throws Exception 58 { 59 MBeanServer server1 = MBeanServerFactory.newMBeanServer("domain1"); 60 MBeanServer server2 = MBeanServerFactory.newMBeanServer("domain2"); 61 ClassLoaderRepository clr1 = server1.getClassLoaderRepository(); 62 ClassLoaderRepository clr2 = server2.getClassLoaderRepository(); 63 Method method = clr1.getClass().getDeclaredMethod("getSize", new Class [0]); 64 method.setAccessible(true); 65 Integer size1 = (Integer )method.invoke(clr1, new Object [0]); 66 int initial1 = size1.intValue(); 67 Integer size2 = (Integer )method.invoke(clr2, new Object [0]); 68 int initial2 = size2.intValue(); 69 70 ObjectName name1 = new ObjectName (":name=mlet1"); 71 ObjectName name2 = new ObjectName (":name=mlet2"); 72 73 MLet mlet1 = new MLet (); 74 server1.registerMBean(mlet1, name1); 75 76 MLet mlet2 = new MLet (); 77 server2.registerMBean(mlet2, name2); 78 79 size1 = (Integer )method.invoke(clr1, new Object [0]); 81 if (size1.intValue() != initial1 + 1) fail("ClassLoader not registered in ClassLoaderRepository"); 82 83 size2 = (Integer )method.invoke(clr2, new Object [0]); 84 if (size2.intValue() != initial2 + 1) fail("ClassLoader not registered in ClassLoaderRepository"); 85 } 86 87 public void testMultipleRegistrationOfSameClassLoader() throws Exception 88 { 89 MBeanServer server = MBeanServerFactory.newMBeanServer(); 90 ClassLoaderRepository clr = server.getClassLoaderRepository(); 91 Method method = clr.getClass().getDeclaredMethod("getSize", new Class [0]); 92 method.setAccessible(true); 93 Integer size = (Integer )method.invoke(clr, new Object [0]); 94 int initial = size.intValue(); 95 96 ObjectName name1 = new ObjectName (":name=mlet1"); 97 ObjectName name2 = new ObjectName (":name=mlet2"); 98 99 MLet mlet1 = new MLet (); 100 server.registerMBean(mlet1, name1); 101 server.registerMBean(mlet1, name2); 102 103 size = (Integer )method.invoke(clr, new Object [0]); 105 if (size.intValue() != initial + 1) fail("Same ClassLoader was registered more than once"); 106 } 107 } 108 | Popular Tags |