diff options
author | Bernhard Voelker <mail@bernhard-voelker.de> | 2016-01-10 01:44:04 +0100 |
---|---|---|
committer | Bernhard Voelker <mail@bernhard-voelker.de> | 2016-01-10 01:51:27 +0100 |
commit | d44ae88199ebf44fe721c06621a7ffc442fa34be (patch) | |
tree | b4b9d5590a1889dcee548528881a7b6c82762461 | |
parent | 3d7b822e4a660e6804963d8e5ac0cdca2aeb3497 (diff) | |
download | coreutils-d44ae88199ebf44fe721c06621a7ffc442fa34be.tar.xz |
tests: fix races wrt output files of background processes
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.
-rwxr-xr-x | tests/dd/stats.sh | 2 | ||||
-rwxr-xr-x | tests/misc/cat-buf.sh | 1 | ||||
-rwxr-xr-x | tests/misc/stdbuf.sh | 2 | ||||
-rwxr-xr-x | tests/tail-2/follow-stdin.sh | 3 | ||||
-rwxr-xr-x | 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 e8bb5fa27..182d5e7e7 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 f12bb5bc1..a6960b566 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 a5331deff..7b9aed503 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 120cc3bbb..a2f180428 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 bcb04858a..008f9f55e 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 |