xref: /freebsd/bin/pkill/tests/pkill-j_test.sh (revision bacc28cea1ac3a8f9837f012dd582a67f57830e6)
165c3cfc1SJulio Merino#!/bin/sh
265c3cfc1SJulio Merino# $FreeBSD$
365c3cfc1SJulio Merino
46677932eSCraig Rodriguesjail_name_to_jid()
56677932eSCraig Rodrigues{
66677932eSCraig Rodrigues	local check_name="$1"
7*bacc28ceSEnji Cooper	jls -j "$check_name" -s 2>/dev/null | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g'
86677932eSCraig Rodrigues}
96677932eSCraig Rodrigues
106677932eSCraig Rodriguesbase=pkill_j_test
1165c3cfc1SJulio Merino
12*bacc28ceSEnji Cooperif [ `id -u` -ne 0 ]; then
13*bacc28ceSEnji Cooper	echo "1..0 # skip Test needs uid 0."
14*bacc28ceSEnji Cooper	exit 0
15*bacc28ceSEnji Cooperfi
16*bacc28ceSEnji Cooper
1765c3cfc1SJulio Merinoecho "1..3"
1865c3cfc1SJulio Merino
1965c3cfc1SJulio Merinosleep=$(pwd)/sleep.txt
2065c3cfc1SJulio Merinoln -sf /bin/sleep $sleep
21*bacc28ceSEnji Cooper
22*bacc28ceSEnji Coopername="pkill -j <jid>"
23*bacc28ceSEnji Coopersleep_amount=5
246677932eSCraig Rodriguesjail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
25*bacc28ceSEnji Cooper    command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount &
266677932eSCraig Rodrigues
276677932eSCraig Rodriguesjail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
28*bacc28ceSEnji Cooper    command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
296677932eSCraig Rodrigues
30*bacc28ceSEnji Cooper$sleep $sleep_amount &
31*bacc28ceSEnji Cooper
32*bacc28ceSEnji Cooperfor i in `seq 1 10`; do
336677932eSCraig Rodrigues	jid1=$(jail_name_to_jid ${base}_1_1)
346677932eSCraig Rodrigues	jid2=$(jail_name_to_jid ${base}_1_2)
356677932eSCraig Rodrigues	jid="${jid1},${jid2}"
36*bacc28ceSEnji Cooper	case "$jid" in
37*bacc28ceSEnji Cooper	[0-9]+,[0-9]+)
38*bacc28ceSEnji Cooper		break
39*bacc28ceSEnji Cooper		;;
40*bacc28ceSEnji Cooper	esac
41*bacc28ceSEnji Cooper	sleep 0.1
42*bacc28ceSEnji Cooperdone
43*bacc28ceSEnji Cooper
446677932eSCraig Rodriguesif pkill -f -j "$jid" $sleep && sleep 0.5 &&
456677932eSCraig Rodrigues    ! -f ${PWD}/${base}_1_1.pid &&
466677932eSCraig Rodrigues    ! -f ${PWD}/${base}_1_2.pid ; then
4765c3cfc1SJulio Merino	echo "ok 1 - $name"
4865c3cfc1SJulio Merinoelse
4965c3cfc1SJulio Merino	echo "not ok 1 - $name"
5065c3cfc1SJulio Merinofi 2>/dev/null
516677932eSCraig Rodrigues[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
526677932eSCraig Rodrigues[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
536677932eSCraig Rodrigueswait
5465c3cfc1SJulio Merino
5565c3cfc1SJulio Merinoname="pkill -j any"
56*bacc28ceSEnji Coopersleep_amount=6
576677932eSCraig Rodriguesjail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
58*bacc28ceSEnji Cooper    command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
596677932eSCraig Rodrigues
606677932eSCraig Rodriguesjail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
61*bacc28ceSEnji Cooper    command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
626677932eSCraig Rodrigues
63*bacc28ceSEnji Cooper$sleep $sleep_amount &
646677932eSCraig Rodrigueschpid3=$!
65*bacc28ceSEnji Coopersleep 0.5
6665c3cfc1SJulio Merinoif pkill -f -j any $sleep && sleep 0.5 &&
676677932eSCraig Rodrigues    [ ! -f ${PWD}/${base}_2_1.pid -a
686677932eSCraig Rodrigues      ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then
6965c3cfc1SJulio Merino	echo "ok 2 - $name"
7065c3cfc1SJulio Merinoelse
7165c3cfc1SJulio Merino	echo "not ok 2 - $name"
7265c3cfc1SJulio Merinofi 2>/dev/null
736677932eSCraig Rodrigues[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
746677932eSCraig Rodrigues[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
756677932eSCraig Rodrigueswait
7665c3cfc1SJulio Merino
7765c3cfc1SJulio Merinoname="pkill -j none"
78*bacc28ceSEnji Coopersleep_amount=7
79*bacc28ceSEnji Cooperdaemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount
806677932eSCraig Rodriguesjail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
81*bacc28ceSEnji Cooper    command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
826677932eSCraig Rodriguessleep 1
83*bacc28ceSEnji Cooperif pkill -f -j none "$sleep $sleep_amount" && sleep 1 &&
846677932eSCraig Rodrigues    [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
8565c3cfc1SJulio Merino	echo "ok 3 - $name"
8665c3cfc1SJulio Merinoelse
876677932eSCraig Rodrigues	ls ${PWD}/*.pid
8865c3cfc1SJulio Merino	echo "not ok 3 - $name"
8965c3cfc1SJulio Merinofi 2>/dev/null
906677932eSCraig Rodrigues[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid)
916677932eSCraig Rodrigues[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid)
92*bacc28ceSEnji Cooper
93*bacc28ceSEnji Cooperrm -f $sleep
94