blob: 5be25106827eff80b70304031fc41175903cd6ac [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2004 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any 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 *
31 * @compile -source 1.5 ProxyExceptions.java
32 * @run main ProxyExceptions
33 */
34import java.lang.management.*;
35import javax.management.*;
36import static java.lang.management.ManagementFactory.*;
37import java.util.List;
38import java.util.Map;
39import java.util.Properties;
40import com.sun.management.GcInfo;
41
42public class ProxyExceptions {
43 private static MBeanServer server =
44 ManagementFactory.getPlatformMBeanServer();
45 private static MemoryPoolMXBean heapPool = null;
46 private static MemoryPoolMXBean nonHeapPool = null;
47 public static void main(String[] argv) throws Exception {
48 List<MemoryPoolMXBean> pools = getMemoryPoolMXBeans();
49 for (MemoryPoolMXBean p : pools) {
50 MemoryPoolMXBean proxy = newPlatformMXBeanProxy(server,
51 MEMORY_POOL_MXBEAN_DOMAIN_TYPE + ",name=" + p.getName(),
52 MemoryPoolMXBean.class);
53 boolean uoeCaught;
54 if (!p.isUsageThresholdSupported()) {
55 try {
56 proxy.getUsageThreshold();
57 uoeCaught = false;
58 } catch (UnsupportedOperationException e) {
59 uoeCaught = true;
60 }
61 if (!uoeCaught) {
62 throw new RuntimeException("TEST FAILED: " +
63 "UnsupportedOperationException not thrown " +
64 "when calling getUsageThreshold on " + p.getName());
65 }
66 try {
67 proxy.setUsageThreshold(100);
68 uoeCaught = false;
69 } catch (UnsupportedOperationException e) {
70 uoeCaught = true;
71 }
72 if (!uoeCaught) {
73 throw new RuntimeException("TEST FAILED: " +
74 "UnsupportedOperationException not thrown " +
75 "when calling setUsageThreshold on " + p.getName());
76 }
77 }
78 if (!p.isCollectionUsageThresholdSupported()) {
79 try {
80 proxy.getCollectionUsageThreshold();
81 uoeCaught = false;
82 } catch (UnsupportedOperationException e) {
83 uoeCaught = true;
84 }
85 if (!uoeCaught) {
86 throw new RuntimeException("TEST FAILED: " +
87 "UnsupportedOperationException not thrown " +
88 "when calling getCollectionUsageThreshold on " +
89 p.getName());
90 }
91 try {
92 proxy.setCollectionUsageThreshold(100);
93 uoeCaught = false;
94 } catch (UnsupportedOperationException e) {
95 uoeCaught = true;
96 }
97 if (!uoeCaught) {
98 throw new RuntimeException("TEST FAILED: " +
99 "UnsupportedOperationException not thrown " +
100 "when calling getCollectionUsageThreshold on " +
101 p.getName());
102 }
103 }
104 }
105
106 ThreadMXBean thread = newPlatformMXBeanProxy(server,
107 THREAD_MXBEAN_NAME,
108 ThreadMXBean.class);
109 boolean iaeCaught = false;
110 try {
111 thread.getThreadInfo(-1);
112 } catch (IllegalArgumentException e) {
113 iaeCaught = true;
114 }
115 if (!iaeCaught) {
116 throw new RuntimeException("TEST FAILED: " +
117 "IllegalArgumentException not thrown " +
118 "when calling getThreadInfo(-1)");
119 }
120
121 System.out.println("Test passed.");
122 }
123}