Search in sources :

Example 1 with AvailableProcessorsNotificationInfo

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

the class TestOperatingSystemMXBean method testAddListenerForAvailableProcessorNotifications.

@Test
public final void testAddListenerForAvailableProcessorNotifications() {
    // Add a listener with a handback object.
    MyTestListener listener = new MyTestListener();
    ArrayList<String> arr = new ArrayList<String>();
    arr.add("Stone by stone in this big dark forest");
    osb.addNotificationListener(listener, null, arr);
    // Fire off a notification and ensure that the listener receives it.
    try {
        AvailableProcessorsNotificationInfo info = new AvailableProcessorsNotificationInfo(2);
        CompositeData cd = TestUtil.toCompositeData(info);
        Notification notification = new Notification(AvailableProcessorsNotificationInfo.AVAILABLE_PROCESSORS_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 42);
        notification.setUserData(cd);
        this.osb.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.assertTrue(arr2.size() == 1);
        AssertJUnit.assertEquals("Stone by stone in this big dark forest", arr2.get(0));
    } catch (MalformedObjectNameException e) {
        Assert.fail("Unexpected MalformedObjectNameException : " + e.getMessage());
        e.printStackTrace();
    }
}
Also used : MalformedObjectNameException(javax.management.MalformedObjectNameException) CompositeData(javax.management.openmbean.CompositeData) ArrayList(java.util.ArrayList) AvailableProcessorsNotificationInfo(com.ibm.lang.management.AvailableProcessorsNotificationInfo) Notification(javax.management.Notification) ObjectName(javax.management.ObjectName) Test(org.testng.annotations.Test)

Example 2 with AvailableProcessorsNotificationInfo

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

the class OperatingSystemNotificationThread method dispatchNotificationHelper.

private void dispatchNotificationHelper(int type, long data, long sequenceNumber) {
    if (type == 1) {
        // #CPUs changed
        AvailableProcessorsNotificationInfo info = new AvailableProcessorsNotificationInfo((int) data);
        // $NON-NLS-1$
        Notification n = new Notification(AvailableProcessorsNotificationInfo.AVAILABLE_PROCESSORS_CHANGE, "java.lang:type=OperatingSystem", sequenceNumber);
        n.setUserData(AvailableProcessorsNotificationInfoUtil.toCompositeData(info));
        osBean.sendNotification(n);
    } else if (type == 2) {
        // processing capacity changed
        ProcessingCapacityNotificationInfo info = new ProcessingCapacityNotificationInfo((int) data);
        // $NON-NLS-1$
        Notification n = new Notification(ProcessingCapacityNotificationInfo.PROCESSING_CAPACITY_CHANGE, "java.lang:type=OperatingSystem", sequenceNumber);
        n.setUserData(ProcessingCapacityNotificationInfoUtil.toCompositeData(info));
        osBean.sendNotification(n);
    } else if (type == 3) {
        // total physical memory changed
        TotalPhysicalMemoryNotificationInfo info = new TotalPhysicalMemoryNotificationInfo(data);
        // $NON-NLS-1$
        Notification n = new Notification(TotalPhysicalMemoryNotificationInfo.TOTAL_PHYSICAL_MEMORY_CHANGE, "java.lang:type=OperatingSystem", sequenceNumber);
        n.setUserData(TotalPhysicalMemoryNotificationInfoUtil.toCompositeData(info));
        osBean.sendNotification(n);
    }
}
Also used : TotalPhysicalMemoryNotificationInfo(com.ibm.lang.management.TotalPhysicalMemoryNotificationInfo) ProcessingCapacityNotificationInfo(com.ibm.lang.management.ProcessingCapacityNotificationInfo) AvailableProcessorsNotificationInfo(com.ibm.lang.management.AvailableProcessorsNotificationInfo) Notification(javax.management.Notification)

Example 3 with AvailableProcessorsNotificationInfo

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

the class TestOperatingSystemMXBean method testAvailableProcessorsNotications.

