From: Pádraig Brady
Date: Thu, 15 Oct 2015 02:16:50 +0000 (+0100) Subject: tests: avoid false failure in a tail test under load X-Git-Tag: v8.25~126 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0458701041d89be7a55a7575b172621ac977aec5;p=thirdparty%2Fcoreutils.git tests: avoid false failure in a tail test under load * tests/tail-2/follow-stdin.sh: Use the standard tail testing framework to avoid the race seen under very high load, and also test the non inotify case. Reported by Jim Meyering --- diff --git a/tests/tail-2/follow-stdin.sh b/tests/tail-2/follow-stdin.sh index f50dd726e8..ba740eeea8 100755 --- a/tests/tail-2/follow-stdin.sh +++ b/tests/tail-2/follow-stdin.sh @@ -19,18 +19,34 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ tail -echo line > exp || framework_failure_ +check_tail_output() +{ + local delay="$1" + grep "$tail_re" out || + { sleep $delay; return 1; } +} + +# Terminate any background tail process +cleanup_() { kill $pid 2>/dev/null && wait $pid; } + +# Speedup the non inotify case +fastpoll='-s.1 --max-unchanged-stats=1' + echo line > in || framework_failure_ -timeout 1 tail -f < in > out 2> err +for mode in '' '---disable-inotify'; do + echo line > exp || framework_failure_ + + tail $mode -f $fastpoll < in > out 2> err & pid=$! -# tail from coreutils-7.5 would fail -test $? = 124 || fail=1 + # Wait up to 12.7s for output to appear: + tail_re='line' retry_delay_ check_tail_output .1 7 || + { echo "$0: a: unexpected delay?"; cat out; fail=1; } -# Ensure there was no error output. -compare /dev/null err || fail=1 + # Ensure there was no error output. + compare /dev/null err || fail=1 -# Ensure there was -compare exp out || fail=1 + cleanup_ +done Exit $fail