blob: b706fc63f60722579d8ee08b4ed51fa5972b00ee [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2003-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 4929401
27 * @summary ThreadMXBean.getThreadCpuTime() throws IllegalArgumentException
28 * if id <= 0 and returns -1 if the thread doesn't exist.
29 * @author Mandy Chung
30 *
31 * @run main InvalidThreadID
32 */
33
34import java.lang.management.ThreadMXBean;
35import java.lang.management.ManagementFactory;
36
37public class InvalidThreadID {
38
39 public static void main(String argv[]) {
40
41 ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
42 int cnt = 0;
43 long [] idArr = {0, -1, -2, (Long.MIN_VALUE + 1), Long.MIN_VALUE};
44
45 if (mbean.isThreadCpuTimeSupported()) {
46 for (int i = 0; i < idArr.length; i++) {
47 try {
48 mbean.getThreadCpuTime(idArr[i]);
49 System.out.println("Test failed. IllegalArgumentException" +
50 " expected for ID = " + idArr[i]);
51 } catch (IllegalArgumentException iae) {
52 cnt++;
53 }
54 }
55 if (cnt != idArr.length) {
56 throw new RuntimeException("Unexpected number of " +
57 "IllegalArgumentException = " + cnt +
58 " expected = " + idArr.length);
59 }
60
61 // CPU time for a non-existence thread
62 long time = mbean.getThreadCpuTime(999999);
63 if (time < 0 && time != -1) {
64 throw new RuntimeException("Cpu time for thread 999999" +
65 " is invalid = " + time + " expected to be -1.");
66 }
67 }
68 System.out.println("Test passed.");
69 }
70}