1143880Spjd#!/bin/sh
2143880Spjd# $FreeBSD$
3143880Spjd
4272682Srodrigcjail_name_to_jid()
5272682Srodrigc{
6272682Srodrigc	local check_name="$1"
7272682Srodrigc	(
8272682Srodrigc		line="$(jls -n 2> /dev/null | grep  name=$check_name  )"
9272682Srodrigc		for nv in $line; do
10272682Srodrigc			local name="${nv%=*}"
11272682Srodrigc			if [ "${name}" = "jid" ]; then
12272682Srodrigc				eval $nv
13272682Srodrigc				echo $jid
14272682Srodrigc				break
15272682Srodrigc			fi
16272682Srodrigc		done
17272682Srodrigc	)
18272682Srodrigc}
19143880Spjd
20272682Srodrigcbase=pgrep_j_test
21272682Srodrigc
22164558Syarecho "1..3"
23143880Spjd
24143880Spjdname="pgrep -j <jid>"
25143880Spjdif [ `id -u` -eq 0 ]; then
26263351Sjmmv	sleep=$(pwd)/sleep.txt
27143880Spjd	ln -sf /bin/sleep $sleep
28272682Srodrigc	jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
29272682Srodrigc	    command=daemon -p ${PWD}/${base}_1_1.pid $sleep 5 &
30272682Srodrigc
31272682Srodrigc	jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
32272682Srodrigc	    command=daemon -p ${PWD}/${base}_1_2.pid $sleep 5 &
33272682Srodrigc
34272682Srodrigc	jid1=$(jail_name_to_jid ${base}_1_1)
35272682Srodrigc	jid2=$(jail_name_to_jid ${base}_1_2)
36272682Srodrigc	jid="${jid1},${jid2}"
37272682Srodrigc	pid1="$(pgrep -f -x -j $jid "$sleep 5" | sort)"
38272682Srodrigc	pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
39272682Srodrigc	    $(cat ${PWD}/${base}_1_2.pid) | sort)
40272682Srodrigc	if [ "$pid1" = "$pid2" ]; then
41143880Spjd		echo "ok 1 - $name"
42143880Spjd	else
43143880Spjd		echo "not ok 1 - $name"
44143880Spjd	fi
45272682Srodrigc	[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
46272682Srodrigc	[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
47143880Spjd	rm -f $sleep
48143880Spjdelse
49143880Spjd	echo "ok 1 - $name # skip Test needs uid 0."
50143880Spjdfi
51143880Spjd
52164558Syarname="pgrep -j any"
53143880Spjdif [ `id -u` -eq 0 ]; then
54263351Sjmmv	sleep=$(pwd)/sleep.txt
55143880Spjd	ln -sf /bin/sleep $sleep
56272682Srodrigc	jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
57272682Srodrigc	    command=daemon -p ${PWD}/${base}_2_1.pid $sleep 5 &
58272682Srodrigc
59272682Srodrigc	jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
60272682Srodrigc	    command=daemon -p ${PWD}/${base}_2_2.pid $sleep 5 &
61272682Srodrigc
62272682Srodrigc	sleep 2
63272682Srodrigc	pid1="$(pgrep -f -x -j any "$sleep 5" | sort)"
64272682Srodrigc	pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
65272682Srodrigc	    $(cat ${PWD}/${base}_2_2.pid) | sort)
66272682Srodrigc	if [ "$pid1" = "$pid2" ]; then
67143880Spjd		echo "ok 2 - $name"
68143880Spjd	else
69143880Spjd		echo "not ok 2 - $name"
70143880Spjd	fi
71272682Srodrigc	[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
72272682Srodrigc	[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
73143880Spjd	rm -f $sleep
74143880Spjdelse
75143880Spjd	echo "ok 2 - $name # skip Test needs uid 0."
76143880Spjdfi
77164558Syar
78164558Syarname="pgrep -j none"
79164558Syarif [ `id -u` -eq 0 ]; then
80263351Sjmmv	sleep=$(pwd)/sleep.txt
81164558Syar	ln -sf /bin/sleep $sleep
82272682Srodrigc	daemon -p ${PWD}/${base}_3_1.pid $sleep 5 &
83272682Srodrigc	jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
84272682Srodrigc	    command=daemon -p ${PWD}/${base}_3_2.pid $sleep 5 &
85272682Srodrigc	sleep 2
86272682Srodrigc	pid="$(pgrep -f -x -j none "$sleep 5")"
87272682Srodrigc	if [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
88164558Syar		echo "ok 3 - $name"
89164558Syar	else
90164558Syar		echo "not ok 3 - $name"
91164558Syar	fi
92164558Syar	rm -f $sleep
93272682Srodrigc	[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat $PWD/${base}_3_1.pid) 
94272682Srodrigc	[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat $PWD/${base}_3_2.pid) 
95164558Syarelse
96164558Syar	echo "ok 3 - $name # skip Test needs uid 0."
97164558Syarfi
98