]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - bin/pkill/tests/pgrep-j_test.sh
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / bin / pkill / tests / pgrep-j_test.sh
1 #!/bin/sh
2 # $FreeBSD$
3
4 jail_name_to_jid()
5 {
6         local check_name="$1"
7         jls -j "$check_name" -s | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g'
8 }
9
10 base=pgrep_j_test
11
12 if [ `id -u` -ne 0 ]; then
13         echo "1..0 # skip Test needs uid 0."
14         exit 0
15 fi
16
17 echo "1..3"
18
19 sleep=$(pwd)/sleep.txt
20 ln -sf /bin/sleep $sleep
21
22 name="pgrep -j <jid>"
23 sleep_amount=5
24 jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
25     command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount &
26
27 jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
28     command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
29
30 for i in `seq 1 10`; do
31         jid1=$(jail_name_to_jid ${base}_1_1)
32         jid2=$(jail_name_to_jid ${base}_1_2)
33         jid="${jid1},${jid2}"
34         case "$jid" in
35         [0-9]+,[0-9]+)
36                 break
37                 ;;
38         esac
39         sleep 0.1
40 done
41 sleep 0.5
42
43 pid1="$(pgrep -f -x -j "$jid" "$sleep $sleep_amount" | sort)"
44 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
45     $(cat ${PWD}/${base}_1_2.pid) | sort)
46 if [ "$pid1" = "$pid2" ]; then
47         echo "ok 1 - $name"
48 else
49         echo "not ok 1 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
50 fi
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)
53 wait
54
55 name="pgrep -j any"
56 sleep_amount=6
57 jail -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
60 jail -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
63 sleep 2
64 pid1="$(pgrep -f -x -j any "$sleep $sleep_amount" | sort)"
65 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
66     $(cat ${PWD}/${base}_2_2.pid) | sort)
67 if [ "$pid1" = "$pid2" ]; then
68         echo "ok 2 - $name"
69 else
70         echo "not ok 2 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
71 fi
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)
74 wait
75
76 name="pgrep -j none"
77 sleep_amount=7
78 daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount &
79 jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
80     command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
81 sleep 2
82 pid="$(pgrep -f -x -j none "$sleep $sleep_amount")"
83 if [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
84         echo "ok 3 - $name"
85 else
86         echo "not ok 3 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
87 fi
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
91 rm -f $sleep