racy tests

Jilles Tjoelker jilles at stack.nl
Thu Apr 27 15:29:30 UTC 2017


On Thu, Apr 27, 2017 at 05:47:11AM -0700, Alfred Perlstein wrote:
> Can't something similar to this be done?

> .(05:40:37)(bright at elvis.mu.org)
> ~ % mkfifo derp
> .(05:43:46)(bright at elvis.mu.org)
> ~ % cat derp &
> [1] 59244
> .(05:43:53)(bright at elvis.mu.org)
> ~ % ( pwait $! && echo "$?" > ex_status )&
> [2] 59263
> .(05:44:28)(bright at elvis.mu.org)
> ~ % echo "hi" >> derp && echo "exit status: $(cat ex_status)"
> hi
> [2]  + done       ( pwait $! && echo "$?" > ex_status; )
> [1]  + done       cat derp
> exit status: 0

> Make a fifo, lodge a cat(1) process waiting for data, pwait in the
> background and stuff pwait's status into a file, then unstick the
> cat(1) by writing to the fifo, and then read the exit status from
> pwait from the file?

Fifos are indeed a good idea. They are used various times in the /bin/sh
tests, which should not wait for any sleeps in successful test runs (my
main motivation for this is to be able to run the whole suite in a few
seconds).

In this case, however, the -t option being tested is inherently related
to time. It would be possible to cheat by passing a very long timeout
and cut it short by sending SIGALRM using kill (which depends on the
concrete implementation).

-- 
Jilles Tjoelker


More information about the freebsd-hackers mailing list