>From e94b04f65f5da6ba1230c3ab2888952f0adfdfb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Thu, 15 Oct 2015 03:16:50 +0100 Subject: [PATCH] tests: fix a false failure due to a race in a tail test * 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 --- tests/tail-2/follow-stdin.sh | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tests/tail-2/follow-stdin.sh b/tests/tail-2/follow-stdin.sh index f50dd72..ba740ee 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 -- 2.5.0