// -----------------------------------------------------------------
// Notification implementation tests follow ....
// -----------------------------------------------------------------
@Test
public void testAvailableProcessorsNotications() {
    // Register a listener
    NotificationFilterSupport filter = new NotificationFilterSupport();
    filter.enableType(AvailableProcessorsNotificationInfo.AVAILABLE_PROCESSORS_CHANGE);
    MyTestListener listener = new MyTestListener();
    this.osb.addNotificationListener(listener, filter, null);
    // Fire off a notification and ensure that the listener receives it.
    try {
        AvailableProcessorsNotificationInfo info = new AvailableProcessorsNotificationInfo(2);
        CompositeData cd = TestUtil.toCompositeData(info);
        Notification notification = new Notification(AvailableProcessorsNotificationInfo.AVAILABLE_PROCESSORS_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 42);
        notification.setUserData(cd);
        this.osb.sendNotification(notification);
        AssertJUnit.assertEquals(1, listener.getNotificationsReceivedCount());
        // Remove the listener
        osb.removeNotificationListener(listener, filter, null);
        // Fire off a notification and ensure that the listener does
        // *not* receive it.
        listener.resetNotificationsReceivedCount();
        notification = new Notification(AvailableProcessorsNotificationInfo.AVAILABLE_PROCESSORS_CHANGE, new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME), 43);
        notification.setUserData(cd);
        osb.sendNotification(notification);
        AssertJUnit.assertEquals(0, listener.getNotificationsReceivedCount());
        // ListenerNotFoundException being thrown.
        try {
            osb.removeNotificationListener(listener, filter, null);
            Assert.fail("Should have thrown a ListenerNotFoundException!");
        } catch (Exception e) {
            AssertJUnit.assertTrue(e instanceof ListenerNotFoundException);
        }
    } catch (MalformedObjectNameException e) {
        e.printStackTrace();
        Assert.fail("Unexpected MalformedObjectNameException : " + e.getMessage());
    } catch (ListenerNotFoundException e) {
        e.printStackTrace();
        Assert.fail("Unexpected ListenerNotFoundException : " + e.getMessage());
    }
}
Also used : MalformedObjectNameException(javax.management.MalformedObjectNameException) CompositeData(javax.management.openmbean.CompositeData) NotificationFilterSupport(javax.management.NotificationFilterSupport) ListenerNotFoundException(javax.management.ListenerNotFoundException) AvailableProcessorsNotificationInfo(com.ibm.lang.management.AvailableProcessorsNotificationInfo) Notification(javax.management.Notification) AttributeNotFoundException(javax.management.AttributeNotFoundException) IntrospectionException(javax.management.IntrospectionException) InstanceNotFoundException(javax.management.InstanceNotFoundException) ReflectionException(javax.management.ReflectionException) MalformedObjectNameException(javax.management.MalformedObjectNameException) MBeanException(javax.management.MBeanException) ListenerNotFoundException(javax.management.ListenerNotFoundException) ObjectName(javax.management.ObjectName) Test(org.testng.annotations.Test)

Aggregations

AvailableProcessorsNotificationInfo (com.ibm.lang.management.AvailableProcessorsNotificationInfo)3 Notification (javax.management.Notification)3 MalformedObjectNameException (javax.management.MalformedObjectNameException)2 ObjectName (javax.management.ObjectName)2 CompositeData (javax.management.openmbean.CompositeData)2 Test (org.testng.annotations.Test)2 ProcessingCapacityNotificationInfo (com.ibm.lang.management.ProcessingCapacityNotificationInfo)1 TotalPhysicalMemoryNotificationInfo (com.ibm.lang.management.TotalPhysicalMemoryNotificationInfo)1 ArrayList (java.util.ArrayList)1 AttributeNotFoundException (javax.management.AttributeNotFoundException)1 InstanceNotFoundException (javax.management.InstanceNotFoundException)1 IntrospectionException (javax.management.IntrospectionException)1 ListenerNotFoundException (javax.management.ListenerNotFoundException)1 MBeanException (javax.management.MBeanException)1 NotificationFilterSupport (javax.management.NotificationFilterSupport)1 ReflectionException (javax.management.ReflectionException)1