]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - bin/pkill/tests/pkill-j_test.sh
Merge llvm-project release/16.x llvmorg-16.0.6-0-g7cbf1a259152
[FreeBSD/FreeBSD.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=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
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         *)
41                 echo "Did not match: '${jid}'" >&2
42                 ;;
43         esac
44         sleep 0.1
45 done
46 sleep 0.5
47
48 if pkill -f -j "$jid" $sleep && sleep 0.5 &&
49     ! test -f "${PWD}/${base}_1_1.pid" &&
50     ! test -f "${PWD}/${base}_1_2.pid" ; then
51         echo "ok 1 - $name"
52 else
53         echo "not ok 1 - $name"
54 fi 2>/dev/null
55 [ -f ${PWD}/${base}_1_1.pid ] && kill "$(cat ${PWD}/${base}_1_1.pid)"
56 [ -f ${PWD}/${base}_1_2.pid ] && kill "$(cat ${PWD}/${base}_1_2.pid)"
57 wait
58
59 name="pkill -j any"
60 sleep_amount=16
61 jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
62     command=daemon -p ${PWD}/${base}_2_1.pid $sleep $sleep_amount &
63
64 jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
65     command=daemon -p ${PWD}/${base}_2_2.pid $sleep $sleep_amount &
66
67 $sleep $sleep_amount &
68 chpid3=$!
69 sleep 0.5
70 if pkill -f -j any $sleep && sleep 0.5 &&
71     ! test -f ${PWD}/${base}_2_1.pid &&
72     ! test -f ${PWD}/${base}_2_2.pid && kill $chpid3; then
73         echo "ok 2 - $name"
74 else
75         echo "not ok 2 - $name"
76 fi 2>/dev/null
77 [ -f ${PWD}/${base}_2_1.pid ] && kill "$(cat ${PWD}/${base}_2_1.pid)"
78 [ -f ${PWD}/${base}_2_2.pid ] && kill "$(cat ${PWD}/${base}_2_2.pid)"
79 wait
80
81 name="pkill -j none"
82 sleep_amount=17
83 daemon -p ${PWD}/${base}_3_1.pid $sleep $sleep_amount
84 jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
85     command=daemon -p ${PWD}/${base}_3_2.pid $sleep $sleep_amount &
86 sleep 1
87 if pkill -f -j none "$sleep $sleep_amount" && sleep 1 &&
88     [ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
89         echo "ok 3 - $name"
90 else
91         ls ${PWD}/*.pid
92         echo "not ok 3 - $name"
93 fi 2>/dev/null
94 [ -f ${PWD}/${base}_3_1.pid ] && kill "$(cat ${base}_3_1.pid)"
95 [ -f ${PWD}/${base}_3_2.pid ] && kill "$(cat ${base}_3_2.pid)"
96 wait
97
98 # test 4 is like test 1 except with jname instead of jid.
99 name="pkill -j <jname>"
100 sleep_amount=18
101 jail -c path=/ name=${base}_4_1 ip4.addr=127.0.0.1 \
102     command=daemon -p ${PWD}/${base}_4_1.pid $sleep $sleep_amount &
103
104 jail -c path=/ name=${base}_4_2 ip4.addr=127.0.0.1 \
105     command=daemon -p ${PWD}/${base}_4_2.pid $sleep $sleep_amount &
106
107 $sleep $sleep_amount &
108
109 sleep 0.5
110
111 jname="${base}_4_1,${base}_4_2"
112 if pkill -f -j "$jname" $sleep && sleep 0.5 &&
113     ! test -f ${PWD}/${base}_4_1.pid &&
114     ! test -f ${PWD}/${base}_4_2.pid ; then
115         echo "ok 4 - $name"
116 else
117         echo "not ok 4 - $name"
118 fi 2>/dev/null
119 [ -f ${PWD}/${base}_4_1.pid ] && kill "$(cat ${PWD}/${base}_4_1.pid)"
120 [ -f ${PWD}/${base}_4_2.pid ] && kill "$(cat ${PWD}/${base}_4_2.pid)"
121 wait
122
123 rm -f $sleep