Search in sources :

Example 1 with ExtendedOperatingSystemMXBeanImpl

use of com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl in project openj9 by eclipse.

the class TestManagementFactory method testExtOperatingSystemMXBeanProxyEmitsNotifications.

/**
 * For IBM extension on the OperatingSystemMXBean
 */
@Test
public void testExtOperatingSystemMXBeanProxyEmitsNotifications() {
    try {
        com.ibm.lang.management.OperatingSystemMXBean proxy = ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), "java.lang:type=OperatingSystem", getOperatingSystemInterface());
        OperatingSystemMXBean stdProxy = proxy;
        AssertJUnit.assertNotNull(stdProxy);
        AssertJUnit.assertFalse(proxy instanceof com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl);
        AssertJUnit.assertTrue(proxy instanceof NotificationEmitter);
        NotificationEmitter proxyEmitter = (NotificationEmitter) proxy;
        // Add a listener with a handback object.
        MyTestListener listener = new MyTestListener();
        ArrayList<String> arr = new ArrayList<>();
        arr.add("Save your money for the children.");
        proxyEmitter.addNotificationListener(listener, null, arr);
        // Fire off a notification and ensure that the listener receives it.
        try {
            ProcessingCapacityNotificationInfo info = new ProcessingCapacityNotificationInfo(24);
            CompositeData cd = ProcessingCapacityNotificationInfoUtil.toCompositeData(info);
            Notification notification = new Notification(ProcessingCapacityNotificationInfo.PROCESSING_CAPACITY_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 12);
            notification.setUserData(cd);
            ((ExtendedOperatingSystemMXBeanImpl) (ManagementFactory.getOperatingSystemMXBean())).sendNotification(notification);
            AssertJUnit.assertEquals(1, listener.getNotificationsReceivedCount());
            // Verify that the handback is as expected.
            AssertJUnit.assertNotNull(listener.getHandback());
            AssertJUnit.assertSame(arr, listener.getHandback());
            ArrayList<?> arr2 = (ArrayList<?>) listener.getHandback();
            AssertJUnit.assertEquals(1, arr2.size());
            AssertJUnit.assertEquals("Save your money for the children.", arr2.get(0));
        } catch (MalformedObjectNameException e) {
            Assert.fail("Unexpected MalformedObjectNameException : " + e.getMessage());
            e.printStackTrace();
        }
    } catch (IOException e) {
        Assert.fail("Unexpected IOException : " + e.getMessage());
        e.printStackTrace();
    }
}
Also used : MalformedObjectNameException(javax.management.MalformedObjectNameException) CompositeData(javax.management.openmbean.CompositeData) ArrayList(java.util.ArrayList) IOException(java.io.IOException) Notification(javax.management.Notification) ObjectName(javax.management.ObjectName) NotificationEmitter(javax.management.NotificationEmitter) ExtendedOperatingSystemMXBeanImpl(com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl) ProcessingCapacityNotificationInfo(com.ibm.lang.management.ProcessingCapacityNotificationInfo) ExtendedOperatingSystemMXBeanImpl(com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl) OperatingSystemMXBean(java.lang.management.OperatingSystemMXBean) Test(org.testng.annotations.Test)

Example 2 with ExtendedOperatingSystemMXBeanImpl

use of com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl in project openj9 by eclipse.

the class TestManagementFactory method testExtOperatingSystemMXBeanProxyDoesRemoveListeners.

/**
 * For IBM extensions on the OperatingSystemMXBean
 */
