Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Feb 2015 19:21:04 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r278776 - head/bin/pkill/tests
Message-ID:  <201502141921.t1EJL420027008@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Sat Feb 14 19:21:04 2015
New Revision: 278776
URL: https://svnweb.freebsd.org/changeset/base/278776

Log:
  Refactor pkill-j_test to reflect the relevant changes done to pgrep-j_test
  
  r278742:
  
  Simplify jail_name_to_jid and try to be more fault tolerant when scanning for
  the jail ID (poll up to 10 times for the jail IDs to become available)
  
  If the scan fails, the code will fall through and fail as it does with Jenkins
  today
  
  r278636:
  
  Parameterize out the amount of sleep done in each test
  
  Set the value in each test to a different amount to avoid potential
  side-effects with other instances of the test (or lingering processes) still
  being present on the system
  
  r278633:
  
  Refactor the tests
  
  1. `id -u` -> 0 is now only checked once; the entire test script is now skipped
     if this assertion is violated
  2. De-dent whitespace, based on 1.
  3. Only setup the symlink for $sleep once at the top of the script, and tear it
     down once at the bottom of the script

Modified:
  head/bin/pkill/tests/pkill-j_test.sh

Modified: head/bin/pkill/tests/pkill-j_test.sh
==============================================================================
--- head/bin/pkill/tests/pkill-j_test.sh	Sat Feb 14 19:18:56 2015	(r278775)
+++ head/bin/pkill/tests/pkill-j_test.sh	Sat Feb 14 19:21:04 2015	(r278776)
@@ -4,99 +4,90 @@
 jail_name_to_jid()
 {
 	local check_name="$1"
-	(
-		line="$(jls -n 2> /dev/null | grep  name=$check_name  )"
-		for nv in $line; do
-			local name="${nv%=*}"
-			if [ "${name}" = "jid" ]; then
-				eval $nv
-				echo $jid
-				break
-			fi
-		done
-	)
+	jls -j "$check_name" -s 2>/dev/null | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g'
 }
 
 base=pkill_j_test
 
+if [ `id -u` -ne 0 ]; then
+	echo "1..0 # skip Test needs uid 0."
+	exit 0
+fi
+
 echo "1..3"
 
+sleep=$(pwd)/sleep.txt
+ln -sf /bin/sleep $sleep
+
 name="pkill -j <jid>"
-if [ `id -u` -eq 0 ]; then
-	sleep=$(pwd)/sleep.txt
-	ln -sf /bin/sleep $sleep
-        jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
-            command=daemon -p ${PWD}/${base}_1_1.pid $sleep 5 &
+sleep_amount=5
+jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
+    command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount &
+
+jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
+    command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
 
-        jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
-            command=daemon -p ${PWD}/${base}_1_2.pid $sleep 5 &
+$sleep $sleep_amount &
 
-	$sleep 5 &
-	sleep 0.5
+for i in `seq 1 10`; do
 	jid1=$(jail_name_to_jid ${base}_1_1)
 	jid2=$(jail_name_to_jid ${base}_1_2)
 	jid="${jid1},${jid2}"
-	if pkill -f -j "$jid" $sleep && sleep 0.5 &&
-	    ! -f ${PWD}/${base}_1_1.pid &&
-	    ! -f ${PWD}/${base}_1_2.pid ; then
-		echo "ok 1 - $name"
-	else
-		echo "not ok 1 - $name"
-	fi 2>/dev/null
-	rm -f $sleep
-	[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
-	[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
-	wait
+	case "$jid" in
+	[0-9]+,[0-9]+)
+		break
+		;;
+	esac
+	sleep 0.1
+done
+
+if pkill -f -j "$jid" $sleep && sleep 0.5 &&
+    ! -f ${PWD}/${base}_1_1.pid &&
+    ! -f ${PWD}/${base}_1_2.pid ; then
+	echo "ok 1 - $name"
 else
-	echo "ok 1 - $name # skip Test needs uid 0."
-fi
+	echo "not ok 1 - $name"
+fi 2>/dev/null
+[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
+[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
+wait
 
 name="pkill -j any"
-if [ `id -u` -eq 0 ]; then
-	sleep=$(pwd)/sleep.txt
-	ln -sf /bin/sleep $sleep
-        jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
-            command=daemon -p ${PWD}/${base}_2_1.pid $sleep 5 &
-
-        jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
-            command=daemon -p ${PWD}/${base}_2_2.pid $sleep 5 &
-
-	$sleep 5 &
-	sleep 0.5
-	chpid3=$!
-	if pkill -f -j any $sleep && sleep 0.5 &&
-	    [ ! -f ${PWD}/${base}_2_1.pid -a
-	      ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then
-		echo "ok 2 - $name"
-	else
-		echo "not ok 2 - $name"
-	fi 2>/dev/null
-	rm -f $sleep
-	[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
-	[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
-	wait
+sleep_amount=6
+jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
+    command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
+
+jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
+    command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
+
+$sleep $sleep_amount &
+chpid3=$!
+sleep 0.5
+if pkill -f -j any $sleep && sleep 0.5 &&
+    [ ! -f ${PWD}/${base}_2_1.pid -a
+      ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then
+	echo "ok 2 - $name"
 else
-	echo "ok 2 - $name # skip Test needs uid 0."
-fi
+	echo "not ok 2 - $name"
+fi 2>/dev/null
+[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
+[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
+wait
 
 name="pkill -j none"
-if [ `id -u` -eq 0 ]; then
-	sleep=$(pwd)/sleep.txt
-	ln -sf /bin/sleep $sleep
-	daemon -p ${PWD}/${base}_3_1.pid $sleep 5
-	jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
-            command=daemon -p ${PWD}/${base}_3_2.pid $sleep 5 &
-	sleep 1
-	if pkill -f -j none "$sleep 5" && sleep 1 &&
-	    [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
-		echo "ok 3 - $name"
-	else
-		ls ${PWD}/*.pid
-		echo "not ok 3 - $name"
-	fi 2>/dev/null
-	rm -f $sleep
-	[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid)
-	[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid)
+sleep_amount=7
+daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount
+jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
+    command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
+sleep 1
+if pkill -f -j none "$sleep $sleep_amount" && sleep 1 &&
+    [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
+	echo "ok 3 - $name"
 else
-	echo "ok 3 - $name # skip Test needs uid 0."
-fi
+	ls ${PWD}/*.pid
+	echo "not ok 3 - $name"
+fi 2>/dev/null
+[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid)
+[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid)
+
+rm -f $sleep



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502141921.t1EJL420027008>