]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - bin/pkill/tests/pgrep-j_test.sh
Import tzdata 2020b
[FreeBSD/FreeBSD.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..4"
18
19 sleep=$(pwd)/sleep.txt
20 ln -sf /bin/sleep $sleep
21
22 name="pgrep -j <jid>"
23 sleep_amount=15
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 sleep 0.5
30
31 for i in `seq 1 10`; do
32         jid1=$(jail_name_to_jid ${base}_1_1)
33         jid2=$(jail_name_to_jid ${base}_1_2)
34         jid="${jid1},${jid2}"
35         case "$jid" in
36         [0-9]+,[0-9]+)
37                 break
38                 ;;
39         esac
40         sleep 0.1
41 done
42 sleep 0.5
43
44 pid1="$(pgrep -f -x -j "$jid" "$sleep $sleep_amount" | sort)"
45 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
46     $(cat ${PWD}/${base}_1_2.pid) | sort)
47 if [ "$pid1" = "$pid2" ]; then
48         echo "ok 1 - $name"
49 else
50         echo "not ok 1 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
51 fi
52 [ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
53 [ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
54 wait
55
56 name="pgrep -j any"
57 sleep_amount=16
58 jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
59     command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
60
61 jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
62     command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
63
64 sleep 2
65 pid1="$(pgrep -f -x -j any "$sleep $sleep_amount" | sort)"
66 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
67     $(cat ${PWD}/${base}_2_2.pid) | sort)
68 if [ "$pid1" = "$pid2" ]; then
69         echo "ok 2 - $name"
70 else
71         echo "not ok 2 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
72 fi
73 [ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
74 [ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
75 wait
76
77 name="pgrep -j none"
78 sleep_amount=17
79 daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount &
80 jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
81     command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
82 sleep 2
83 pid="$(pgrep -f -x -j none "$sleep $sleep_amount")"
84 if [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
85         echo "ok 3 - $name"
86 else
87         echo "not ok 3 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
88 fi
89 [ -f ${PWD}/${base}_3_1.pid ] && kill $(cat $PWD/${base}_3_1.pid) 
90 [ -f ${PWD}/${base}_3_2.pid ] && kill $(cat $PWD/${base}_3_2.pid) 
91 wait
92
93 # test 4 is like test 1 except with jname instead of jid.
94 name="pgrep -j <jname>"
95 sleep_amount=18
96 jail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
97     command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
98
99 jail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
100     command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
101
102 sleep 0.5
103
104 jname="${base}_4_1,${base}_4_2"
105 pid1="$(pgrep -f -x -j "$jname" "$sleep $sleep_amount" | sort)"
106 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_4_1.pid)" \
107     $(cat ${PWD}/${base}_4_2.pid) | sort)
108 if [ "$pid1" = "$pid2" ]; then
109         echo "ok 4 - $name"
110 else
111         echo "not ok 4 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
112 fi
113 [ -f ${PWD}/${base}_4_1.pid ] && kill $(cat ${PWD}/${base}_4_1.pid)
114 [ -f ${PWD}/${base}_4_2.pid ] && kill $(cat ${PWD}/${base}_4_2.pid)
115 wait
116
117 rm -f $sleep