From 526a057602f7f312443ae4ec0653fec84bca9ff2 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Fri, 4 Sep 2009 21:41:30 +0100 Subject: tests: test old tail -f method even on systems with inotify * src/tail.c (main): Add an undocumented ---disable-inotify option to allow disabling inotify. * tests/tail-2/pid: Run test in both normal and "disable_inotify" modes. * tests/tail-2/tail-n0f: Likewise. * tests/tail-2/wait: Likewise. * tests/tail-2/append-only: Likewise. --- tests/tail-2/append-only | 9 ++++--- tests/tail-2/pid | 46 +++++++++++++++++---------------- tests/tail-2/tail-n0f | 24 +++++++++-------- tests/tail-2/wait | 67 ++++++++++++++++++++++++++---------------------- 4 files changed, 79 insertions(+), 67 deletions(-) (limited to 'tests/tail-2') diff --git a/tests/tail-2/append-only b/tests/tail-2/append-only index 0b4a95958..2d38d4f0f 100755 --- a/tests/tail-2/append-only +++ b/tests/tail-2/append-only @@ -37,9 +37,12 @@ fi fail=0 -sleep 1 & -pid=$! -tail --pid=$pid -f f || fail=1 +for inotify in ---disable-inotify ''; do + sleep 1 & + pid=$! + tail --pid=$pid -f $inotify f || fail=1 +done + chattr -a f 2>/dev/null Exit $fail diff --git a/tests/tail-2/pid b/tests/tail-2/pid index a797666fe..aaf2e01ba 100755 --- a/tests/tail-2/pid +++ b/tests/tail-2/pid @@ -22,32 +22,34 @@ if test "$VERBOSE" = yes; then fi . $srcdir/test-lib.sh +getlimits_ touch here || framework_failure fail=0 -# Use tail itself to create a background process to monitor. -tail -f here & -bg_pid=$! - -# Ensure that tail --pid=PID does not exit when PID is alive. -timeout 1 tail -s.1 -f here --pid=$bg_pid -test $? = 124 || fail=1 - -# Cleanup background process -kill $bg_pid - -# Ensure that tail --pid=PID exits successfully when PID is dead. -# Use an unlikely-to-be-live PID -getlimits_ -timeout 1 tail -s.1 --pid=$PID_T_MAX -f /dev/null -ret=$? -test $ret = 124 && skip_test_ "pid $PID_T_MAX present" -test $ret = 0 || fail=1 - -# Ensure fractional sleep parameter is honored with --pid -timeout 1 tail -s.1 -f /dev/null --pid=$PID_T_MAX -test $? = 124 && fail=1 +for inotify in ---disable-inotify ''; do + # Use tail itself to create a background process to monitor. + tail -f $inotify here & + bg_pid=$! + + # Ensure that tail --pid=PID does not exit when PID is alive. + timeout 1 tail -s.1 -f $inotify here --pid=$bg_pid + test $? = 124 || fail=1 + + # Cleanup background process + kill $bg_pid + + # Ensure that tail --pid=PID exits successfully when PID is dead. + # Use an unlikely-to-be-live PID + timeout 1 tail -s.1 --pid=$PID_T_MAX -f $inotify /dev/null + ret=$? + test $ret = 124 && skip_test_ "pid $PID_T_MAX present" + test $ret = 0 || fail=1 + + # Ensure fractional sleep parameter is honored with --pid + timeout 1 tail -s.1 -f $inotify /dev/null --pid=$PID_T_MAX + test $? = 124 && fail=1 +done Exit $fail diff --git a/tests/tail-2/tail-n0f b/tests/tail-2/tail-n0f index fce7ed16e..ddfbe6645 100755 --- a/tests/tail-2/tail-n0f +++ b/tests/tail-2/tail-n0f @@ -35,17 +35,19 @@ echo anything > nonempty || framework_failure fail=0 -for file in empty nonempty; do - for c_or_n in c n; do - tail --sleep=4 -${c_or_n} 0 -f $file & - pid=$! - sleep .5 - state=$(get_process_status_ $pid) - case $state in - S*) ;; - *) echo $0: process in unexpected state: $state 1>&2; fail=1 ;; - esac - kill $pid +for inotify in ---disable-inotify ''; do + for file in empty nonempty; do + for c_or_n in c n; do + tail --sleep=4 -${c_or_n} 0 -f $inotify $file & + pid=$! + sleep .5 + state=$(get_process_status_ $pid) + case $state in + S*) ;; + *) echo $0: process in unexpected state: $state 1>&2; fail=1 ;; + esac + kill $pid + done done done diff --git a/tests/tail-2/wait b/tests/tail-2/wait index a5f189fe0..62498d5dc 100755 --- a/tests/tail-2/wait +++ b/tests/tail-2/wait @@ -30,43 +30,48 @@ touch k || framework_failure fail=0 -timeout 1 tail -s0.1 -f not_here -test $? = 124 && fail=1 - -if test ! -r unreadable; then # can't test this when root - timeout 1 tail -s0.1 -f unreadable +for inotify in ---disable-inotify ''; do + timeout 1 tail -s0.1 -f $inotify not_here test $? = 124 && fail=1 -fi -timeout 1 tail -s0.1 -f here 2>tail.err -test $? = 124 || fail=1 + if test ! -r unreadable; then # can't test this when root + timeout 1 tail -s0.1 -f $inotify unreadable + test $? = 124 && fail=1 + fi -# `tail -F' must wait in any case. + timeout 1 tail -s0.1 -f $inotify here 2>tail.err + test $? = 124 || fail=1 -timeout 1 tail -s0.1 -F here 2>>tail.err -test $? = 124 || fail=1 + # `tail -F' must wait in any case. -if test ! -r unreadable; then # can't test this when root - timeout 1 tail -s0.1 -F unreadable + timeout 1 tail -s0.1 -F $inotify here 2>>tail.err test $? = 124 || fail=1 -fi -timeout 1 tail -s0.1 -F not_here -test $? = 124 || fail=1 - -test -s tail.err && fail=1 - -tail -s.1 --max-unchanged-stats=2 -F k > tail.out & -pid=$! -sleep .5 -mv k l -sleep .5 -touch k -mv k l -sleep .5 -echo NO >> l -sleep .5 -kill $pid -test -s tail.out && fail=1 + if test ! -r unreadable; then # can't test this when root + timeout 1 tail -s0.1 -F $inotify unreadable + test $? = 124 || fail=1 + fi + + timeout 1 tail -s0.1 -F $inotify not_here + test $? = 124 || fail=1 + + + test -s tail.err && fail=1 + :>tail.err + + + tail -s.1 --max-unchanged-stats=2 -F $inotify k > tail.out & + pid=$! + sleep .5 + mv k l + sleep .5 + touch k + mv k l + sleep .5 + echo NO >> l + sleep .5 + kill $pid + test -s tail.out && fail=1 +done Exit $fail -- cgit v1.2.3-54-g00ecf