svn commit: r352492 - stable/11/usr.bin/procstat/tests
Jilles Tjoelker
jilles at FreeBSD.org
Wed Sep 18 19:28:18 UTC 2019
Author: jilles
Date: Wed Sep 18 19:28:17 2019
New Revision: 352492
URL: https://svnweb.freebsd.org/changeset/base/352492
Log:
MFC r351819: procstat/tests: Fix flakiness by waiting for program to start
Some of the procstat tests start a program "while1" and examine the process
using procstat, but did not wait properly for it to start (kill -0 will
succeed immediately after the child process has been created).
Instead, have "while1" write something when it starts, and use a fifo to
wait for that.
PR: 233587, 233588
Modified:
stable/11/usr.bin/procstat/tests/procstat_test.sh
stable/11/usr.bin/procstat/tests/while1.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/usr.bin/procstat/tests/procstat_test.sh
==============================================================================
--- stable/11/usr.bin/procstat/tests/procstat_test.sh Wed Sep 18 19:21:20 2019 (r352491)
+++ stable/11/usr.bin/procstat/tests/procstat_test.sh Wed Sep 18 19:28:17 2019 (r352492)
@@ -25,7 +25,6 @@
# $FreeBSD$
#
-MAX_TRIES=20
PROG_PID=
PROG_PATH=$(atf_get_srcdir)/while1
@@ -37,16 +36,13 @@ start_program()
PROG_COMM=while1
PROG_PATH=$(atf_get_srcdir)/$PROG_COMM
- $PROG_PATH $* &
+ mkfifo wait_for_start || atf_fail "mkfifo"
+ $PROG_PATH $* >wait_for_start &
PROG_PID=$!
- try=0
- while [ $try -lt $MAX_TRIES ] && ! kill -0 $PROG_PID; do
- sleep 0.5
- : $(( try += 1 ))
- done
- if [ $try -ge $MAX_TRIES ]; then
- atf_fail "Polled for program start $MAX_TRIES tries and failed"
+ if ! read dummy <wait_for_start; then
+ atf_fail "Program did not start properly"
fi
+ rm wait_for_start
}
atf_test_case binary_info
Modified: stable/11/usr.bin/procstat/tests/while1.c
==============================================================================
--- stable/11/usr.bin/procstat/tests/while1.c Wed Sep 18 19:21:20 2019 (r352491)
+++ stable/11/usr.bin/procstat/tests/while1.c Wed Sep 18 19:28:17 2019 (r352492)
@@ -33,7 +33,8 @@ int
main(void)
{
+ if (write(STDOUT_FILENO, "started\n", 8) != 8)
+ abort();
for (;;)
- usleep(100);
- exit(1);
+ pause();
}
More information about the svn-src-all
mailing list