@Test
public void testExtOperatingSystemMXBeanProxyDoesRemoveListeners() {
    try {
        com.ibm.lang.management.OperatingSystemMXBean proxy = ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), "java.lang:type=OperatingSystem", getOperatingSystemInterface());
        OperatingSystemMXBean stdProxy = proxy;
        AssertJUnit.assertNotNull(stdProxy);
        AssertJUnit.assertFalse(proxy instanceof com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl);
        AssertJUnit.assertTrue(proxy instanceof NotificationEmitter);
        NotificationEmitter proxyEmitter = (NotificationEmitter) proxy;
        MyTestListener listener = new MyTestListener();
        proxyEmitter.addNotificationListener(listener, null, null);
        // Fire off a notification and ensure that the listener receives it.
        try {
            ProcessingCapacityNotificationInfo info = new ProcessingCapacityNotificationInfo(240);
            CompositeData cd = ProcessingCapacityNotificationInfoUtil.toCompositeData(info);
            Notification notification = new Notification(ProcessingCapacityNotificationInfo.PROCESSING_CAPACITY_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 12);
            notification.setUserData(cd);
            ((ExtendedOperatingSystemMXBeanImpl) (ManagementFactory.getOperatingSystemMXBean())).sendNotification(notification);
            AssertJUnit.assertEquals(1, listener.getNotificationsReceivedCount());
            // Verify the user data of the notification.
            Notification n = listener.getNotification();
            AssertJUnit.assertNotNull(n);
            verifyProcessingCapacityNotificationUserData(n.getUserData());
            // Remove the listener
            proxyEmitter.removeNotificationListener(listener);
            // Fire off a notification and ensure that the listener does
            // *not* receive it.
            listener.resetNotificationsReceivedCount();
            notification = new Notification(ProcessingCapacityNotificationInfo.PROCESSING_CAPACITY_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 13);
            notification.setUserData(cd);
            ((ExtendedOperatingSystemMXBeanImpl) (ManagementFactory.getOperatingSystemMXBean())).sendNotification(notification);
            AssertJUnit.assertEquals(0, listener.getNotificationsReceivedCount());
            // ListenerNotFoundException being thrown.
            try {
                proxyEmitter.removeNotificationListener(listener);
                Assert.fail("Should have thrown a ListenerNotFoundException!");
            } catch (ListenerNotFoundException e) {
                logger.debug("ListenerNotFoundException occurred, as expected: " + e.getMessage());
            }
        } catch (MalformedObjectNameException e) {
            Assert.fail("Unexpected MalformedObjectNameException : " + e.getMessage());
            e.printStackTrace();
        }
    } catch (ListenerNotFoundException e) {
        Assert.fail("Unexpected ListenerNotFoundException : " + e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        Assert.fail("Unexpected IOException : " + e.getMessage());
        e.printStackTrace();
    }
}
Also used : MalformedObjectNameException(javax.management.MalformedObjectNameException) CompositeData(javax.management.openmbean.CompositeData) IOException(java.io.IOException) Notification(javax.management.Notification) ObjectName(javax.management.ObjectName) NotificationEmitter(javax.management.NotificationEmitter) ExtendedOperatingSystemMXBeanImpl(com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl) ProcessingCapacityNotificationInfo(com.ibm.lang.management.ProcessingCapacityNotificationInfo) ListenerNotFoundException(javax.management.ListenerNotFoundException) ExtendedOperatingSystemMXBeanImpl(com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl) OperatingSystemMXBean(java.lang.management.OperatingSystemMXBean) Test(org.testng.annotations.Test)

Aggregations

ProcessingCapacityNotificationInfo (com.ibm.lang.management.ProcessingCapacityNotificationInfo)2 ExtendedOperatingSystemMXBeanImpl (com.ibm.lang.management.internal.ExtendedOperatingSystemMXBeanImpl)2 IOException (java.io.IOException)2 OperatingSystemMXBean (java.lang.management.OperatingSystemMXBean)2 MalformedObjectNameException (javax.management.MalformedObjectNameException)2 Notification (javax.management.Notification)2 NotificationEmitter (javax.management.NotificationEmitter)2 ObjectName (javax.management.ObjectName)2 CompositeData (javax.management.openmbean.CompositeData)2 Test (org.testng.annotations.Test)2 ArrayList (java.util.ArrayList)1 ListenerNotFoundException (javax.management.ListenerNotFoundException)1