Run each test using a wrapper that does all necessary timeout checks.
* tests/run.sh: New file.
* tests/Makefile.am (EXTRA_DIST, LOG_COMPILER): Add it.
* tests/init.sh (check_strace, check_timeout): Remove.
* tests/detach-stopped: Update callers.
* tests/net: Likewise.
* tests/ptrace_setoptions: Likewise.
* tests/qual_syscall: Likewise.
* tests/stat: Likewise.
* tests/strace-f: Likewise.
TESTS = ptrace_setoptions strace-f qual_syscall stat net
-EXTRA_DIST = init.sh $(TESTS)
+LOG_COMPILER = $(srcdir)/run.sh
+
+EXTRA_DIST = init.sh run.sh $(TESTS)
CLEANFILES = $(TESTS:=.tmp)
framework_skip_ "$* is not available"
}
-check_strace()
-{
- STRACE=${*:-../strace}
- $STRACE -V > /dev/null ||
- framework_failure_ "$STRACE is not available"
-}
-
-timeout_duration=60
-check_timeout()
-{
- TIMEOUT="timeout -s 9 $timeout_duration"
- $TIMEOUT true > /dev/null 2>&1 ||
- TIMEOUT=
-}
+: "${STRACE:=../strace}"
+: "${TIMEOUT_DURATION:=60}"
. "${srcdir=.}/init.sh"
-check_strace
-check_timeout
check_prog grep
check_prog rm
rm -f $LOG.*
-$TIMEOUT ./net-accept-connect ||
+./net-accept-connect ||
fail_ 'net-accept-connect failed'
args="-tt -ff -o $LOG -enetwork ./net-accept-connect"
-$TIMEOUT $STRACE $args ||
+$STRACE $args ||
fail_ "strace $args failed"
"$srcdir"/../strace-log-merge $LOG > $LOG || {
*) skip_ 'The kernel is not Linux 2.6.* or newer' ;;
esac
-check_strace
-check_timeout
+$STRACE -df -enone / > /dev/null 2> $LOG
+grep -F -x 'ptrace_setoptions = 0xe' $LOG > /dev/null || {
+ cat $LOG
+ fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACECLONE support'
+}
-$TIMEOUT $STRACE -df -enone / 2>&1 |
- grep -F -x 'ptrace_setoptions = 0xe' > /dev/null ||
- fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACECLONE support'
+grep -F -x 'ptrace_setoptions = 0x1f' $LOG > /dev/null || {
+ cat $LOG
+ fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
+}
-$TIMEOUT $STRACE -df -enone / 2>&1 |
- grep -F -x 'ptrace_setoptions = 0x1f' > /dev/null ||
- fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
-
-$TIMEOUT $STRACE -d -enone / 2>&1 |
- grep -F -x 'ptrace_setoptions = 0x11' > /dev/null ||
- fail_ 'strace failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
+$STRACE -d -enone / > /dev/null 2> $LOG
+grep -F -x 'ptrace_setoptions = 0x11' $LOG > /dev/null || {
+ cat $LOG
+ fail_ 'strace failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support'
+}
. "${srcdir=.}/init.sh"
-check_strace
-check_timeout
check_prog ls
check_prog grep
-$TIMEOUT $STRACE -e execve ls > /dev/null 2> $LOG &&
+$STRACE -e execve ls > /dev/null 2> $LOG &&
grep '^execve(' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -e execve does not work'; }
LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
{ cat $LOG; fail_ 'strace -e execve does not work properly'; }
-$TIMEOUT $STRACE -e trace=process ls > /dev/null 2> $LOG &&
+$STRACE -e trace=process ls > /dev/null 2> $LOG &&
grep '^execve(' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -e trace=process does not work'; }
--- /dev/null
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+$STRACE -V > /dev/null ||
+ framework_failure_ "$STRACE is not available"
+
+TIMEOUT="timeout -s 9 $TIMEOUT_DURATION"
+$TIMEOUT true > /dev/null 2>&1 ||
+ TIMEOUT=
+
+exec $TIMEOUT "$@"
. "${srcdir=.}/init.sh"
-check_strace
-check_timeout
check_prog dd
check_prog find
check_prog grep
{ cat $LOG; framework_skip_ 'failed to create a large sparse file'; }
rm -f sample
-$TIMEOUT $STRACE -edesc $truncate_cmd 2>&1 > /dev/null 2> $LOG &&
+$STRACE -edesc $truncate_cmd 2>&1 > /dev/null 2> $LOG &&
LC_ALL=C grep -E -x 'ftruncate(64)?\(1, 46118400000\) += 0' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -edesc failed to trace ftruncate/ftruncate64 properly'; }
LC_ALL=C grep -E -x 'lseek\(1, 46118400000, SEEK_CUR\) += 46118400000|_llseek\(1, 46118400000, \[46118400000\], SEEK_CUR\) += 0' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -edesc failed to trace lseek/_llseek properly'; }
-$TIMEOUT $STRACE -efile find -L sample > /dev/null 2> $LOG &&
+$STRACE -efile find -L sample > /dev/null 2> $LOG &&
LC_ALL=C grep -E -x 'stat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, 0\) += 0' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -efile failed to trace stat/stat64 properly'; }
-$TIMEOUT $STRACE -efile find sample > /dev/null 2> $LOG &&
+$STRACE -efile find sample > /dev/null 2> $LOG &&
LC_ALL=C grep -E -x 'lstat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, AT_SYMLINK_NOFOLLOW\) += 0' $LOG > /dev/null ||
{ cat $LOG; fail_ 'strace -efile failed to trace fstatat/fstatat64 properly'; }
. "${srcdir=.}/init.sh"
-check_strace
-check_timeout
time=/usr/bin/time
check_prog $time
-$TIMEOUT $STRACE -f $time /bin/ls > $LOG 2>&1 ||
+$STRACE -f $time /bin/ls > $LOG 2>&1 ||
{ cat $LOG; fail_ 'strace -f does not work'; }