pgrep-j_test.sh revision 278653
1#!/bin/sh
2# $FreeBSD: head/bin/pkill/tests/pgrep-j_test.sh 278653 2015-02-13 01:07:12Z ngie $
3
4jail_name_to_jid()
5{
6	local check_name="$1"
7	(
8		line="$(jls -n 2> /dev/null | grep  name=$check_name  )"
9		for nv in $line; do
10			local name="${nv%=*}"
11			if [ "${name}" = "jid" ]; then
12				eval $nv
13				echo $jid
14				break
15			fi
16		done
17	)
18}
19
20base=pgrep_j_test
21
22if [ `id -u` -ne 0 ]; then
23	echo "1..0 # skip Test needs uid 0."
24	exit 0
25fi
26
27echo "1..3"
28
29sleep=$(pwd)/sleep.txt
30ln -sf /bin/sleep $sleep
31
32name="pgrep -j <jid>"
33sleep_amount=5
34jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
35    command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount &
36
37jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
38    command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
39
40jid1=$(jail_name_to_jid ${base}_1_1)
41jid2=$(jail_name_to_jid ${base}_1_2)
42jid="${jid1},${jid2}"
43pid1="$(pgrep -f -x -j $jid "$sleep $sleep_amount" | sort)"
44pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
45    $(cat ${PWD}/${base}_1_2.pid) | sort)
46if [ "$pid1" = "$pid2" ]; then
47	echo "ok 1 - $name"
48else
49	echo "not ok 1 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
50fi
51[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
52[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
53wait
54
55name="pgrep -j any"
56sleep_amount=6
57jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
58    command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
59
60jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
61    command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
62
63sleep 2
64pid1="$(pgrep -f -x -j any "$sleep $sleep_amount" | sort)"
65pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
66    $(cat ${PWD}/${base}_2_2.pid) | sort)
67if [ "$pid1" = "$pid2" ]; then
68	echo "ok 2 - $name"
69else
70	echo "not ok 2 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
71fi
72[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
73[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
74wait
75
76name="pgrep -j none"
77sleep_amount=7
78daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount &
79jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
80    command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
81sleep 2
82pid="$(pgrep -f -x -j none "$sleep $sleep_amount")"
83if [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
84	echo "ok 3 - $name"
85else
86	echo "not ok 3 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
87fi
88[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat $PWD/${base}_3_1.pid) 
89[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat $PWD/${base}_3_2.pid) 
90
91rm -f $sleep
92