1 /*
2  * Copyright (c) 2018, 2020, 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 /*
26  * @test
27  *
28  * @summary converted from VM Testbase nsk/jdi/ThreadGroupReference/threads/threads001.
29  * VM Testbase keywords: [quick, jpda, jdi]
30  * VM Testbase readme:
31  * DESCRIPTION:
32  *     The test for the implementation of an object of the type
33  *     ThreadGroupReference.
34  *     The test checks up that a result of the method
35  *     com.sun.jdi.ThreadGroupReference.threads()
36  *     complies with its spec:
37  *     public List threads()
38  *     Returns a List containing each ThreadReference in this thread group.
39  *     Only the threads in this immediate thread group (and not its subgroups)
40  *     are returned.
41  *     Returns: a List of ThreadReference objects mirroring
42  *              the threads from this thread group in the target VM.
43  *     Throws: ObjectCollectedException -
44  *             if this object has been garbage collected.
45  *     when a ThreadGroupReference object has not been garbage collected,
46  *     hence ObjectCollectedException is not expected to be thrown.
47  *     The test works as follows:
48  *     The debugger program - nsk.jdi.ThreadGroupReference.threads.threads001;
49  *     the debuggee program - nsk.jdi.ThreadGroupReference.threads.threads001a.
50  *     Using nsk.jdi.share classes,
51  *     the debugger gets the debuggee running on another JavaVM,
52  *     creates the object debuggee.VM,
53  *     establishes a pipe with the debuggee program, and then
54  *     send to the programm commands, to which the debuggee replies
55  *     via the pipe. Upon getting reply,
56  *     the debugger calls corresponding debuggee.VM methods to get
57  *     needed data and compares the data got to the data expected.
58  *     In case of error the test produces the return value 97 and
59  *     a corresponding error message(s).
60  *     Otherwise, the test is passed and produces
61  *     the return value 95 and no message.
62  * COMMENTS:
63  * To fix the bug 4475063, the following correction in file threads001.java are made  :
64  * - new check on
65  *                 threads = group1.threads();
66  *                 if (threads.size() < 2) {
67  * - the check on only two names, "main" and "Thread2", is replaced with the loop
68  *   in which these two names are detected.
69  *
70  * @library /vmTestbase
71  *          /test/lib
72  * @build nsk.jdi.ThreadGroupReference.threads.threads001
73  *        nsk.jdi.ThreadGroupReference.threads.threads001a
74  * @run main/othervm
75  *      nsk.jdi.ThreadGroupReference.threads.threads001
76  *      -verbose
77  *      -arch=${os.family}-${os.simpleArch}
78  *      -waittime=5
79  *      -debugee.vmkind=java
80  *      -transport.address=dynamic
81  *      -debugee.vmkeys="${test.vm.opts} ${test.java.opts}"
82  */
83 
84