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