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