package org.oddjob.jmx.general; import static org.mockito.Mockito.*; import java.util.Set; import java.util.TreeSet; import javax.management.MBeanAttributeInfo; import javax.management.MBeanConstructorInfo; import javax.management.MBeanInfo; import javax.management.MBeanNotificationInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import junit.framework.TestCase; import org.oddjob.arooa.life.ClassLoaderClassResolver; public class MBeanCacheMapTest extends TestCase { public void testFindMany() throws Exception { ObjectName objectName1 = new ObjectName("fruit:name=apple"); ObjectName objectName2 = new ObjectName("fruit:name=orange"); Set<ObjectName> objectNames = new TreeSet<ObjectName>(); objectNames.add(objectName1); objectNames.add(objectName2); MBeanInfo info = new MBeanInfo("foo.Foo", "Some Foo Bean", new MBeanAttributeInfo[0], new MBeanConstructorInfo[0], new MBeanOperationInfo[0], new MBeanNotificationInfo[0]); MBeanServerConnection mbsc = mock(MBeanServerConnection.class); when(mbsc.queryNames(new ObjectName("fruit:*"), null) ).thenReturn(objectNames); when(mbsc.getMBeanInfo(any(ObjectName.class))).thenReturn(info); MBeanCacheMap test = new MBeanCacheMap(mbsc, new ClassLoaderClassResolver(getClass().getClassLoader())); Object[] object = test.findBeans(new ObjectName("fruit:*")); assertEquals(2, object.length); assertEquals("fruit:name=apple", object[0].toString()); assertEquals("fruit:name=orange", object[1].toString()); Object findAgain = test.findBean( new ObjectName("fruit:name=orange")); assertEquals(object[1], findAgain); } public void testFindOne() throws Exception { ObjectName objectName = new ObjectName("fruit:name=orange"); Set<ObjectName> objectNames = new TreeSet<ObjectName>(); objectNames.add(objectName); MBeanInfo info = new MBeanInfo("foo.Foo", "Some Foo Bean", new MBeanAttributeInfo[0], new MBeanConstructorInfo[0], new MBeanOperationInfo[0], new MBeanNotificationInfo[0]); MBeanServerConnection mbsc = mock(MBeanServerConnection.class); when(mbsc.queryNames(new ObjectName("fruit:name=orange"), null) ).thenReturn(objectNames); when(mbsc.getMBeanInfo(any(ObjectName.class))).thenReturn(info); MBeanCacheMap test = new MBeanCacheMap(mbsc, new ClassLoaderClassResolver(getClass().getClassLoader())); Object object = test.findBean(new ObjectName("fruit:name=orange")); assertEquals("fruit:name=orange", object.toString()); Object findAgain = test.findBean( new ObjectName("fruit:name=orange")); assertEquals(object, findAgain); } }