xref: /freebsd-src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/mdb/tst.dtracedcmd.ksh (revision 2be1a816b9ff69588e55be0a84cbe2a31efc0f2f)
1*2be1a816SJohn Birrell#!/bin/ksh -p
2*2be1a816SJohn Birrell#
3*2be1a816SJohn Birrell# CDDL HEADER START
4*2be1a816SJohn Birrell#
5*2be1a816SJohn Birrell# The contents of this file are subject to the terms of the
6*2be1a816SJohn Birrell# Common Development and Distribution License (the "License").
7*2be1a816SJohn Birrell# You may not use this file except in compliance with the License.
8*2be1a816SJohn Birrell#
9*2be1a816SJohn Birrell# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*2be1a816SJohn Birrell# or http://www.opensolaris.org/os/licensing.
11*2be1a816SJohn Birrell# See the License for the specific language governing permissions
12*2be1a816SJohn Birrell# and limitations under the License.
13*2be1a816SJohn Birrell#
14*2be1a816SJohn Birrell# When distributing Covered Code, include this CDDL HEADER in each
15*2be1a816SJohn Birrell# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*2be1a816SJohn Birrell# If applicable, add the following below this CDDL HEADER, with the
17*2be1a816SJohn Birrell# fields enclosed by brackets "[]" replaced with your own identifying
18*2be1a816SJohn Birrell# information: Portions Copyright [yyyy] [name of copyright owner]
19*2be1a816SJohn Birrell#
20*2be1a816SJohn Birrell# CDDL HEADER END
21*2be1a816SJohn Birrell#
22*2be1a816SJohn Birrell
23*2be1a816SJohn Birrell#
24*2be1a816SJohn Birrell# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25*2be1a816SJohn Birrell# Use is subject to license terms.
26*2be1a816SJohn Birrell#
27*2be1a816SJohn Birrell# ident	"%Z%%M%	%I%	%E% SMI"
28*2be1a816SJohn Birrell#
29*2be1a816SJohn Birrell
30*2be1a816SJohn Birrell#
31*2be1a816SJohn Birrell# This script primarily tests that the ::dtrace dcmd is not dumping
32*2be1a816SJohn Birrell# core. We don't try to make sense of the output of the dcmd nor
33*2be1a816SJohn Birrell# do we check to see if any output is produced. We merely see if
34*2be1a816SJohn Birrell# mdb fails with a fatal failure.
35*2be1a816SJohn Birrell#
36*2be1a816SJohn Birrell
37*2be1a816SJohn Birrellscript()
38*2be1a816SJohn Birrell{
39*2be1a816SJohn Birrell	$dtrace -o $dtraceout -s /dev/stdin <<EOF
40*2be1a816SJohn Birrell	syscall:::entry
41*2be1a816SJohn Birrell	{
42*2be1a816SJohn Birrell		@[probefunc] = count();
43*2be1a816SJohn Birrell	}
44*2be1a816SJohn BirrellEOF
45*2be1a816SJohn Birrell}
46*2be1a816SJohn Birrell
47*2be1a816SJohn Birrellmdbdoit()
48*2be1a816SJohn Birrell{
49*2be1a816SJohn Birrell	mdb -k <<EOF
50*2be1a816SJohn Birrell	::walk dtrace_state | ::dtrace
51*2be1a816SJohn BirrellEOF
52*2be1a816SJohn Birrell	status=$?
53*2be1a816SJohn Birrell	kill $script
54*2be1a816SJohn Birrell}
55*2be1a816SJohn Birrell
56*2be1a816SJohn Birrellif [ $# != 1 ]; then
57*2be1a816SJohn Birrell	echo expected one argument: '<'dtrace-path'>'
58*2be1a816SJohn Birrell	exit 2
59*2be1a816SJohn Birrellfi
60*2be1a816SJohn Birrell
61*2be1a816SJohn Birrelldtrace=$1
62*2be1a816SJohn Birrelldtraceout=/tmp/dtrace.out.$$
63*2be1a816SJohn Birrellscript &
64*2be1a816SJohn Birrellscript=$!
65*2be1a816SJohn Birrelltimeout=15
66*2be1a816SJohn Birrell
67*2be1a816SJohn Birrell#
68*2be1a816SJohn Birrell# Sleep while the above script fires into life. To guard against dtrace dying
69*2be1a816SJohn Birrell# and us sleeping forever we allow 15 secs for this to happen. This should be
70*2be1a816SJohn Birrell# enough for even the slowest systems.
71*2be1a816SJohn Birrell#
72*2be1a816SJohn Birrellwhile [ ! -f $dtraceout ]; do
73*2be1a816SJohn Birrell	sleep 1
74*2be1a816SJohn Birrell	timeout=$(($timeout-1))
75*2be1a816SJohn Birrell	if [ $timeout -eq 0 ]; then
76*2be1a816SJohn Birrell		echo "dtrace failed to start. Exiting."
77*2be1a816SJohn Birrell		exit 1
78*2be1a816SJohn Birrell	fi
79*2be1a816SJohn Birrelldone
80*2be1a816SJohn Birrell
81*2be1a816SJohn Birrellmdbdoit
82*2be1a816SJohn Birrell
83*2be1a816SJohn Birrellrm $dtraceout
84*2be1a816SJohn Birrell
85*2be1a816SJohn Birrellexit $status
86