Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/lang/management/ThreadMXBean/ThreadInfoArray.java
41152 views
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 5058327 8074368
27
* @summary Tests the correct behaviour of getThreadInfo(long[]) for non-existent
28
* thread IDs and the empty thread id array.
29
*
30
* @author Mandy Chung
31
* @author Jaroslav Bachorik
32
*
33
* @modules jdk.management
34
* @build ThreadInfoArray
35
* @run main ThreadInfoArray
36
*/
37
38
import java.lang.management.*;
39
import javax.management.*;
40
import static java.lang.management.ManagementFactory.*;
41
42
public class ThreadInfoArray {
43
public static void main(String[] argv) throws Exception {
44
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
45
ObjectName on = new ObjectName(THREAD_MXBEAN_NAME);
46
47
ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
48
ThreadMXBean proxy = newPlatformMXBeanProxy(mbs,
49
on.toString(),
50
ThreadMXBean.class);
51
52
checkNullElement(mbean, proxy, mbs, on);
53
checkEmptyArray(mbean, proxy, mbs, on);
54
System.out.println("Test passed");
55
}
56
57
private static void checkNullElement(ThreadMXBean mbean, ThreadMXBean proxy,
58
MBeanServer mbs, ObjectName on)
59
throws Exception {
60
System.out.println("--- Check null element");
61
// ID for a new thread
62
long [] ids = {new Thread().getId()};
63
// direct call
64
ThreadInfo[] tinfos = mbean.getThreadInfo(ids);
65
66
if (tinfos[0] != null) {
67
throw new RuntimeException("TEST FAILED: " +
68
"Expected to have a null element");
69
}
70
71
// call getThreadInfo through MBeanServer
72
Object[] params = {ids};
73
String[] sigs = {"[J"};
74
Object[] result = (Object[]) mbs.invoke(on, "getThreadInfo", params, sigs);
75
76
if (result[0] != null) {
77
throw new RuntimeException("TEST FAILED: " +
78
"Expected to have a null element via MBeanServer");
79
}
80
81
// call getThreadInfo through proxy
82
tinfos = proxy.getThreadInfo(ids);
83
if (tinfos[0] != null) {
84
throw new RuntimeException("TEST FAILED: " +
85
"Expected to have a null element");
86
}
87
System.out.println("--- PASSED");
88
}
89
90
private static void checkEmptyArray(ThreadMXBean mbean, ThreadMXBean proxy,
91
MBeanServer mbs, ObjectName on)
92
throws Exception {
93
System.out.println("--- Check empty TID array");
94
95
long[] ids = new long[0];
96
// direct call
97
assertEmptyArray(mbean.getThreadInfo(ids), "Expected empty ThreadInfo array");
98
assertEmptyArray(mbean.getThreadInfo(ids, 1), "Expected empty ThreadInfo array");
99
assertEmptyArray(mbean.getThreadInfo(ids, true, true), "Expected empty ThreadInfo array");
100
101
// call getThreadInfo through MBeanServer
102
assertEmptyArray(
103
(Object[]) mbs.invoke(
104
on, "getThreadInfo", new Object[]{ids}, new String[]{"[J"}
105
),
106
"Expected empty ThreadInfo array via MBeanServer"
107
);
108
assertEmptyArray(
109
(Object[]) mbs.invoke(
110
on, "getThreadInfo", new Object[]{ids, 1},
111
new String[]{"[J", "int"}
112
),
113
"Expected empty ThreadInfo array via MBeanServer"
114
);
115
assertEmptyArray(
116
(Object[]) mbs.invoke(
117
on, "getThreadInfo", new Object[]{ids, true, true},
118
new String[]{"[J", "boolean", "boolean"}
119
),
120
"Expected empty ThreadInfo array via MBeanServer"
121
);
122
123
// call getThreadInfo through proxy
124
assertEmptyArray(proxy.getThreadInfo(ids), "Expected empty ThreadInfo array");
125
assertEmptyArray(proxy.getThreadInfo(ids, 1), "Expected empty ThreadInfo array");
126
assertEmptyArray(proxy.getThreadInfo(ids, true, true), "Expected empty ThreadInfo array");
127
System.out.println("--- PASSED");
128
}
129
130
private static void assertEmptyArray(Object[] arr, String message) throws Exception {
131
if (arr.length > 0) {
132
throw new RuntimeException("TEST FAILED: " + message);
133
}
134
}
135
}
136
137