package test.implementation.server;
import junit.framework.TestCase;
import test.implementation.server.support.Trivial;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.ObjectInstance;
import org.jboss.mx.server.ServerObjectInstance;
public class ObjectInstanceTestCase
extends TestCase
{
public ObjectInstanceTestCase(String s)
{
super(s);
}
public void testDefaultDomain()
{
MBeanServer server =null;
ObjectName unqualifiedName = null;
ObjectName qualifiedName = null;
ObjectInstance instance1 = null;
ObjectInstance instance2 = null;
try
{
server = MBeanServerFactory.createMBeanServer();
unqualifiedName = new ObjectName(":property=1");
qualifiedName = new ObjectName("DefaultDomain:property=1");
instance1 = server.registerMBean(new Trivial(), qualifiedName);
instance2 = server.getObjectInstance(unqualifiedName);
}
catch (Exception e)
{
fail(e.toString());
}
assertEquals(instance1.getObjectName(),qualifiedName);
assertEquals(instance1, instance2);
if (server != null)
MBeanServerFactory.releaseMBeanServer(server);
}
public void testDifferentServers()
{
MBeanServer server =null;
ObjectName name = null;
ObjectInstance instance1 = null;
ObjectInstance instance2 = null;
try
{
server = MBeanServerFactory.createMBeanServer();
name = new ObjectName(":property=1");
instance1 = server.registerMBean(new Trivial(), name);
MBeanServerFactory.releaseMBeanServer(server);
server = MBeanServerFactory.createMBeanServer();
instance2 = server.registerMBean(new Trivial(), name);
}
catch (Exception e)
{
fail(e.toString());
}
if (instance1.equals(instance2) == true)
fail("Instances in different servers are the same");
if (server != null)
MBeanServerFactory.releaseMBeanServer(server);
}
public void testEquals()
{
ObjectInstance oi = null;
ServerObjectInstance soi = null;
ObjectName name = null;
String className = "org.jboss.AClass";
try
{
name = new ObjectName(":a=a");
oi = new ObjectInstance(name, className);
soi = new ServerObjectInstance(name, className, "agentid");
}
catch (Exception e)
{
fail(e.toString());
}
assertEquals(oi, soi);
}
public void testSerialization()
{
ServerObjectInstance original = null;
ObjectInstance result = null;
ObjectName name = null;
String className = "org.jboss.AClassName";
try
{
name = new ObjectName(":a=a");
original = new ServerObjectInstance(name, className, "agentid");
}
catch (Exception e)
{
fail(e.toString());
}
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(original);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
result = (ObjectInstance) ois.readObject();
}
catch (IOException ioe)
{
fail(ioe.toString());
}
catch (ClassNotFoundException cnfe)
{
fail(cnfe.toString());
}
assertEquals("javax.management.ObjectInstance", result.getClass().getName());
assertEquals(name, result.getObjectName());
assertEquals(className, result.getClassName());
}
}