summaryrefslogtreecommitdiffstats
path: root/tools/regression/usr.bin/pkill
diff options
context:
space:
mode:
authoryar <yar@FreeBSD.org>2006-11-23 11:55:17 +0000
committeryar <yar@FreeBSD.org>2006-11-23 11:55:17 +0000
commitaf6cce5172606f7b47cb3d610fc2b8c9fa08b79c (patch)
tree8ccb68474bfd6de2bc2eaba6ee731a4e44618f92 /tools/regression/usr.bin/pkill
parent75d7b09c83861e14ce15d3c488d180f094455382 (diff)
downloadFreeBSD-src-af6cce5172606f7b47cb3d610fc2b8c9fa08b79c.zip
FreeBSD-src-af6cce5172606f7b47cb3d610fc2b8c9fa08b79c.tar.gz
Fix and extend the -j option to pkill/pgrep WRT the jail
wildcard specifications. Earlier the only wildcard syntax was "-j 0" for "any jail". There were at least two shortcomings in it: First, jail ID 0 was abused; it meant "no jail" in other utils, e.g., ps(1). Second, it was impossible to match processed not in jail, which could be useful to rc.d developers. Therefore a new syntax is introduced: "-j any" means any jail while "-j none" means out of jail. The old syntax is preserved for compatibility, but now it's deprecated because it's limited and confusing. Update the respective regression tests. While I'm here, make the tests more complex but sensitive: Start several processes, some in jail and some out of jail, so we can detect that only the right processes are killed by pkill or matched by pgrep. Reviewed by: gad, pjd MFC after: 1 week
Diffstat (limited to 'tools/regression/usr.bin/pkill')
-rw-r--r--tools/regression/usr.bin/pkill/pgrep-j.t52
-rw-r--r--tools/regression/usr.bin/pkill/pkill-j.t70
2 files changed, 87 insertions, 35 deletions
diff --git a/tools/regression/usr.bin/pkill/pgrep-j.t b/tools/regression/usr.bin/pkill/pgrep-j.t
index 37c1e73..861d575 100644
--- a/tools/regression/usr.bin/pkill/pgrep-j.t
+++ b/tools/regression/usr.bin/pkill/pgrep-j.t
@@ -3,43 +3,73 @@
base=`basename $0`
-echo "1..2"
+echo "1..3"
name="pgrep -j <jid>"
if [ `id -u` -eq 0 ]; then
sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
ln -sf /bin/sleep $sleep
- jail / temp 127.0.0.1 $sleep 5 &
- sleep 0.3
+ jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
- jid=`jls | egrep '127\.0\.0\.1.*temp.*\/' | awk '{print $1}'`
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
pid=`pgrep -f -j $jid $sleep`
if [ "$pid" = "$chpid" ]; then
echo "ok 1 - $name"
else
echo "not ok 1 - $name"
fi
- kill $chpid
+ kill $chpid $chpid2 $chpid3
rm -f $sleep
else
echo "ok 1 - $name # skip Test needs uid 0."
fi
-name="pgrep -j 0"
+name="pgrep -j any"
if [ `id -u` -eq 0 ]; then
sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
ln -sf /bin/sleep $sleep
- jail / temp 127.0.0.1 $sleep 5 &
- sleep 0.3
+ jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
- pid=`pgrep -f -j 0 $sleep`
- if [ "$pid" = "$chpid" ]; then
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ pids=`pgrep -f -j any $sleep | sort`
+ refpids=`{ echo $chpid; echo $chpid2; } | sort`
+ if [ "$pids" = "$refpids" ]; then
echo "ok 2 - $name"
else
echo "not ok 2 - $name"
fi
- kill $chpid
+ kill $chpid $chpid2 $chpid3
rm -f $sleep
else
echo "ok 2 - $name # skip Test needs uid 0."
fi
+
+name="pgrep -j none"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ $sleep 5 &
+ chpid=$!
+ jail / $base 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ sleep 0.5
+ pid=`pgrep -f -j none $sleep`
+ if [ "$pid" = "$chpid" ]; then
+ echo "ok 3 - $name"
+ else
+ echo "not ok 3 - $name"
+ fi
+ kill $chpid $chpid2
+ rm -f $sleep
+else
+ echo "ok 3 - $name # skip Test needs uid 0."
+fi
diff --git a/tools/regression/usr.bin/pkill/pkill-j.t b/tools/regression/usr.bin/pkill/pkill-j.t
index 00393f1..5cb03115 100644
--- a/tools/regression/usr.bin/pkill/pkill-j.t
+++ b/tools/regression/usr.bin/pkill/pkill-j.t
@@ -3,47 +3,69 @@
base=`basename $0`
-echo "1..2"
+echo "1..3"
name="pkill -j <jid>"
if [ `id -u` -eq 0 ]; then
sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
ln -sf /bin/sleep $sleep
- jail / temp 127.0.0.1 $sleep 5 &
- sleep 0.3
- jid=`jls | egrep '127\.0\.0\.1.*temp.*\/' | awk '{print $1}'`
- pkill -f -j $jid $sleep
- ec=$?
- case $ec in
- 0)
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
+ if pkill -f -j $jid $sleep && sleep 0.5 &&
+ ! kill $chpid && kill $chpid2 $chpid3; then
echo "ok 1 - $name"
- ;;
- *)
+ else
echo "not ok 1 - $name"
- ;;
- esac
+ fi 2>/dev/null
rm -f $sleep
else
echo "ok 1 - $name # skip Test needs uid 0."
fi
-name="pkill -j 0"
+name="pkill -j any"
if [ `id -u` -eq 0 ]; then
sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
ln -sf /bin/sleep $sleep
- jail / temp 127.0.0.1 $sleep 5 &
- sleep 0.3
- pkill -f -j 0 $sleep
- ec=$?
- case $ec in
- 0)
+ jail / $base-1 127.0.0.1 $sleep 5 &
+ chpid=$!
+ jail / $base-2 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ $sleep 5 &
+ chpid3=$!
+ sleep 0.5
+ if pkill -f -j any $sleep && sleep 0.5 &&
+ ! kill $chpid && ! kill $chpid2 && kill $chpid3; then
echo "ok 2 - $name"
- ;;
- *)
+ else
echo "not ok 2 - $name"
- ;;
- esac
+ fi 2>/dev/null
rm -f $sleep
else
- echo "ok 1 - $name # skip Test needs uid 0."
+ echo "ok 2 - $name # skip Test needs uid 0."
+fi
+
+name="pkill -j none"
+if [ `id -u` -eq 0 ]; then
+ sleep=`mktemp /tmp/$base.XXXXXX` || exit 1
+ ln -sf /bin/sleep $sleep
+ $sleep 5 &
+ chpid=$!
+ jail / $base 127.0.0.1 $sleep 5 &
+ chpid2=$!
+ sleep 0.5
+ if pkill -f -j none $sleep && sleep 0.5 &&
+ ! kill $chpid && kill $chpid2; then
+ echo "ok 3 - $name"
+ else
+ echo "not ok 3 - $name"
+ fi 2>/dev/null
+ rm -f $sleep
+else
+ echo "ok 3 - $name # skip Test needs uid 0."
fi
OpenPOWER on IntegriCloud