xref: /aosp_15_r20/external/toybox/tests/pkill.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash
2*cf5a6c84SAndroid Build Coastguard Worker
3*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Divya Kothari <[email protected]>
4*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Robin Mittal <[email protected]>
5*cf5a6c84SAndroid Build Coastguard Worker
6*cf5a6c84SAndroid Build Coastguard Worker#cleaning 'yes' processes
7*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
8*cf5a6c84SAndroid Build Coastguard Worker
9*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh
10*cf5a6c84SAndroid Build Coastguard Worker
11*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin"
12*cf5a6c84SAndroid Build Coastguard Worker
13*cf5a6c84SAndroid Build Coastguard Worker# Testcases for pkill command
14*cf5a6c84SAndroid Build Coastguard Worker
15*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
16*cf5a6c84SAndroid Build Coastguard Workersleep 1
17*cf5a6c84SAndroid Build Coastguard Workertesting "pattern" "pkill yes && sleep 1 && (pgrep yes || echo 'yes')" \
18*cf5a6c84SAndroid Build Coastguard Worker  "yes\n" "" ""
19*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
20*cf5a6c84SAndroid Build Coastguard Worker
21*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
22*cf5a6c84SAndroid Build Coastguard Workeryes print1 >/dev/null &
23*cf5a6c84SAndroid Build Coastguard Workeryes print2 >/dev/null &
24*cf5a6c84SAndroid Build Coastguard Workersleep 1
25*cf5a6c84SAndroid Build Coastguard Workertesting "pattern (multiple)" "pkill yes && sleep 1 &&
26*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
27*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
28*cf5a6c84SAndroid Build Coastguard Worker
29*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
30*cf5a6c84SAndroid Build Coastguard Workersleep 1
31*cf5a6c84SAndroid Build Coastguard Workertesting "-f pattern (one)" "pkill -f yes && sleep 1 &&
32*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
33*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
34*cf5a6c84SAndroid Build Coastguard Worker
35*cf5a6c84SAndroid Build Coastguard Workeryes print1 >/dev/null &
36*cf5a6c84SAndroid Build Coastguard Workersleep 1
37*cf5a6c84SAndroid Build Coastguard Workertesting "-f pattern args" "pkill -f \"yes print1\" && sleep 1 &&
38*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
39*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
40*cf5a6c84SAndroid Build Coastguard Worker
41*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
42*cf5a6c84SAndroid Build Coastguard Workeryes print1 >/dev/null &
43*cf5a6c84SAndroid Build Coastguard Workeryes print2 >/dev/null &
44*cf5a6c84SAndroid Build Coastguard Workersleep 1
45*cf5a6c84SAndroid Build Coastguard Workertesting "-f pattern (multiple)" "pkill -f yes && sleep 1 &&
46*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
47*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
48*cf5a6c84SAndroid Build Coastguard Worker
49*cf5a6c84SAndroid Build Coastguard Workeryes this-is-unlikely-to-appear-otherwise >/dev/null &
50*cf5a6c84SAndroid Build Coastguard Workersleep 1
51*cf5a6c84SAndroid Build Coastguard Workertesting "-s 0 -f pattern (regexp)" "pkill -s 0 -f .*-unlikely-.*-otherwise &&
52*cf5a6c84SAndroid Build Coastguard Worker   sleep 1 && (pgrep yes || echo 'yes')" "yes\n" "" ""
53*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
54*cf5a6c84SAndroid Build Coastguard Worker
55*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
56*cf5a6c84SAndroid Build Coastguard Workerproc1=$!
57*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
58*cf5a6c84SAndroid Build Coastguard Workerproc2=$!
59*cf5a6c84SAndroid Build Coastguard Workersleep 1
60*cf5a6c84SAndroid Build Coastguard Workertesting "-n pattern" "pkill -n yes && sleep 1 && pgrep yes" \
61*cf5a6c84SAndroid Build Coastguard Worker  "$proc1\n" "" ""
62*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
63*cf5a6c84SAndroid Build Coastguard Worker
64*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
65*cf5a6c84SAndroid Build Coastguard Workerproc1=$!
66*cf5a6c84SAndroid Build Coastguard Workersleep 1
67*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
68*cf5a6c84SAndroid Build Coastguard Workerproc2=$!
69*cf5a6c84SAndroid Build Coastguard Workersleep 1
70*cf5a6c84SAndroid Build Coastguard Workertesting "-o pattern" "pkill -o yes && sleep 1 && pgrep yes" \
71*cf5a6c84SAndroid Build Coastguard Worker  "$proc2\n" "" ""
72*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
73*cf5a6c84SAndroid Build Coastguard Worker
74*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
75*cf5a6c84SAndroid Build Coastguard Workersleep 1
76*cf5a6c84SAndroid Build Coastguard Workertesting "-s (blank) pattern" "pkill -s '' yes && sleep 1 &&
77*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
78*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
79*cf5a6c84SAndroid Build Coastguard Worker
80*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
81*cf5a6c84SAndroid Build Coastguard Workersleep 1
82*cf5a6c84SAndroid Build Coastguard Workertesting "-s 0 pattern" "pkill -s 0 yes && sleep 1 &&
83*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
84*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
85*cf5a6c84SAndroid Build Coastguard Worker
86*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
87*cf5a6c84SAndroid Build Coastguard Workerproc=$!
88*cf5a6c84SAndroid Build Coastguard Workerproc_p=`cat /proc/${proc}/stat | cut -d' ' -f4`
89*cf5a6c84SAndroid Build Coastguard Workersleep 1
90*cf5a6c84SAndroid Build Coastguard Workertesting "-P parent_prodId pattern" "pkill -P $proc_p yes && sleep 1 &&
91*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
92*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
93*cf5a6c84SAndroid Build Coastguard Worker
94*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
95*cf5a6c84SAndroid Build Coastguard Workersleep 1
96*cf5a6c84SAndroid Build Coastguard Workertesting "-9 pattern" "pkill -9 yes && sleep 1 &&
97*cf5a6c84SAndroid Build Coastguard Worker   (pgrep yes || echo 'yes')" "yes\n" "" ""
98*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
99*cf5a6c84SAndroid Build Coastguard Worker
100*cf5a6c84SAndroid Build Coastguard Workeryes >/dev/null &
101*cf5a6c84SAndroid Build Coastguard Workersleep 1
102*cf5a6c84SAndroid Build Coastguard Workertesting "return success" "pkill yes && echo success" "success\n" "" ""
103*cf5a6c84SAndroid Build Coastguard Workerkillall yes >/dev/null 2>&1
104*cf5a6c84SAndroid Build Coastguard Worker
105*cf5a6c84SAndroid Build Coastguard Workertesting "return failure" "pkill almost-certainly-not || echo failure" \
106*cf5a6c84SAndroid Build Coastguard Worker    "failure\n" "" ""
107*cf5a6c84SAndroid Build Coastguard Worker
108