coreutils
[Top][All Lists]
Advanced

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

[PATCH] tests: fix races wrt output files of background processes


From: Bernhard Voelker
Subject: [PATCH] tests: fix races wrt output files of background processes
Date: Sun, 10 Jan 2016 01:56:01 +0100

At least the false positive in tail-2/follow-stdin.sh could be seen
on a 4-core i5 system with -j8.  Fix similar cases. too.

* tests/tail-2/follow-stdin.sh: Empty the 'out' file in each iteration.
Otherwise, under heavy system load, 'check_tail_output' would see the
expected output from the previous round before tail would have the
chance to come up in the background.
While at it, move the creation of the 'exp' file out of the loop.
* tests/dd/stats.sh: Empty the output file of the background process
here, too.
* tests/misc/cat-buf.sh: Likewise.
* tests/misc/stdbuf.sh: Likewise.
* tests/tail-2/wait.sh: Likewise.
---
 tests/dd/stats.sh            | 2 ++
 tests/misc/cat-buf.sh        | 1 +
 tests/misc/stdbuf.sh         | 2 ++
 tests/tail-2/follow-stdin.sh | 3 ++-
 tests/tail-2/wait.sh         | 2 +-
 5 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/tests/dd/stats.sh b/tests/dd/stats.sh
index e8bb5fa..182d5e7 100755
--- a/tests/dd/stats.sh
+++ b/tests/dd/stats.sh
@@ -38,6 +38,8 @@ cleanup_()
 }
 
 for open in '' '1'; do
+  > err || framework_failure_
+
   # Run dd with the fullblock iflag to avoid short reads
   # which can be triggered by reception of signals
   dd iflag=fullblock if=/dev/zero of=fifo count=50 bs=5000000 2>err & pid=$!
diff --git a/tests/misc/cat-buf.sh b/tests/misc/cat-buf.sh
index f12bb5b..a6960b5 100755
--- a/tests/misc/cat-buf.sh
+++ b/tests/misc/cat-buf.sh
@@ -35,6 +35,7 @@ cat_buf_1()
 {
   local delay="$1"
 
+  > out || framework_failure_
   dd count=1 if=fifo > out & pid=$!
   (echo 1; sleep $delay; echo 2) | cat -v > fifo
   wait $pid
diff --git a/tests/misc/stdbuf.sh b/tests/misc/stdbuf.sh
index a5331de..7b9aed5 100755
--- a/tests/misc/stdbuf.sh
+++ b/tests/misc/stdbuf.sh
@@ -66,6 +66,7 @@ stdbuf_linebuffer()
   local delay="$1"
 
   printf '1\n' > exp
+  > out || framework_failure_
   dd count=1 if=fifo > out 2> err & pid=$!
   (printf '1\n'; sleep $delay; printf '2\n') | stdbuf -oL uniq > fifo
   wait $pid
@@ -80,6 +81,7 @@ stdbuf_unbuffer()
 
   # Ensure un buffering stdout takes effect
   printf '1\n' > exp
+  > out || framework_failure_
   dd count=1 if=fifo > out 2> err & pid=$!
   (printf '1\n'; sleep $delay; printf '2\n') | stdbuf -o0 uniq > fifo
   wait $pid
diff --git a/tests/tail-2/follow-stdin.sh b/tests/tail-2/follow-stdin.sh
index 120cc3b..a2f1804 100755
--- a/tests/tail-2/follow-stdin.sh
+++ b/tests/tail-2/follow-stdin.sh
@@ -33,9 +33,10 @@ cleanup_() { kill $pid 2>/dev/null && wait $pid; }
 fastpoll='-s.1 --max-unchanged-stats=1'
 
 echo line > in || framework_failure_
+echo line > exp || framework_failure_
 
 for mode in '' '---disable-inotify'; do
-  echo line > exp || framework_failure_
+  > out || framework_failure_
 
   tail $mode -f $fastpoll < in > out 2> err & pid=$!
 
diff --git a/tests/tail-2/wait.sh b/tests/tail-2/wait.sh
index bcb0485..008f9f5 100755
--- a/tests/tail-2/wait.sh
+++ b/tests/tail-2/wait.sh
@@ -72,7 +72,7 @@ if test "$HAVE_INOTIFY"; then
   {
     local delay="$1"
 
-    touch k || framework_failure_
+    > k && > tail.out && > tail.err || framework_failure_
     tail $fastpoll -F $mode k >tail.out 2>tail.err & pid=$!
     sleep $delay
     mv k l
-- 
2.1.4




reply via email to

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