Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/bin/pkill/tests/pkill-j_test.sh
39478 views
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
123
124