]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - bin/pkill/tests/pkill-j_test.sh
MFC r287012:
[FreeBSD/stable/10.git] / bin / pkill / tests / pkill-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=pkill_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="pkill -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 $sleep $sleep_amount &
31
32 for i in `seq 1 10`; do
33         jid1=$(jail_name_to_jid ${base}_1_1)
34         jid2=$(jail_name_to_jid ${base}_1_2)
35         jid="${jid1},${jid2}"
36         case "$jid" in
37         [0-9]+,[0-9]+)
38                 break
39                 ;;
40         esac
41         sleep 0.1
42 done
43 sleep 0.5
44
45 if pkill -f -j "$jid" $sleep && sleep 0.5 &&
46     ! -f ${PWD}/${base}_1_1.pid &&
47     ! -f ${PWD}/${base}_1_2.pid ; then
48         echo "ok 1 - $name"
49 else
50         echo "not ok 1 - $name"
51 fi 2>/dev/null
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="pkill -j any"
57 sleep_amount=6
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 $sleep_amount &
65 chpid3=$!
66 sleep 0.5
67 if pkill -f -j any $sleep && sleep 0.5 &&
68     [ ! -f ${PWD}/${base}_2_1.pid -a
69       ! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then
70         echo "ok 2 - $name"
71 else
72         echo "not ok 2 - $name"
73 fi 2>/dev/null
74 [ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
75 [ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
76 wait
77
78 name="pkill -j none"
79 sleep_amount=7
80 daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount
81 jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
82     command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
83 sleep 1
84 if pkill -f -j none "$sleep $sleep_amount" && sleep 1 &&
85     [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
86         echo "ok 3 - $name"
87 else
88         ls ${PWD}/*.pid
89         echo "not ok 3 - $name"
90 fi 2>/dev/null
91 [ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid)
92 [ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid)
93 wait
94
95 # test 4 is like test 1 except with jname instead of jid.
96 name="pkill -j <jname>"
97 sleep_amount=8
98 jail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
99     command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
100
101 jail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
102     command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
103
104 $sleep $sleep_amount &
105
106 sleep 0.5
107
108 jname="${base}_4_1,${base}_4_2"
109 if pkill -f -j "$jname" $sleep && sleep 0.5 &&
110     ! -f ${PWD}/${base}_4_1.pid &&
111     ! -f ${PWD}/${base}_4_2.pid ; then
112         echo "ok 4 - $name"
113 else
114         echo "not ok 4 - $name"
115 fi 2>/dev/null
116 [ -f ${PWD}/${base}_4_1.pid ] && kill $(cat ${PWD}/${base}_4_1.pid)
117 [ -f ${PWD}/${base}_4_2.pid ] && kill $(cat ${PWD}/${base}_4_2.pid)
118 wait
119
120 rm -f $sleep