0
|
1 /*
|
|
2 * CDDL HEADER START
|
|
3 *
|
|
4 * The contents of this file are subject to the terms of the
|
|
5 * Common Development and Distribution License (the "License").
|
|
6 * You may not use this file except in compliance with the License.
|
|
7 *
|
|
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
9 * or http://www.opensolaris.org/os/licensing.
|
|
10 * See the License for the specific language governing permissions
|
|
11 * and limitations under the License.
|
|
12 *
|
|
13 * When distributing Covered Code, include this CDDL HEADER in each
|
|
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
15 * If applicable, add the following below this CDDL HEADER, with the
|
|
16 * fields enclosed by brackets "[]" replaced with your own identifying
|
|
17 * information: Portions Copyright [yyyy] [name of copyright owner]
|
|
18 *
|
|
19 * CDDL HEADER END
|
|
20 */
|
|
21
|
|
22 /*
|
|
23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
|
|
24 * Use is subject to license terms.
|
|
25 *
|
|
26 * ident "@(#)TestStopLock.java 1.1 06/09/26 SMI"
|
|
27 */
|
|
28
|
|
29 import org.opensolaris.os.dtrace.*;
|
|
30
|
|
31 /**
|
|
32 * Test for bug 6399888 stop() hangs if ConsumerListener calls
|
|
33 * synchronized Consumer method
|
|
34 */
|
|
35 public class TestStopLock {
|
|
36 public static void
|
|
37 main(String[] args)
|
|
38 {
|
|
39 final Consumer consumer = new LocalConsumer();
|
|
40 consumer.addConsumerListener(new ConsumerAdapter() {
|
|
41 @Override
|
|
42 public void intervalBegan(ConsumerEvent e) {
|
|
43 consumer.isRunning();
|
|
44 }
|
|
45 });
|
|
46
|
|
47 try {
|
|
48 consumer.open();
|
|
49 consumer.compile("syscall:::entry { @[execname] = count(); } " +
|
|
50 "tick-101ms { printa(@); }");
|
|
51 consumer.enable();
|
|
52 consumer.go();
|
|
53 try {
|
|
54 Thread.currentThread().sleep(500);
|
|
55 } catch (InterruptedException e) {
|
|
56 e.printStackTrace();
|
|
57 System.exit(1);
|
|
58 }
|
|
59 consumer.stop();
|
|
60 consumer.close();
|
|
61 } catch (DTraceException e) {
|
|
62 e.printStackTrace();
|
|
63 System.exit(1);
|
|
64 }
|
|
65 System.out.println("Successful");
|
|
66 }
|
|
67 }
|