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 6303187
27 * @summary Test that no locks are held when a monitor attribute is sampled
28 * or notif delivered.
29 * @author Eamonn McManus
30 *
31 * @library /lib/testlibrary
32 *
33 * @run clean GaugeMonitorDeadlockTest
34 * @run build GaugeMonitorDeadlockTest
35 * @run main GaugeMonitorDeadlockTest 1
36 * @run main GaugeMonitorDeadlockTest 2
37 * @run main GaugeMonitorDeadlockTest 3
38 * @run main GaugeMonitorDeadlockTest 4
39 */
40
41 import java.lang.management.ManagementFactory;
42 import java.lang.management.ThreadInfo;
43 import java.lang.management.ThreadMXBean;
44 import java.util.concurrent.atomic.AtomicInteger;
45 import javax.management.JMX;
46 import javax.management.MBeanServer;
47 import javax.management.Notification;
48 import javax.management.NotificationListener;
49 import javax.management.ObjectName;
50 import javax.management.monitor.GaugeMonitor;
51 import javax.management.monitor.GaugeMonitorMBean;
52
53 import jdk.testlibrary.Utils;
54
55 public class GaugeMonitorDeadlockTest {
56 private static enum When {IN_GET_ATTRIBUTE, IN_NOTIFY};
57 private static long checkingTime;
58
59 public static void main(String[] args) throws Exception {
60 if (args.length != 1)
61 throw new Exception("Arg should be test number");
62 checkingTime = Utils.adjustTimeout(1000); // default 1s timeout
63 System.out.println("=== checkingTime = " + checkingTime + "ms");
64
65 int testNo = Integer.parseInt(args[0]) - 1;
66 TestCase test = testCases[testNo];
67 System.out.println("Test: " + test.getDescription());
68 test.run();
69 System.out.println("Test passed");
70 }
71
72 private static abstract class TestCase {
73 TestCase(String description, When when) {
|
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 6303187
27 * @summary Test that no locks are held when a monitor attribute is sampled
28 * or notif delivered.
29 * @author Eamonn McManus
30 *
31 * @library /test/lib
32 *
33 * @run clean GaugeMonitorDeadlockTest
34 * @run build GaugeMonitorDeadlockTest
35 * @run main GaugeMonitorDeadlockTest 1
36 * @run main GaugeMonitorDeadlockTest 2
37 * @run main GaugeMonitorDeadlockTest 3
38 * @run main GaugeMonitorDeadlockTest 4
39 */
40
41 import java.lang.management.ManagementFactory;
42 import java.lang.management.ThreadInfo;
43 import java.lang.management.ThreadMXBean;
44 import java.util.concurrent.atomic.AtomicInteger;
45 import javax.management.JMX;
46 import javax.management.MBeanServer;
47 import javax.management.Notification;
48 import javax.management.NotificationListener;
49 import javax.management.ObjectName;
50 import javax.management.monitor.GaugeMonitor;
51 import javax.management.monitor.GaugeMonitorMBean;
52
53 import jdk.test.lib.Utils;
54
55 public class GaugeMonitorDeadlockTest {
56 private static enum When {IN_GET_ATTRIBUTE, IN_NOTIFY};
57 private static long checkingTime;
58
59 public static void main(String[] args) throws Exception {
60 if (args.length != 1)
61 throw new Exception("Arg should be test number");
62 checkingTime = Utils.adjustTimeout(1000); // default 1s timeout
63 System.out.println("=== checkingTime = " + checkingTime + "ms");
64
65 int testNo = Integer.parseInt(args[0]) - 1;
66 TestCase test = testCases[testNo];
67 System.out.println("Test: " + test.getDescription());
68 test.run();
69 System.out.println("Test passed");
70 }
71
72 private static abstract class TestCase {
73 TestCase(String description, When when) {
|