freebsd-dev/tools/test/dtrace/Makefile
Rui Paulo 7d924a46c2 Update for the new tests.
Sponsored by:	The FreeBSD Foundation
2010-08-21 14:14:24 +00:00

392 lines
16 KiB
Makefile

# $FreeBSD$
TESTSRCDIR= ${.CURDIR}/../../../cddl/contrib/opensolaris/cmd/dtrace/test
CFLAGS+= -w
DTEST= ${TESTSRCDIR}/cmd/scripts/dtest.pl -n
IGNORE= \
${TESTSRCDIR}/tst/common/aggs/tst.subr.d \
${TESTSRCDIR}/tst/common/buffering/tst.cputime.ksh \
${TESTSRCDIR}/tst/common/buffering/tst.ring3.d \
${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.lowfrequency.d \
${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.malformedoverflow.d\
${TESTSRCDIR}/tst/common/cpc/err.D_PDESC_ZERO.nonexistentevent.d\
${TESTSRCDIR}/tst/common/cpc/err.cpcvscpustatpart1.ksh \
${TESTSRCDIR}/tst/common/cpc/err.cpcvscpustatpart2.ksh \
${TESTSRCDIR}/tst/common/cpc/err.cputrackfailtostart.ksh \
${TESTSRCDIR}/tst/common/cpc/err.cputrackterminates.ksh \
${TESTSRCDIR}/tst/common/cpc/err.toomanyenablings.d \
${TESTSRCDIR}/tst/common/cpc/tst.allcpus.ksh \
${TESTSRCDIR}/tst/common/cpc/tst.genericevent.d \
${TESTSRCDIR}/tst/common/cpc/tst.platformevent.ksh \
${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithFunctions \
${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithModules \
${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithNames \
${TESTSRCDIR}/tst/common/dtraceUtil/man.ListProbesWithProviders \
${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceFunctions \
${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceModule \
${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceNames \
${TESTSRCDIR}/tst/common/dtraceUtil/man.TraceProvider \
${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidModule3.d.ksh \
${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidProvider3.d.ksh \
${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceFunc7.d.ksh \
${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceModule6.d.ksh\
${TESTSRCDIR}/tst/common/dtraceUtil/tst.InvalidTraceProvider4.d.ksh\
${TESTSRCDIR}/tst/common/funcs/tst.bcopy.d \
${TESTSRCDIR}/tst/common/funcs/tst.copyin.d \
${TESTSRCDIR}/tst/common/funcs/tst.copyinto.d \
${TESTSRCDIR}/tst/common/funcs/tst.ddi_pathname.d \
${TESTSRCDIR}/tst/common/funcs/tst.index.d \
${TESTSRCDIR}/tst/common/inline/err.D_OP_INCOMPAT.badxlate.d \
${TESTSRCDIR}/tst/common/inline/tst.InlineTypedef.d \
${TESTSRCDIR}/tst/common/io/tst.fds.c \
${TESTSRCDIR}/tst/common/java_api/tst.FunctionLookup.c \
${TESTSRCDIR}/tst/common/java_api/tst.ProbeData.c \
${TESTSRCDIR}/common/misc/tst.include.ksh \
${TESTSRCDIR}/tst/common/misc/tst.roch.d \
${TESTSRCDIR}/tst/common/nfs/tst.call.c \
${TESTSRCDIR}/tst/common/nfs/tst.call.d \
${TESTSRCDIR}/tst/common/nfs/tst.call3.c \
${TESTSRCDIR}/tst/common/nfs/tst.call3.d \
${TESTSRCDIR}/tst/common/offsetof/err.D_OFFSETOF_BITFIELD.bitfield.d\
${TESTSRCDIR}/tst/common/pointers/err.D_OP_LVAL.AddressChange.d \
${TESTSRCDIR}/tst/common/pointers/tst.GlobalVar.d \
${TESTSRCDIR}/tst/common/pointers/tst.basic1.d \
${TESTSRCDIR}/tst/common/pointers/tst.basic2.d \
${TESTSRCDIR}/tst/common/predicates/tst.argsnotcached.d \
${TESTSRCDIR}/tst/common/privs/tst.func_access.ksh \
${TESTSRCDIR}/tst/common/privs/tst.op_access.ksh \
${TESTSRCDIR}/tst/common/proc/tst.discard.ksh \
${TESTSRCDIR}/tst/common/proc/tst.signal.ksh \
${TESTSRCDIR}/tst/common/proc/tst.startexit.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.ufuncsort.c \
${TESTSRCDIR}/tst/common/scalars/tst.misc.d \
${TESTSRCDIR}/tst/common/scalars/tst.selfarray2.d \
${TESTSRCDIR}/tst/common/sysevent/tst.post.c \
${TESTSRCDIR}/tst/common/sysevent/tst.post.d \
${TESTSRCDIR}/tst/common/sysevent/tst.post_chan.c \
${TESTSRCDIR}/tst/common/sysevent/tst.post_chan.d \
${TESTSRCDIR}/tst/common/trace/tst.misc.d \
${TESTSRCDIR}/tst/common/tracemem/err.D_TRACEMEM_ADDR.badaddr.d \
${TESTSRCDIR}/tst/common/tracemem/tst.rootvp.d \
${TESTSRCDIR}/tst/common/translators/tst.ProcModelTrans.d \
${TESTSRCDIR}/tst/common/types/err.D_XLATE_REDECL.ResultDynType.d\
${TESTSRCDIR}/tst/common/types/tst.ptrops.d \
${TESTSRCDIR}/tst/common/types/tst.struct.d \
${TESTSRCDIR}/tst/common/types/tst.typedef.d \
${TESTSRCDIR}/tst/common/vars/tst.ucaller.ksh \
${TESTSRCDIR}/tst/common/vars/tst.walltimestamp.d \
${TESTSRCDIR}/tst/common/usdt/tst.argmap.c \
${TESTSRCDIR}/tst/common/usdt/tst.args.c \
${TESTSRCDIR}/tst/common/usdt/tst.forker.c \
${TESTSRCDIR}/tst/common/ip/tst.ipv4localtcp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv4localudp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv4remotetcp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv4remoteudp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.localtcpstate.ksh \
${TESTSRCDIR}/tst/common/ip/tst.remotetcpstate.ksh \
${TESTSRCDIR}/tst/common/scripting/tst.projid.ksh \
${TESTSRCDIR}/tst/common/scripting/tst.taskid.ksh
NOTWORK+= \
${TESTSRCDIR}/tst/common/io/tst.fds.d \
${TESTSRCDIR}/tst/common/java_api/tst.Abort.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.Bean.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.Close.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.Drop.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.Enable.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.FunctionLookup.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.GetAggregate.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.MaxConsumers.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.MultiAggPrinta.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.ProbeData.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.ProbeDescription.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.StateMachine.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.StopLock.ksh \
${TESTSRCDIR}/tst/common/java_api/tst.printa.d \
${TESTSRCDIR}/tst/common/lexer/err.D_CHR_NL.char.d \
${TESTSRCDIR}/tst/common/lexer/err.D_STR_NL.string.d \
${TESTSRCDIR}/tst/common/mdb/tst.dtracedcmd.ksh \
${TESTSRCDIR}/tst/common/mib/tst.icmp.ksh \
${TESTSRCDIR}/tst/common/mib/tst.tcp.ksh \
${TESTSRCDIR}/tst/common/mib/tst.udp.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.func.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.mod.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.sym.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.ufunc.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.ufuncsort.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.umod.ksh \
${TESTSRCDIR}/tst/common/profile-n/tst.usym.ksh \
${TESTSRCDIR}/tst/common/safety/tst.basename.d \
${TESTSRCDIR}/tst/common/safety/tst.caller.d \
${TESTSRCDIR}/tst/common/safety/tst.cleanpath.d \
${TESTSRCDIR}/tst/common/safety/tst.copyin.d \
${TESTSRCDIR}/tst/common/safety/tst.copyin2.d \
${TESTSRCDIR}/tst/common/safety/tst.ddi_pathname.d \
${TESTSRCDIR}/tst/common/safety/tst.dirname.d \
${TESTSRCDIR}/tst/common/safety/tst.errno.d \
${TESTSRCDIR}/tst/common/safety/tst.execname.d \
${TESTSRCDIR}/tst/common/safety/tst.gid.d \
${TESTSRCDIR}/tst/common/safety/tst.hton.d \
${TESTSRCDIR}/tst/common/safety/tst.index.d \
${TESTSRCDIR}/tst/common/safety/tst.msgdsize.d \
${TESTSRCDIR}/tst/common/safety/tst.msgsize.d \
${TESTSRCDIR}/tst/common/safety/tst.null.d \
${TESTSRCDIR}/tst/common/safety/tst.pid.d \
${TESTSRCDIR}/tst/common/safety/tst.ppid.d \
${TESTSRCDIR}/tst/common/safety/tst.progenyof.d \
${TESTSRCDIR}/tst/common/safety/tst.random.d \
${TESTSRCDIR}/tst/common/safety/tst.rw.d \
${TESTSRCDIR}/tst/common/safety/tst.shortstr.d \
${TESTSRCDIR}/tst/common/safety/tst.stack.d \
${TESTSRCDIR}/tst/common/safety/tst.stackdepth.d \
${TESTSRCDIR}/tst/common/safety/tst.stddev.d \
${TESTSRCDIR}/tst/common/safety/tst.strchr.d \
${TESTSRCDIR}/tst/common/safety/tst.strjoin.d \
${TESTSRCDIR}/tst/common/safety/tst.strstr.d \
${TESTSRCDIR}/tst/common/safety/tst.strtok.d \
${TESTSRCDIR}/tst/common/safety/tst.substr.d \
${TESTSRCDIR}/tst/common/safety/tst.ucaller.d \
${TESTSRCDIR}/tst/common/safety/tst.uid.d \
${TESTSRCDIR}/tst/common/safety/tst.unalign.d \
${TESTSRCDIR}/tst/common/safety/tst.ustack.d \
${TESTSRCDIR}/tst/common/safety/tst.ustackdepth.d \
${TESTSRCDIR}/tst/common/safety/tst.vahole.d \
${TESTSRCDIR}/tst/common/safety/tst.violentdeath.ksh \
${TESTSRCDIR}/tst/common/safety/tst.zonename.d \
${TESTSRCDIR}/tst/common/sched/tst.enqueue.d \
${TESTSRCDIR}/tst/common/sched/tst.oncpu.d \
${TESTSRCDIR}/tst/common/sched/tst.stackdepth.d \
${TESTSRCDIR}/tst/common/sdt/tst.sdtargs.d \
${TESTSRCDIR}/tst/common/usdt/argmap.d \
${TESTSRCDIR}/tst/common/usdt/args.d \
${TESTSRCDIR}/tst/common/usdt/forker.d \
${TESTSRCDIR}/tst/common/usdt/tst.andpid.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.argmap.d \
${TESTSRCDIR}/tst/common/usdt/tst.args.d \
${TESTSRCDIR}/tst/common/usdt/tst.badguess.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.dlclose1.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.dlclose2.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.dlclose3.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.eliminate.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.enabled.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.entryreturn.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.fork.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.forker.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.guess32.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.guess64.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.header.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.include.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.linkpriv.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.linkunpriv.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.multiple.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.nodtrace.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.onlyenabled.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.reeval.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.static.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.static2.ksh \
${TESTSRCDIR}/tst/common/usdt/tst.user.ksh \
${TESTSRCDIR}/tst/common/misc/tst.schrock.ksh
# --------------------------------------------------------------------------------
# Tests that just don't complete (even to fail) at the moment...
NOTWORK+= \
${TESTSRCDIR}/tst/common/dtraceUtil/tst.ZeroModuleProbes.d.ksh \
${TESTSRCDIR}/tst/common/printa/tst.many.d \
${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupgtype.d \
${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupltype.d \
${TESTSRCDIR}/tst/common/scalars/err.D_OP_INCOMPAT.dupttype.d \
${TESTSRCDIR}/tst/common/vars/tst.gid.d \
${TESTSRCDIR}/tst/common/vars/tst.uid.d \
# --------------------------------------------------------------------------------
# Tests that currently hang the system:
NOTWORK+= \
${TESTSRCDIR}/tst/common/fbtprovider/tst.basic.d \
${TESTSRCDIR}/tst/common/fbtprovider/tst.return.d \
${TESTSRCDIR}/tst/common/grammar/tst.stmts.d \
${TESTSRCDIR}/tst/common/misc/tst.enablerace.ksh \
${TESTSRCDIR}/tst/common/predicates/tst.predcache.ksh \
${TESTSRCDIR}/tst/common/proc/tst.exitkilled.ksh \
.if ${MACHINE_ARCH} == "i386"
NOTWORK+= ${TESTSRCDIR}/tst/common/dtraceUtil/tst.DataModel64.d.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/dtraceUtil/tst.DataModel64.d.ksh
# --------------------------------------------------------------------------------
# This test causes i386 to go kaboom in a big way. There is a problem in the
# fbt exception code which needs to be fixed.
NOTWORK+= \
${TESTSRCDIR}/tst/common/fbtprovider/tst.tailcall.d
# Some tests that don't complete on i386.... :-/
NOTWORK+= ${TESTSRCDIR}/tst/common/funcs/tst.chill.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.create.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exec.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.execfail.ENOENT.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.execfail.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitcore.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitexit.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.exitkilled.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.signal.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.sigwait.c
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.sigwait.d
NOTWORK+= ${TESTSRCDIR}/tst/common/proc/tst.startexit.ksh
NOTWORK+= ${TESTSRCDIR}/tst/common/struct/tst.StructDataTypes.d
NOTWORK+= ${TESTSRCDIR}/tst/common/union/tst.UnionDataTypes.d
.endif
# --------------------------------------------------------------------------------
# Interrupt priority isn't relevant on FreeBSD.
NOTWORK+= ${TESTSRCDIR}/tst/common/builtinvar/tst.ipl.d \
${TESTSRCDIR}/tst/common/builtinvar/tst.ipl1.d
# --------------------------------------------------------------------------------
# These tests relies on the Solaris ping behaviour of exiting after a number of
# pings. On FreeBSD ping doesn't do that.
NOTWORK+= ${TESTSRCDIR}/tst/common/funcs/tst.system.d \
${TESTSRCDIR}/tst/common/ip/tst.ipv6remoteicmp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv6localicmp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv4localicmp.ksh \
${TESTSRCDIR}/tst/common/ip/tst.ipv4remoteicmp.ksh
# --------------------------------------------------------------------------------
# This test checks for a leading tab on a line before #define. That is illegal
# on Solaris, but the gcc pre-processor on FreeBSD is happy with code like that.
NOTWORK+= ${TESTSRCDIR}/tst/common/preprocessor/err.D_PRAGCTL_INVAL.tabdefine.d
# --------------------------------------------------------------------------------
# This test is coded to use Solaris syscall names. FreeBSD has none with 'lwp"
# in them, so the test fails because of that.
NOTWORK+= ${TESTSRCDIR}/tst/common/probes/tst.probestar.d
NOTYET= ${IGNORE} ${NOTWORK}
# --------------------------------------------------------------------------------
# Only prepare the test lists if we need to:
.if !make(obj) && !make(clean) && !make(cleandir) && !make(listerrors)
# --------------------------------------------------------------------------------
# Get a list of tests, named according to the directory they are in:
_COMMONDIRS!= cd ${TESTSRCDIR}/tst/common; find . -depth 1 -type d
COMMONDIRS= ${_COMMONDIRS:S/.\///}
listtests :
@echo ${COMMONDIRS}
# --------------------------------------------------------------------------------
# Create a test target for each directory:
ALL_TESTFILES=
# Process each common test directory:
.for _d in ${COMMONDIRS}
# Get a list of test files in the test directory:
${_d}_ERR!= find ${TESTSRCDIR}/tst/common/${_d} -name "err.*.d"
${_d}_TSTD!= find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.d"
${_d}_TSTC!= find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.c"
${_d}_SHERR!= find ${TESTSRCDIR}/tst/common/${_d} -name "err.*.ksh"
${_d}_SHTST!= find ${TESTSRCDIR}/tst/common/${_d} -name "tst.*.ksh"
${_d}_TF= ${${_d}_ERR} ${${_d}_TSTD} ${${_d}_SHERR} ${${_d}_SHTST}
# Go through the list of test files and prepare another list that contains
# none of the test files listed in the NOTYET list:
.for _f in ${${_d}_TF}
.if (${NOTYET:M${_f}} == "")
${_d}_TFS+= ${_f}
.endif
.endfor
# Add the list of tests to the overall test list:
ALL_TESTFILES+= ${${_d}_TFS}
.for _f in ${${_d}_TSTC}
.if (${NOTYET:M${_f}} == "")
${_d}_TFCS+= ${_f}
.endif
.endfor
ALL_TESTCFILES+= ${${_d}_TFCS}
${_d} : ${${_d}_TFCS:T:S/c$/exe/}
@${DTEST} ${${_d}_TFS}
.endfor
# --------------------------------------------------------------------------------
#
PRGS= ${ALL_TESTCFILES:T:S/c$/exe/}
listprgs :
@echo ${PRGS}
# --------------------------------------------------------------------------------
#
.for _f in ${ALL_TESTCFILES}
${_f:T:S/c$/exe/} : ${_f}
gcc -o ${.TARGET} ${_f} -lrt
.endfor
listcfiles :
@echo ${ALL_TESTCFILES}
# --------------------------------------------------------------------------------
# A target to build all tests:
all : ${PRGS}
@sync; sync; sync; sync; sync
@${DTEST} ${ALL_TESTFILES}
# --------------------------------------------------------------------------------
# A target to build the tests flagged as not working yet:
ignore :
@${DTEST} ${IGNORE}
.endif
listerrors :
@find ${.OBJDIR} -name "*.err" -exec cat {} \; -print
# --------------------------------------------------------------------------------
# Test failures are written to failure.N directories in the object tree.
# Get a list of directories in the object tree for 'make clean'.
.if ${.OBJDIR} != ${.CURDIR} && !empty(${.OBJDIR})
CLEANDIRS!= cd ${.OBJDIR} && ls -d *
.endif
# --------------------------------------------------------------------------------
# Insist on using an object directory. Things get messy otherwsie.
.if ${.OBJDIR} == ${.CURDIR} && !make(obj) && !make(clean) && !make(cleandir)
.error ERROR: You must run 'make obj' first!
.endif
# --------------------------------------------------------------------------------
# Load the DTrace module set if necessary.
.BEGIN :
@if ! kldstat -q -m dtrace_test; then kldload dtrace_test; fi
.include <bsd.obj.mk>