1143880Spjd#!/bin/sh 2143880Spjd# $FreeBSD$ 3143880Spjd 4272549Srodrigcjail_name_to_jid() 5272549Srodrigc{ 6272549Srodrigc local check_name="$1" 7283312Srodrigc jls -j "$check_name" -s | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g' 8272549Srodrigc} 9143880Spjd 10272549Srodrigcbase=pkill_j_test 11272549Srodrigc 12283312Srodrigcif [ `id -u` -ne 0 ]; then 13283312Srodrigc echo "1..0 # skip Test needs uid 0." 14283312Srodrigc exit 0 15283312Srodrigcfi 16283312Srodrigc 17287269Sjamieecho "1..4" 18143880Spjd 19283312Srodrigcsleep=$(pwd)/sleep.txt 20283312Srodrigcln -sf /bin/sleep $sleep 21283312Srodrigc 22143880Spjdname="pkill -j <jid>" 23283312Srodrigcsleep_amount=5 24283312Srodrigcjail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \ 25283312Srodrigc command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount & 26272549Srodrigc 27283312Srodrigcjail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \ 28283312Srodrigc command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount & 29272549Srodrigc 30283312Srodrigc$sleep $sleep_amount & 31283312Srodrigc 32283312Srodrigcfor i in `seq 1 10`; do 33272549Srodrigc jid1=$(jail_name_to_jid ${base}_1_1) 34272549Srodrigc jid2=$(jail_name_to_jid ${base}_1_2) 35272549Srodrigc jid="${jid1},${jid2}" 36283312Srodrigc case "$jid" in 37283312Srodrigc [0-9]+,[0-9]+) 38283312Srodrigc break 39283312Srodrigc ;; 40283312Srodrigc esac 41283312Srodrigc sleep 0.1 42283312Srodrigcdone 43283312Srodrigcsleep 0.5 44283312Srodrigc 45283312Srodrigcif pkill -f -j "$jid" $sleep && sleep 0.5 && 46283312Srodrigc ! -f ${PWD}/${base}_1_1.pid && 47283312Srodrigc ! -f ${PWD}/${base}_1_2.pid ; then 48283312Srodrigc echo "ok 1 - $name" 49143880Spjdelse 50283312Srodrigc echo "not ok 1 - $name" 51283312Srodrigcfi 2>/dev/null 52283312Srodrigc[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid) 53283312Srodrigc[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid) 54283312Srodrigcwait 55143880Spjd 56164558Syarname="pkill -j any" 57283312Srodrigcsleep_amount=6 58283312Srodrigcjail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \ 59283312Srodrigc command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount & 60272549Srodrigc 61283312Srodrigcjail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \ 62283312Srodrigc command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount & 63272549Srodrigc 64283312Srodrigc$sleep $sleep_amount & 65283312Srodrigcchpid3=$! 66283312Srodrigcsleep 0.5 67283312Srodrigcif pkill -f -j any $sleep && sleep 0.5 && 68283312Srodrigc [ ! -f ${PWD}/${base}_2_1.pid -a 69283312Srodrigc ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then 70283312Srodrigc echo "ok 2 - $name" 71143880Spjdelse 72283312Srodrigc echo "not ok 2 - $name" 73283312Srodrigcfi 2>/dev/null 74283312Srodrigc[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid) 75283312Srodrigc[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid) 76283312Srodrigcwait 77164558Syar 78164558Syarname="pkill -j none" 79283312Srodrigcsleep_amount=7 80283312Srodrigcdaemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount 81283312Srodrigcjail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \ 82283312Srodrigc command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount & 83283312Srodrigcsleep 1 84283312Srodrigcif pkill -f -j none "$sleep $sleep_amount" && sleep 1 && 85283312Srodrigc [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then 86283312Srodrigc echo "ok 3 - $name" 87164558Syarelse 88283312Srodrigc ls ${PWD}/*.pid 89283312Srodrigc echo "not ok 3 - $name" 90283312Srodrigcfi 2>/dev/null 91283312Srodrigc[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid) 92283312Srodrigc[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid) 93287269Sjamiewait 94283312Srodrigc 95287269Sjamie# test 4 is like test 1 except with jname instead of jid. 96287269Sjamiename="pkill -j <jname>" 97287269Sjamiesleep_amount=8 98287269Sjamiejail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \ 99287269Sjamie command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount & 100287269Sjamie 101287269Sjamiejail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \ 102287269Sjamie command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount & 103287269Sjamie 104287269Sjamie$sleep $sleep_amount & 105287269Sjamie 106287269Sjamiesleep 0.5 107287269Sjamie 108287269Sjamiejname="${base}_4_1,${base}_4_2" 109287269Sjamieif pkill -f -j "$jname" $sleep && sleep 0.5 && 110287269Sjamie ! -f ${PWD}/${base}_4_1.pid && 111287269Sjamie ! -f ${PWD}/${base}_4_2.pid ; then 112287269Sjamie echo "ok 4 - $name" 113287269Sjamieelse 114287269Sjamie echo "not ok 4 - $name" 115287269Sjamiefi 2>/dev/null 116287269Sjamie[ -f ${PWD}/${base}_4_1.pid ] && kill $(cat ${PWD}/${base}_4_1.pid) 117287269Sjamie[ -f ${PWD}/${base}_4_2.pid ] && kill $(cat ${PWD}/${base}_4_2.pid) 118287269Sjamiewait 119287269Sjamie 120283312Srodrigcrm -f $sleep 121