xref: /freebsd/bin/pkill/tests/pgrep-j_test.sh (revision 5ff2e55e0071dabbf18cdbe13a1230822d1270d4)
165c3cfc1SJulio Merino#!/bin/sh
265c3cfc1SJulio Merino# $FreeBSD$
365c3cfc1SJulio Merino
46677932eSCraig Rodriguesjail_name_to_jid()
56677932eSCraig Rodrigues{
66677932eSCraig Rodrigues	local check_name="$1"
77a2065efSEnji Cooper	jls -j "$check_name" -s | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g'
86677932eSCraig Rodrigues}
96677932eSCraig Rodrigues
106677932eSCraig Rodriguesbase=pgrep_j_test
1165c3cfc1SJulio Merino
12*5ff2e55eSAlex Richardsonif [ "$(id -u)" -ne 0 ]; then
13b8b98653SEnji Cooper	echo "1..0 # skip Test needs uid 0."
14b8b98653SEnji Cooper	exit 0
15b8b98653SEnji Cooperfi
16b8b98653SEnji Cooper
17c4f0631fSJamie Grittonecho "1..4"
1865c3cfc1SJulio Merino
1965c3cfc1SJulio Merinosleep=$(pwd)/sleep.txt
2065c3cfc1SJulio Merinoln -sf /bin/sleep $sleep
21b8b98653SEnji Cooper
22b8b98653SEnji Coopername="pgrep -j <jid>"
236bfde4a6SRuslan Bukinsleep_amount=15
246677932eSCraig Rodriguesjail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
2518f4d107SEnji 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 \
2818f4d107SEnji Cooper    command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
296bfde4a6SRuslan Bukinsleep 0.5
306677932eSCraig Rodrigues
31*5ff2e55eSAlex Richardsonfor i in $(seq 1 10); do
326677932eSCraig Rodrigues	jid1=$(jail_name_to_jid ${base}_1_1)
336677932eSCraig Rodrigues	jid2=$(jail_name_to_jid ${base}_1_2)
346677932eSCraig Rodrigues	jid="${jid1},${jid2}"
358edd0e30SEnji Cooper	case "$jid" in
36*5ff2e55eSAlex Richardson	[0-9]*,[0-9]*)
378edd0e30SEnji Cooper		break
388edd0e30SEnji Cooper		;;
398edd0e30SEnji Cooper	esac
408edd0e30SEnji Cooper	sleep 0.1
418edd0e30SEnji Cooperdone
427a2065efSEnji Coopersleep 0.5
438edd0e30SEnji Cooper
448edd0e30SEnji Cooperpid1="$(pgrep -f -x -j "$jid" "$sleep $sleep_amount" | sort)"
456677932eSCraig Rodriguespid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
46*5ff2e55eSAlex Richardson    "$(cat ${PWD}/${base}_1_2.pid)" | sort)
476677932eSCraig Rodriguesif [ "$pid1" = "$pid2" ]; then
4865c3cfc1SJulio Merino	echo "ok 1 - $name"
4965c3cfc1SJulio Merinoelse
50*5ff2e55eSAlex Richardson	echo "not ok 1 - $name # pgrep output: '$pid1', pidfile output: '$pid2'"
5165c3cfc1SJulio Merinofi
52*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_1_1.pid ] && kill "$(cat ${PWD}/${base}_1_1.pid)"
53*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_1_2.pid ] && kill "$(cat ${PWD}/${base}_1_2.pid)"
5401f66c08SEnji Cooperwait
5565c3cfc1SJulio Merino
5665c3cfc1SJulio Merinoname="pgrep -j any"
5751acc171SRuslan Bukinsleep_amount=16
586677932eSCraig Rodriguesjail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
5918f4d107SEnji Cooper    command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
606677932eSCraig Rodrigues
616677932eSCraig Rodriguesjail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
6218f4d107SEnji Cooper    command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
636677932eSCraig Rodrigues
646677932eSCraig Rodriguessleep 2
6518f4d107SEnji Cooperpid1="$(pgrep -f -x -j any "$sleep $sleep_amount" | sort)"
666677932eSCraig Rodriguespid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
67*5ff2e55eSAlex Richardson    "$(cat ${PWD}/${base}_2_2.pid)" | sort)
686677932eSCraig Rodriguesif [ "$pid1" = "$pid2" ]; then
6965c3cfc1SJulio Merino	echo "ok 2 - $name"
7065c3cfc1SJulio Merinoelse
71*5ff2e55eSAlex Richardson	echo "not ok 2 - $name # pgrep output: '$pid1', pidfile output: '$pid2'"
7265c3cfc1SJulio Merinofi
73*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_2_1.pid ] && kill "$(cat ${PWD}/${base}_2_1.pid)"
74*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_2_2.pid ] && kill "$(cat ${PWD}/${base}_2_2.pid)"
7501f66c08SEnji Cooperwait
7665c3cfc1SJulio Merino
7765c3cfc1SJulio Merinoname="pgrep -j none"
7851acc171SRuslan Bukinsleep_amount=17
7918f4d107SEnji Cooperdaemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount &
806677932eSCraig Rodriguesjail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
8118f4d107SEnji Cooper    command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
826677932eSCraig Rodriguessleep 2
8318f4d107SEnji Cooperpid="$(pgrep -f -x -j none "$sleep $sleep_amount")"
846677932eSCraig Rodriguesif [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
8565c3cfc1SJulio Merino	echo "ok 3 - $name"
8665c3cfc1SJulio Merinoelse
87*5ff2e55eSAlex Richardson	echo "not ok 3 - $name # pgrep output: '$pid1', pidfile output: '$pid2'"
8865c3cfc1SJulio Merinofi
89*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_3_1.pid ] && kill "$(cat $PWD/${base}_3_1.pid)"
90*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_3_2.pid ] && kill "$(cat $PWD/${base}_3_2.pid)"
91c4f0631fSJamie Grittonwait
92c4f0631fSJamie Gritton
93c4f0631fSJamie Gritton# test 4 is like test 1 except with jname instead of jid.
94c4f0631fSJamie Grittonname="pgrep -j <jname>"
9551acc171SRuslan Bukinsleep_amount=18
96c4f0631fSJamie Grittonjail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
97c4f0631fSJamie Gritton    command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
98c4f0631fSJamie Gritton
99c4f0631fSJamie Grittonjail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
100c4f0631fSJamie Gritton    command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
101c4f0631fSJamie Gritton
102c4f0631fSJamie Grittonsleep 0.5
103c4f0631fSJamie Gritton
104c4f0631fSJamie Grittonjname="${base}_4_1,${base}_4_2"
105c4f0631fSJamie Grittonpid1="$(pgrep -f -x -j "$jname" "$sleep $sleep_amount" | sort)"
106c4f0631fSJamie Grittonpid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_4_1.pid)" \
107*5ff2e55eSAlex Richardson    "$(cat ${PWD}/${base}_4_2.pid)" | sort)
108c4f0631fSJamie Grittonif [ "$pid1" = "$pid2" ]; then
109c4f0631fSJamie Gritton	echo "ok 4 - $name"
110c4f0631fSJamie Grittonelse
111c4f0631fSJamie Gritton	echo "not ok 4 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
112c4f0631fSJamie Grittonfi
113*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_4_1.pid ] && kill "$(cat ${PWD}/${base}_4_1.pid)"
114*5ff2e55eSAlex Richardson[ -f ${PWD}/${base}_4_2.pid ] && kill "$(cat ${PWD}/${base}_4_2.pid)"
115c4f0631fSJamie Grittonwait
116b8b98653SEnji Cooper
117b8b98653SEnji Cooperrm -f $sleep
118