Jim Meyering wrote: > Hi Pádraig, > > On my 6th run of "make check", the cat-buf test failed. > It's an inherently racy test. > > If the dd process is starved until "2" is printed, > it will end up printing both lines to "out".
Hmm. 0.2s was too short between writes so. I've bumped it up to 0.5s since 0.2 failed so infrequently. I've also changed to just skip on possible failure. thanks, Pádraig.
>From 047dae65f432eedec43639afcb9075ea42358c00 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?P=C3=A1draig=20Brady?= <[email protected]> Date: Mon, 7 Sep 2009 23:50:19 +0100 Subject: [PATCH] tests: address a race condition in misc/cat-buf * tests/misc/cat-buf: Increase the delay between writes to decrease the chance that dd will read both at once. Since the test is inherently racy, print a warning via skip_test_ rather than failing outright. Reported by Jim Meyering. --- tests/misc/cat-buf | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/misc/cat-buf b/tests/misc/cat-buf index d37f9f4..9ca2d7b 100755 --- a/tests/misc/cat-buf +++ b/tests/misc/cat-buf @@ -30,12 +30,17 @@ fi # write separately. mkfifo fifo || framework_failure +fail=0 + echo 1 > exp dd count=1 if=fifo > out & -(echo 1; sleep .2; echo 2) | cat -v > fifo +(echo 1; sleep .5; echo 2) | cat -v > fifo wait # for dd to complete -compare out exp || fail=1 +# Though unlikely, this test may fail because dd was starved +# between opening the fifo and reading from it, rather than +# the failure we're testing where cat doesn't output immediately. +compare out exp || skip_test_ "possible test failure. Please verify." Exit $fail -- 1.6.2.5
