summaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/ChangeLog8
-rw-r--r--testsuite/Makefile.am4
-rw-r--r--testsuite/Makefile.in4
-rw-r--r--testsuite/lib/systemtap.exp50
4 files changed, 60 insertions, 6 deletions
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog
index 67d741e5..f28f05d7 100644
--- a/testsuite/ChangeLog
+++ b/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2008-08-08 Dave Brolley <brolley@redhat.com>
+
+ * lib/systemtap.exp (setup_systemtap_environment): If use_server_p,
+ start or find a systemtap server.
+ (systemtap_exit): If we started a server, stop it.
+ * Makefile.am (EXTRA_SYSTEMTAP_PATH): Removed.
+ (EXTRA_TOOL_OPTS): Removed.
+ * Makefile.in: Regenerated.
2008-08-03 Wenji Huang <wenji.huang@oracle.com>
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 03c70cb6..6daef3f6 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -13,7 +13,7 @@ clean-local:
DEJAZILLA=@dejazilla@
-TOOL_OPTS=$(EXTRA_TOOL_OPTS)
+TOOL_OPTS=
# 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
@@ -40,7 +40,7 @@ SYSTEMTAP_RUNTIME=$(DESTDIR)$(pkgdatadir)/runtime
SYSTEMTAP_TAPSET=$(DESTDIR)$(pkgdatadir)/tapset
LD_LIBRARY_PATH=$(DESTDIR)$(libdir)/systemtap
CRASH_LIBDIR=$(DESTDIR)$(libdir)/systemtap
-SYSTEMTAP_PATH=$(EXTRA_SYSTEMTAP_PATH):$(DESTDIR)$(bindir)
+SYSTEMTAP_PATH=$(DESTDIR)$(bindir)
RUNTESTDEFAULTFLAGS = --tool $$tool --tool_opts \'$(TOOL_OPTS)\' --srcdir $$srcdir
EXPECT = expect
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index cc23aed4..9c708bc9 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -134,7 +134,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = dejagnu
DEJAZILLA = @dejazilla@
-TOOL_OPTS = $(EXTRA_TOOL_OPTS)
+TOOL_OPTS =
SRCDIR = $(shell cd $(srcdir); pwd)
EXTRA_DIST = execrc config lib systemtap \
parseok parseko semok semko transok transko buildok buildok \
@@ -149,7 +149,7 @@ SYSTEMTAP_RUNTIME = $(DESTDIR)$(pkgdatadir)/runtime
SYSTEMTAP_TAPSET = $(DESTDIR)$(pkgdatadir)/tapset
LD_LIBRARY_PATH = $(DESTDIR)$(libdir)/systemtap
CRASH_LIBDIR = $(DESTDIR)$(libdir)/systemtap
-SYSTEMTAP_PATH = $(EXTRA_SYSTEMTAP_PATH):$(DESTDIR)$(bindir)
+SYSTEMTAP_PATH = $(DESTDIR)$(bindir)
RUNTESTDEFAULTFLAGS = --tool $$tool --tool_opts \'$(TOOL_OPTS)\' --srcdir $$srcdir
EXPECT = expect
RUNTEST = "env SYSTEMTAP_RUNTIME=$(SYSTEMTAP_RUNTIME) SYSTEMTAP_TAPSET=$(SYSTEMTAP_TAPSET) LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) CRASH_LIBDIR=$(CRASH_LIBDIR) PATH=$(SYSTEMTAP_PATH):$$PATH $(srcdir)/execrc runtest"
diff --git a/testsuite/lib/systemtap.exp b/testsuite/lib/systemtap.exp
index db5c1587..8b533303 100644
--- a/testsuite/lib/systemtap.exp
+++ b/testsuite/lib/systemtap.exp
@@ -37,7 +37,7 @@ proc print_systemtap_version {} {
proc setup_systemtap_environment {} {
- global srcdir prefix env
+ global srcdir prefix env server_pid
# need an absolute SRCDIR for the top-level src/ tree
# XXX: or, we could change nearby uses of ${SRCDIR}/testsuite to ${SRCDIR}
@@ -51,6 +51,41 @@ proc setup_systemtap_environment {} {
# make check and sudo make check don't clobber each other.
set env(SYSTEMTAP_DIR) [exec pwd]/.systemtap-[exec whoami]
+ # Find or start a systemtap server, if requested.
+ if {[use_server_p]} then {
+ print "Testing using a systemtap server"
+
+ # Server management scripts are installed if this is an install test, otherwise
+ # in the source directory. Make sure they are on the $PATH.
+ if {! [installtest_p]} then {
+ set env(PATH) "$srcdir/..:$env(PATH)"
+ }
+
+ # Try to find or start the server.
+ set server_pid [exec stap-find-or-start-server]
+ if { $server_pid == -1 } then {
+ print "Cannot find or start a systemtap server"
+ set server_pid 0
+ # TODO: How do we abort here?
+ } elseif { $server_pid == 0 } then {
+ print "A compatible systemtap server is already available"
+ } else {
+ print "Started a systemtap server as PID==$server_pid"
+ }
+
+ # Make a copy of 'stap-client' as 'stap' and make sure it's at the
+ # beginning of the $PATH. Do this after starting the server so that
+ # The server does not call this instance of 'stap'
+ set client_path [exec pwd]/net
+ exec /bin/mkdir -p $client_path
+ if {[installtest_p]} then {
+ exec /bin/cp -p [exec which stap-client] $client_path/stap
+ } else {
+ exec /bin/cp -p $srcdir/../stap-client $client_path/stap
+ }
+ set env(PATH) "$client_path:$env(PATH)"
+ }
+
# PATH, SYSTEMTAP_TAPSET, SYSTEMTAP_RUNTIME, LD_LIBRARY_PATH are already set.
foreach var {PATH STAP SRCDIR SYSTEMTAP_TAPSET SYSTEMTAP_RUNTIME SYSTEMTAP_DIR LD_LIBRARY_PATH} {
if [info exists env($var)] {
@@ -84,7 +119,18 @@ get_system_info
proc systemtap_init {args} {}
proc systemtap_version {} {}
-proc systemtap_exit {} {}
+
+proc systemtap_exit {} {
+ global server_pid
+
+ # Stop the stap server, if we started it.
+ if {[use_server_p]} then {
+ if { $server_pid != 0 } then {
+ print "Stopping the systemtap server with PID==$server_pid"
+ exec stap-stop-server $server_pid
+ }
+ }
+}
proc stap_run_batch {args} {