coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] tests: don't make tail's pipe-f2 test take the full 10 seconds


From: Jim Meyering
Subject: [PATCH] tests: don't make tail's pipe-f2 test take the full 10 seconds
Date: Fri, 28 Oct 2011 18:08:54 +0200

I noticed that on a very fast system, the tail-2/pipe-f2 test
was nearly the last one to complete.  Turns out it was taking
10 seconds, when in fact it needs more than 1 only very rarely.
Now, it usually completes in less than 1/3 of a second:

>From 7b901da8c364e8880bc8798f949630c04723ec7b Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Fri, 28 Oct 2011 18:06:44 +0200
Subject: [PATCH] tests: don't make tail's pipe-f2 test take the full 10
 seconds

* tests/tail-2/pipe-f2: Don't always wait 10 seconds.
Before, this test would always wait 10 seconds.
Now, it stops early when it detects that tail -f has written output.
BTW, the race condition that prompted changing the timeout from 1 second
to 10 was that tail -f could be killed by the timeout before producing
any output.
---
 tests/tail-2/pipe-f2 |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/tests/tail-2/pipe-f2 b/tests/tail-2/pipe-f2
index f1ae470..d0d08c9 100755
--- a/tests/tail-2/pipe-f2
+++ b/tests/tail-2/pipe-f2
@@ -24,9 +24,20 @@ mkfifo_or_skip_ fifo
 echo 1 > fifo &
 echo 1 > exp || framework_failure_

-timeout 10 tail -f fifo > out
-test $? = 124 || fail=1
+timeout 10 tail -f fifo > out & pid=$!
+
+check_tail_output()
+{
+  local n_sec="$1"
+  test -s out || { sleep $n_sec; return 1; }
+}
+
+# Wait 6.3s for tail to write something.
+tail_re='inaccessible' retry_delay_ check_tail_output .1 7 || fail=1

 compare out exp || fail=1

+# Kill the still-running tail, or fail if it's gone.
+kill $pid || fail=1
+
 Exit $fail
--
1.7.7.1.476.g9890



reply via email to

[Prev in Thread] Current Thread [Next in Thread]