]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - bin/pkill/tests/pkill-j_test.sh
sys: add conf/std.debug, generic debugging options
[FreeBSD/FreeBSD.git] / bin / pkill / tests / pkill-j_test.sh
1 #!/bin/sh
2
3 jail_name_to_jid()
4 {
5         local check_name="$1"
6         jls -j "$check_name" -s | tr ' ' '\n' | grep jid= | sed -e 's/.*=//g'
7 }
8
9 base=pkill_j_test
10
11 if [ "$(id -u)" -ne 0 ]; then
12         echo "1..0 # skip Test needs uid 0."
13         exit 0
14 fi
15
16 echo "1..4"
17
18 sleep=$(pwd)/sleep.txt
19 ln -sf /bin/sleep $sleep
20
21 name="pkill -j <jid>"
22 sleep_amount=15
23 jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
24     command=daemon -p ${PWD}/${base}_1_1.pid $sleep $sleep_amount &
25
26 jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
27     command=daemon -p ${PWD}/${base}_1_2.pid $sleep $sleep_amount &
28
29 $sleep $sleep_amount &
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         *)
40                 echo "Did not match: '${jid}'" >&2
41                 ;;
42         esac
43         sleep 0.1
44 done
45 sleep 0.5
46
47 if pkill -f -j "$jid" $sleep && sleep 0.5 &&
48     ! test -f "${PWD}/${base}_1_1.pid" &&
49     ! test -f "${PWD}/${base}_1_2.pid" ; then
50         echo "ok 1 - $name"
51 else
52         echo "not ok 1 - $name"
53 fi 2>/dev/null
54 [ -f ${PWD}/${base}_1_1.pid ] && kill "$(cat ${PWD}/${base}_1_1.pid)"
55 [ -f ${PWD}/${base}_1_2.pid ] && kill "$(cat ${PWD}/${base}_1_2.pid)"
56 wait
57
58 name="pkill -j any"
59 sleep_amount=16
60 jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
61     command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
62
63 jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
64     command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
65
66 $sleep $sleep_amount &
67 chpid3=$!
68 sleep 0.5
69 if pkill -f -j any $sleep && sleep 0.5 &&
70     ! test -f ${PWD}/${base}_2_1.pid &&
71     ! test -f ${PWD}/${base}_2_2.pid && kill $chpid3; then
72         echo "ok 2 - $name"
73 else
74         echo "not ok 2 - $name"
75 fi 2>/dev/null
76 [ -f ${PWD}/${base}_2_1.pid ] && kill "$(cat ${PWD}/${base}_2_1.pid)"
77 [ -f ${PWD}/${base}_2_2.pid ] && kill "$(cat ${PWD}/${base}_2_2.pid)"
78 wait
79
80 name="pkill -j none"
81 sleep_amount=17
82 daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount
83 jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
84     command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
85 sleep 1
86 if pkill -f -j none "$sleep $sleep_amount" && sleep 1 &&
87     [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
88         echo "ok 3 - $name"
89 else
90         ls ${PWD}/*.pid
91         echo "not ok 3 - $name"
92 fi 2>/dev/null
93 [ -f ${PWD}/${base}_3_1.pid ] && kill "$(cat ${base}_3_1.pid)"
94 [ -f ${PWD}/${base}_3_2.pid ] && kill "$(cat ${base}_3_2.pid)"
95 wait
96
97 # test 4 is like test 1 except with jname instead of jid.
98 name="pkill -j <jname>"
99 sleep_amount=18
100 jail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
101     command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
102
103 jail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
104     command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
105
106 $sleep $sleep_amount &
107
108 sleep 0.5
109
110 jname="${base}_4_1,${base}_4_2"
111 if pkill -f -j "$jname" $sleep && sleep 0.5 &&
112     ! test -f ${PWD}/${base}_4_1.pid &&
113     ! test -f ${PWD}/${base}_4_2.pid ; then
114         echo "ok 4 - $name"
115 else
116         echo "not ok 4 - $name"
117 fi 2>/dev/null
118 [ -f ${PWD}/${base}_4_1.pid ] && kill "$(cat ${PWD}/${base}_4_1.pid)"
119 [ -f ${PWD}/${base}_4_2.pid ] && kill "$(cat ${PWD}/${base}_4_2.pid)"
120 wait
121
122 rm -f $sleep