]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - bin/pkill/tests/pgrep-j_test.sh
MFC r287012:
[FreeBSD/stable/10.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=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 wait
91
92 # test 4 is like test 1 except with jname instead of jid.
93 name="pgrep -j <jname>"
94 sleep_amount=8
95 jail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
96     command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
97
98 jail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
99     command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
100
101 sleep 0.5
102
103 jname="${base}_4_1,${base}_4_2"
104 pid1="$(pgrep -f -x -j "$jname" "$sleep $sleep_amount" | sort)"
105 pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_4_1.pid)" \
106     $(cat ${PWD}/${base}_4_2.pid) | sort)
107 if [ "$pid1" = "$pid2" ]; then
108         echo "ok 4 - $name"
109 else
110         echo "not ok 4 - $name # pgrep output: '$(echo $pid1)', pidfile output: '$(echo $pid2)'"
111 fi
112 [ -f ${PWD}/${base}_4_1.pid ] && kill $(cat ${PWD}/${base}_4_1.pid)
113 [ -f ${PWD}/${base}_4_2.pid ] && kill $(cat ${PWD}/${base}_4_2.pid)
114 wait
115
116 rm -f $sleep