1 /* 2 * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @bug 5024531 27 * @summary Test type mapping of the platform MXBean proxy 28 * returned from Management.newPlatformMXBeanProxy(). 29 * @author Mandy Chung 30 * @modules jdk.management 31 */ 32 import java.lang.management.*; 33 import javax.management.*; 34 import static java.lang.management.ManagementFactory.*; 35 import java.util.List; 36 import java.util.Map; 37 import java.util.Properties; 38 import com.sun.management.GcInfo; 39 40 public class ProxyExceptions { 41 private static MBeanServer server = 42 ManagementFactory.getPlatformMBeanServer(); 43 private static MemoryPoolMXBean heapPool = null; 44 private static MemoryPoolMXBean nonHeapPool = null; 45 public static void main(String[] argv) throws Exception { 46 List<MemoryPoolMXBean> pools = getMemoryPoolMXBeans(); 47 for (MemoryPoolMXBean p : pools) { 48 MemoryPoolMXBean proxy = newPlatformMXBeanProxy(server, 49 MEMORY_POOL_MXBEAN_DOMAIN_TYPE + ",name=" + p.getName(), 50 MemoryPoolMXBean.class); 51 boolean uoeCaught; 52 if (!p.isUsageThresholdSupported()) { 53 try { 54 proxy.getUsageThreshold(); 55 uoeCaught = false; 56 } catch (UnsupportedOperationException e) { 57 uoeCaught = true; 58 } 59 if (!uoeCaught) { 60 throw new RuntimeException("TEST FAILED: " + 61 "UnsupportedOperationException not thrown " + 62 "when calling getUsageThreshold on " + p.getName()); 63 } 64 try { 65 proxy.setUsageThreshold(100); 66 uoeCaught = false; 67 } catch (UnsupportedOperationException e) { 68 uoeCaught = true; 69 } 70 if (!uoeCaught) { 71 throw new RuntimeException("TEST FAILED: " + 72 "UnsupportedOperationException not thrown " + 73 "when calling setUsageThreshold on " + p.getName()); 74 } 75 } 76 if (!p.isCollectionUsageThresholdSupported()) { 77 try { 78 proxy.getCollectionUsageThreshold(); 79 uoeCaught = false; 80 } catch (UnsupportedOperationException e) { 81 uoeCaught = true; 82 } 83 if (!uoeCaught) { 84 throw new RuntimeException("TEST FAILED: " + 85 "UnsupportedOperationException not thrown " + 86 "when calling getCollectionUsageThreshold on " + 87 p.getName()); 88 } 89 try { 90 proxy.setCollectionUsageThreshold(100); 91 uoeCaught = false; 92 } catch (UnsupportedOperationException e) { 93 uoeCaught = true; 94 } 95 if (!uoeCaught) { 96 throw new RuntimeException("TEST FAILED: " + 97 "UnsupportedOperationException not thrown " + 98 "when calling getCollectionUsageThreshold on " + 99 p.getName()); 100 } 101 } 102 } 103 104 ThreadMXBean thread = newPlatformMXBeanProxy(server, 105 THREAD_MXBEAN_NAME, 106 ThreadMXBean.class); 107 boolean iaeCaught = false; 108 try { 109 thread.getThreadInfo(-1); 110 } catch (IllegalArgumentException e) { 111 iaeCaught = true; 112 } 113 if (!iaeCaught) { 114 throw new RuntimeException("TEST FAILED: " + 115 "IllegalArgumentException not thrown " + 116 "when calling getThreadInfo(-1)"); 117 } 118 119 System.out.println("Test passed."); 120 } 121 }