package test.compliance.relation;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.management.MBeanServerNotification;
import javax.management.ObjectName;
import javax.management.relation.MBeanServerNotificationFilter;
import junit.framework.TestCase;
public class MBeanServerNotificationFilterTestCase
extends TestCase
{
MBeanServerNotificationFilter mbsnf;
ObjectName on1;
ObjectName on2;
MBeanServerNotification n1;
MBeanServerNotification n2;
public MBeanServerNotificationFilterTestCase(String s)
{
super(s);
}
public void testDefault()
{
setUpTest();
mbsnf.enableObjectName(on1);
mbsnf.enableObjectName(on2);
assertEquals(true, mbsnf.isNotificationEnabled(n1));
assertEquals(true, mbsnf.isNotificationEnabled(n2));
}
public void testEnableAll()
{
setUpTest();
mbsnf.enableAllObjectNames();
assertEquals(true, mbsnf.isNotificationEnabled(n1));
assertEquals(true, mbsnf.isNotificationEnabled(n2));
}
public void testEnableOne()
{
setUpTest();
mbsnf.enableObjectName(on2);
assertEquals(false, mbsnf.isNotificationEnabled(n1));
assertEquals(true, mbsnf.isNotificationEnabled(n2));
}
public void testDisableAll()
{
setUpTest();
mbsnf.enableObjectName(on1);
mbsnf.disableAllObjectNames();
assertEquals(false, mbsnf.isNotificationEnabled(n1));
assertEquals(false, mbsnf.isNotificationEnabled(n2));
}
public void testDisableOne()
{
setUpTest();
mbsnf.enableAllObjectNames();
mbsnf.disableObjectName(on2);
assertEquals(true, mbsnf.isNotificationEnabled(n1));
assertEquals(false, mbsnf.isNotificationEnabled(n2));
}
public void testGetters()
{
setUpTest();
try
{
assertEquals(0, mbsnf.getEnabledObjectNames().size());
assertEquals(null, mbsnf.getDisabledObjectNames());
mbsnf.enableAllObjectNames();
assertEquals(null, mbsnf.getEnabledObjectNames());
assertEquals(0, mbsnf.getDisabledObjectNames().size());
mbsnf.disableObjectName(on1);
assertEquals(null, mbsnf.getEnabledObjectNames());
assertEquals(1, mbsnf.getDisabledObjectNames().size());
assertEquals(on1, mbsnf.getDisabledObjectNames().elementAt(0));
mbsnf.disableAllObjectNames();
assertEquals(0, mbsnf.getEnabledObjectNames().size());
assertEquals(null, mbsnf.getDisabledObjectNames());
mbsnf.enableObjectName(on1);
assertEquals(1, mbsnf.getEnabledObjectNames().size());
assertEquals(null, mbsnf.getDisabledObjectNames());
assertEquals(on1, mbsnf.getEnabledObjectNames().elementAt(0));
}
catch (NullPointerException e)
{
fail("FAILS IN RI: " + e.toString());
}
}
public void testSerialization()
{
setUpTest();
mbsnf.enableObjectName(on2);
MBeanServerNotificationFilter mbsnf2 = null;
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(mbsnf);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
mbsnf2 = (MBeanServerNotificationFilter) ois.readObject();
}
catch (IOException ioe)
{
fail(ioe.toString());
}
catch (ClassNotFoundException cnfe)
{
fail(cnfe.toString());
}
assertEquals(false, mbsnf.isNotificationEnabled(n1));
assertEquals(true, mbsnf.isNotificationEnabled(n2));
}
private void setUpTest()
{
mbsnf = new MBeanServerNotificationFilter();
mbsnf.enableType(MBeanServerNotification.REGISTRATION_NOTIFICATION);
try
{
on1 = new ObjectName(":a=a");
on2 = new ObjectName(":b=b");
}
catch (Exception e)
{
fail(e.toString());
}
n1 = new MBeanServerNotification(MBeanServerNotification.REGISTRATION_NOTIFICATION,
new Object(), 1, on1);
n2 = new MBeanServerNotification(MBeanServerNotification.REGISTRATION_NOTIFICATION,
new Object(), 2, on2);
}
}