1 /*
   2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
   3  * 
   4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5  *
   6  * The contents of this file are subject to the terms of either the Universal Permissive License
   7  * v 1.0 as shown at http://oss.oracle.com/licenses/upl
   8  *
   9  * or the following license:
  10  *
  11  * Redistribution and use in source and binary forms, with or without modification, are permitted
  12  * provided that the following conditions are met:
  13  * 
  14  * 1. Redistributions of source code must retain the above copyright notice, this list of conditions
  15  * and the following disclaimer.
  16  * 
  17  * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
  18  * conditions and the following disclaimer in the documentation and/or other materials provided with
  19  * the distribution.
  20  * 
  21  * 3. Neither the name of the copyright holder nor the names of its contributors may be used to
  22  * endorse or promote products derived from this software without specific prior written permission.
  23  * 
  24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
  25  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  26  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  27  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  30  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
  31  * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32  */
  33 package org.openjdk.jmc.rjmx.test.subscription;
  34 
  35 import static org.junit.Assert.fail;
  36 
  37 import org.junit.Test;
  38 
  39 import org.openjdk.jmc.rjmx.ConnectionToolkit;
  40 import org.openjdk.jmc.rjmx.test.RjmxTestCase;
  41 import org.openjdk.jmc.rjmx.test.testutil.TestToolkit;
  42 
  43 /**
  44  * Tests the JRockit specific parts of the OSMBean.
  45  */
  46 public class JmxOperatingSystemTest extends RjmxTestCase {
  47 
  48         @Test
  49         public void testGetCPULoad() {
  50                 try {
  51                         Object data = getMBeanServerConnection().getAttribute(ConnectionToolkit.OPERATING_SYSTEM_BEAN_NAME,
  52                                         "SystemCpuLoad");
  53                         double cpuLoad = ((Number) data).doubleValue();
  54 
  55                         // A negative value is returned if load is not available
  56                         assertMax("CPU Load", 100.0, cpuLoad);
  57                         TestToolkit.println("CPU Load: " + cpuLoad);
  58                 } catch (Exception e) {
  59                         fail(e.getMessage());
  60                 }
  61         }
  62 
  63         @Test
  64         public void testGetCPUJVMLoad() {
  65                 try {
  66                         Object data = getMBeanServerConnection().getAttribute(ConnectionToolkit.OPERATING_SYSTEM_BEAN_NAME,
  67                                         "ProcessCpuLoad");
  68                         double jvmLoad = ((Number) data).doubleValue();
  69 
  70                         // A negative value is returned if load is not available
  71                         assertMax("JVM Load", 100.0, jvmLoad);
  72                         TestToolkit.println("JVM Load: " + jvmLoad);
  73                 } catch (Exception e) {
  74                         fail(e.getMessage());
  75                 }
  76         }
  77 
  78         @Test
  79         public void testGetTotalPhysicalMemory() {
  80                 try {
  81                         Object data = getMBeanServerConnection().getAttribute(ConnectionToolkit.OPERATING_SYSTEM_BEAN_NAME,
  82                                         "TotalPhysicalMemorySize");
  83                         long totalPhysicalMemory = ((Number) data).longValue();
  84                         assertMin("TotalPhysicalMemory", 256 * 1024 * 1024L, totalPhysicalMemory);
  85                 } catch (Exception e) {
  86                         fail(e.getMessage());
  87                 }
  88         }
  89 
  90         @Test
  91         public void testGetUsedPhysicalMemory() {
  92                 try {
  93                         Object data = getMBeanServerConnection().getAttribute(ConnectionToolkit.OPERATING_SYSTEM_BEAN_NAME,
  94                                         "UsedPhysicalMemorySize");
  95                         long usedPhysicalMemory = ((Number) data).longValue();
  96                         assertMin("UsedPhysicalMemory", 16 * 1024 * 1024L, usedPhysicalMemory);
  97                 } catch (Exception e) {
  98                         fail(e.getMessage());
  99                 }
 100         }
 101 }