1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
# Makefile.am --- automake input file for systemtap testsuite
## process this file with automake to produce Makefile.in
AUTOMAKE_OPTIONS = dejagnu no-dist subdir-objects
all-local:
@echo Run \"make check\" or \"make installcheck\".
clean-local:
-rm -f ./stap site.exp systemtap.sum systemtap.log
-rm -f systemtap.temp*
-rm -rf .systemtap* .cache_test* 2>/dev/null
-rm -f ./stap_*.ko
-rm -f flightrec*
-rm -f *.so
-rm -f uprobe_*
-rm -rf artifacts
TESTAPPS=@enable_testapps@
TOOL_OPTS=
# The SYSTEMTAP_TESTSUITE_RESUME environmental variable will turn on the
# "resume mode" of the systemtap testsuite if set to some non-zero value. In
# this mode, tests, that have already been run, are not being re-executed, and
# their existing test results are being reused and merged instead. This can be
# useful e.g. when some of the tests causes kernel panic or stall. Using the
# "resume mode", it is possible to reboot the testing box, and then re-run the
# testsuite skipping already executed tests. In this case, the problematic
# testcase is left in an "unfinished" state. See "make list-unfinished". In
# case the testsuite was running in the parallel testing mode, more than one
# test will be left unfinished of course. Unfinished tests need separate
# investigation. The "resume mode" can be used with "make installcheck", or
# "make installcheck-parallel" targets.
SKIPTESTS=--ignore \'$(shell \
test -z $(SYSTEMTAP_TESTSUITE_RESUME) || \
grep -r 'Running.*testsuite.*exp\ ...' systemtap.log 2>/dev/null |\
grep -o '[^\/]*\.exp' |\
sort -u |\
tr '\n' ' ' |\
sed 's/\ $$/\n/' \
)\'
# automake's dejagnu library already runs check-DEJAGNU before check-local
# That's why we need to add "execrc" to $(RUNTEST) - to ensure that this
# subtarget gets run even if runtest per se exits with a failure.
check-local:
# but installcheck does not follow an implicit check-DEJAGNU, go figure
installcheck: site.exp
-rm -rf artifacts
-test -z $(SYSTEMTAP_TESTSUITE_RESUME) && $(MAKE) clean && $(MAKE) site.exp
-mv systemtap.log systemtap.temp1.log 2>/dev/null
-mv systemtap.sum systemtap.temp1.sum 2>/dev/null
-rmmod uprobes 2>/dev/null
-$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU RUNTESTFLAGS="$(RUNTESTFLAGS) $(SKIPTESTS) --tool_opts \'install $(TOOL_OPTS)\'"
if test -e systemtap.temp1.log -o -e systemtap.temp1.sum; then \
mv systemtap.log systemtap.temp2.log; \
mv systemtap.sum systemtap.temp2.sum; \
$(SHELL) $(srcdir)/dg-extract-results.sh `find . -name 'systemtap.temp[1,2].sum' -print` > systemtap.sum; \
$(SHELL) $(srcdir)/dg-extract-results.sh -L `find . -name 'systemtap.temp[1,2].log' -print` > systemtap.log; \
rm -f systemtap.temp1.log systemtap.temp1.sum systemtap.temp2.log systemtap.temp2.sum; \
fi
-sed -ne '/systemtap.Summary/,$$ p' < systemtap.sum
# In the parallel mode, the dg-extract-results.sh generates common .sum and .log
# files for all the tests, plus separate logs per testcase are kept in the artifacts
# directory. Serial tests (see below) log to artifacts/__serialtests.
installcheck-parallel: site.exp
-test -z $(SYSTEMTAP_TESTSUITE_RESUME) && $(MAKE) clean && $(MAKE) site.exp
-rmmod uprobes 2>/dev/null
mkdir -p artifacts/__serialtests
MAKEFLAGS= $(RUNTEST2) systemtap.base/environment_sanity.exp
-$(MAKE) -k do-installcheck-parallel; \
result=$$?; \
$(SHELL) $(srcdir)/dg-extract-results.sh \
`find artifacts -name systemtap.sum -print` > systemtap.sum; \
$(SHELL) $(srcdir)/dg-extract-results.sh -L \
`find artifacts -name systemtap.log -print` > systemtap.log;
-tail systemtap.sum
exit $$result
# TESTS exists for the user to pass on the command line to easily
# say "Only run these tests." With check or installcheck it's not necessary, but
# with installcheck-parallel there's no other way to (easily) specify a subset
# of tests. To specify all tests in a subdirectory, use TESTS=systemtap.subdir/*.exp.
# E.g., make check TESTS="gdb.server/*.exp gdb.threads/*.exp".
expanded_tests := $(patsubst $(srcdir)/%,%,$(wildcard $(addprefix $(srcdir)/,$(TESTS))))
# Following are all tests we want to run within the installcheck-parallel target.
# Those are either specified via the TESTS env var, or all the available tests.
all_tests := $(or $(expanded_tests),$(shell cd $(srcdir) && find systemtap.* -name '*.exp' -print))
# Tests that need to run serially. This namely applies to systemtap.server tests.
# They start a new systemtap server and only expect one local server to run.
all_serial_tests := $(shell cd $(srcdir) && find systemtap.server -name '*.exp' -print)
serial_tests := $(filter $(all_tests),$(all_serial_tests))
# There are a few tests known to be slow. We run them right from the beginning
# to try to lessen the overall time taken by the test suite -- if one of these
# tests happens to be run late, it will cause the overall time to increase.
all_slow_tests = systemtap.examples/check.exp systemtap.pass1-4/buildok.exp \
systemtap.base/listing_mode.exp systemtap.syscall/nd_syscall.exp \
systemtap.unprivileged/unprivileged_myproc.exp systemtap.syscall/syscall.exp \
systemtap.base/sdt_misc.exp systemtap.pass1-4/parseok.exp \
systemtap.base/listing_mode_sanity.exp systemtap.pass1-4/parse-semok.exp \
systemtap.pass1-4/semok.exp systemtap.unprivileged/unprivileged_probes.exp \
systemtap.pass1-4/buildok-interactive.exp \
systemtap.onthefly/uprobes_onthefly.exp \
systemtap.onthefly/kprobes_onthefly.exp systemtap.base/sdt.exp \
systemtap.onthefly/hrtimer_onthefly.exp \
systemtap.onthefly/tracepoint_onthefly.exp systemtap.exelib/exelib.exp \
systemtap.pass1-4/semko.exp systemtap.pass1-4/parseko.exp \
systemtap.base/rlimit.exp systemtap.base/tracepoints.exp \
systemtap.base/systemtap-service.exp systemtap.maps/map_hash.exp \
systemtap.base/stmt_rel.exp systemtap.base/library.exp
slow_tests = $(filter $(all_tests),$(all_slow_tests))
regular_tests := $(filter-out $(serial_tests) $(slow_tests) ,$(all_tests))
REGULAR_TEST_TARGETS := $(addprefix installcheck/,$(slow_tests) $(regular_tests))
do-installcheck-parallel: installcheck-serial-tests $(REGULAR_TEST_TARGETS)
@:
installcheck-serial-tests: site.exp
-mv artifacts/__serialtests/systemtap.log artifacts/__serialtests/systemtap.temp1.log 2>/dev/null
-mv artifacts/__serialtests/systemtap.sum artifacts/__serialtests/systemtap.temp1.sum 2>/dev/null
test -z $(serial_tests) || MAKEFLAGS= $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU RUNTESTFLAGS="--outdir=artifacts/__serialtests $(serial_tests) $(RUNTESTFLAGS) $(SKIPTESTS) --tool_opts \'install $(TOOL_OPTS)\'" STAP_PARALLEL=yes
mv artifacts/__serialtests/systemtap.log artifacts/__serialtests/systemtap.temp2.log
mv artifacts/__serialtests/systemtap.sum artifacts/__serialtests/systemtap.temp2.sum
$(SHELL) $(srcdir)/dg-extract-results.sh `find ./artifacts/__serialtests -name 'systemtap.*sum' -print` > artifacts/__serialtests/systemtap.sum
$(SHELL) $(srcdir)/dg-extract-results.sh -L `find ./artifacts/__serialtests -name 'systemtap.*log' -print` > artifacts/__serialtests/systemtap.log
rm -f artifacts/__serialtests/systemtap.temp*
installcheck/%.exp: site.exp
if test -e artifacts/$* ; then \
echo "Using existing test result for $*.exp"; \
else \
mkdir -p artifacts/$* ; \
MAKEFLAGS= $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU RUNTESTFLAGS="--outdir=artifacts/$* $*.exp $(RUNTESTFLAGS) --tool_opts \'install $(TOOL_OPTS)\'" STAP_PARALLEL=yes; \
fi
# In case a test caused kernel panic or stall, followed by the test box reboot
# and testsuite re-run, it will stay unfinished. All other testcases that might
# have been running in parallel with it, are left unfinished too. After the the
# last testsuite re-run, after all the testcases have been executed, unfinished
# testcases should be listed and investigated manually. The "make clean" target
# cleans whole the table entirely.
list-unfinished:
@find . -type f -name systemtap.log | xargs awk '/Running.*testsuite.*exp .../ {tests[$$2]++} /testcase.*testsuite.*completed in.*seconds/ {tests[$$2]++} END {for (key in tests) if (tests[key] != 2) { print key }}'
# $(srcdir)/These values point the test suite to the install tree, and
# are overridden by "make check" from full source/build tree
SYSTEMTAP_RUNTIME=$(DESTDIR)$(pkgdatadir)/runtime
SYSTEMTAP_TAPSET=$(DESTDIR)$(pkgdatadir)/tapset
CRASH_LIBDIR=$(DESTDIR)$(libdir)/systemtap
SYSTEMTAP_PATH=$(DESTDIR)$(bindir)
SYSTEMTAP_SPATH=$(DESTDIR)$(sbindir)
SYSTEMTAP_INCLUDES=$(DESTDIR)$(includedir)
# These values get passed down from the main configure.
PYTHON=@python@
PYEXECDIR=@pyexecdir@
PYTHON3=@python3@
PY3EXECDIR=@py3execdir@
SYSCONFDIR=@sysconfdir@
RUNTESTDEFAULTFLAGS = --tool $$tool --tool_opts \'$(TOOL_OPTS)\' --srcdir $(shell readlink -f $(srcdir))
EXPECT = expect
RUNTEST= env XDG_DATA_DIRS= SYSTEMTAP_SYNC=1 LANG=C SYSTEMTAP_TESTREMOTES=$(TESTREMOTES) SYSTEMTAP_TESTAPPS=$(TESTAPPS) SYSTEMTAP_RUNTIME=$(SYSTEMTAP_RUNTIME) SYSTEMTAP_TAPSET=$(SYSTEMTAP_TAPSET) CRASH_LIBDIR=$(CRASH_LIBDIR) PATH=$(SYSTEMTAP_PATH):$(SYSTEMTAP_SPATH):$$PATH SYSTEMTAP_PATH=$(SYSTEMTAP_PATH) SYSTEMTAP_SPATH=$(SYSTEMTAP_SPATH) SYSTEMTAP_INCLUDES=$(SYSTEMTAP_INCLUDES) PKGLIBDIR=$(pkglibexecdir) PYTHON=$(PYTHON) PYEXECDIR=$(PYEXECDIR) PYTHON3=$(PYTHON3) PY3EXECDIR=$(PY3EXECDIR) SYSCONFDIR=$(SYSCONFDIR) $(srcdir)/execrc runtest
RUNTEST2= env XDG_DATA_DIRS= SYSTEMTAP_SYNC=1 LANG=C SYSTEMTAP_TESTREMOTES=$(TESTREMOTES) SYSTEMTAP_TESTAPPS=$(TESTAPPS) SYSTEMTAP_RUNTIME=$(SYSTEMTAP_RUNTIME) SYSTEMTAP_TAPSET=$(SYSTEMTAP_TAPSET) CRASH_LIBDIR=$(CRASH_LIBDIR) PATH=$(SYSTEMTAP_PATH):$(SYSTEMTAP_SPATH):$$PATH SYSTEMTAP_PATH=$(SYSTEMTAP_PATH) SYSTEMTAP_SPATH=$(SYSTEMTAP_SPATH) SYSTEMTAP_INCLUDES=$(SYSTEMTAP_INCLUDES) PKGLIBDIR=$(pkglibexecdir) PYTHON=$(PYTHON) PYEXECDIR=$(PYEXECDIR) PYTHON3=$(PYTHON3) PY3EXECDIR=$(PY3EXECDIR) SYSCONFDIR=$(SYSCONFDIR) runtest
|