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.assertNotNull; 36 import static org.junit.Assert.assertTrue; 37 import static org.junit.Assert.fail; 38 39 import java.io.IOException; 40 import java.util.ArrayList; 41 import java.util.Arrays; 42 import java.util.List; 43 import java.util.Map; 44 45 import org.junit.Test; 46 47 import org.openjdk.jmc.rjmx.IConnectionHandle; 48 import org.openjdk.jmc.rjmx.subscription.MRI; 49 import org.openjdk.jmc.rjmx.subscription.MRI.Type; 50 import org.openjdk.jmc.rjmx.subscription.internal.AttributeValueToolkit; 51 import org.openjdk.jmc.rjmx.test.RjmxTestCase; 52 import org.openjdk.jmc.rjmx.test.internal.RJMXConnectionTest; 53 54 /** 55 */ 56 public class AttributeValueTest extends RjmxTestCase { 57 58 @Test 59 public void testConnect() { 60 try { 61 assertTrue(m_connectionHandle.isConnected()); 62 } catch (Exception e) { 63 fail(e.getMessage()); 64 } 65 } 66 67 @Test 68 public void testGetAttributes() { 69 try { 70 List<MRI> fetchList = createAttributesList(m_connectionHandle); 71 72 long start = System.currentTimeMillis(); 73 Map<MRI, Object> results = AttributeValueToolkit.getAttributes(getMBeanServerConnection(), fetchList); 74 long end = System.currentTimeMillis(); 75 assertTrue(end - start < 3000); 76 assertTrue(fetchList.size() == results.size()); 77 assertTrue(results.size() > 0); 78 for (Object o : results.values()) { 79 assertNotNull(o); 80 } 81 } catch (Exception e) { 82 fail(e.getMessage()); 83 } 84 } 85 86 @Test 87 public void testAndValidateCommonAttributes() { 88 try { 89 List<MRI> fetchList = createCommonAttributesList(m_connectionHandle); 90 long start = System.currentTimeMillis(); 91 Map<MRI, Object> results = AttributeValueToolkit.getAttributes(getMBeanServerConnection(), fetchList); 92 long end = System.currentTimeMillis(); 93 assertTrue(end - start < 60000); 94 assertTrue(fetchList.size() == results.size()); 95 assertTrue(results.size() > 0); 96 for (Object o : results.values()) { 97 assertNotNull(o); 98 } 99 } catch (Exception e) { 100 fail(e.getMessage()); 101 } 102 } 103 104 /** 105 * Creates a fetchMap for getting a few attributes (CLASS_LOADING and OS) 106 * 107 * @return 108 */ 109 private static List<MRI> createAttributesList(IConnectionHandle connectionHandle) throws IOException { 110 return Arrays.asList(RJMXConnectionTest.getOSAttributes()); 111 } 112 113 private static List<MRI> createCommonAttributesList(IConnectionHandle connectionHandle) { 114 List<MRI> fetchList = new ArrayList<>(); 115 fetchList.add(new MRI(Type.ATTRIBUTE, "java.lang:type=OperatingSystem", "SystemCpuLoad")); //$NON-NLS-1$ //$NON-NLS-2$ 116 fetchList.add(new MRI(Type.ATTRIBUTE, "java.lang:type=OperatingSystem", "ProcessCpuLoad")); //$NON-NLS-1$ //$NON-NLS-2$ 117 fetchList.add(new MRI(Type.ATTRIBUTE, "java.lang:type=OperatingSystem", //$NON-NLS-1$ 118 "TotalPhysicalMemorySize")); //$NON-NLS-1$ 119 fetchList.add(new MRI(Type.ATTRIBUTE, "java.lang:type=OperatingSystem", //$NON-NLS-1$ 120 "UsedPhysicalMemorySize")); //$NON-NLS-1$ 121 return fetchList; 122 } 123 }