2011-11-30 17:41:35 +05:30
|
|
|
#
|
|
|
|
# Dejagnu tests for pkill - part of procps
|
|
|
|
#
|
|
|
|
set mypid [pid]
|
|
|
|
set not_ppid [ expr { $mypid + 1 } ]
|
|
|
|
set pkill "${topdir}pkill"
|
|
|
|
set uid [ exec id -u ]
|
|
|
|
set not_uid [ expr { $uid + 1 } ]
|
|
|
|
set gid [ exec id -g ]
|
|
|
|
set not_gid [ expr { $gid + 1 } ]
|
2012-06-28 02:51:50 +05:30
|
|
|
set ps "${topdir}ps/pscommand"
|
2011-11-30 17:41:35 +05:30
|
|
|
set raw_tty [ exec tty ]
|
|
|
|
regexp "/dev/(.+)" $raw_tty > tty
|
|
|
|
|
2013-10-09 13:48:55 +05:30
|
|
|
set test "pkill with no arguments"
|
|
|
|
spawn $pkill
|
|
|
|
expect_pass "$test" "^\(lt-\)\?pkill: no matching criteria specified\\s*"
|
|
|
|
|
|
|
|
# Tests that don't need the test process go above here
|
|
|
|
if { [ catch { exec sh -c "command -v kill" } kill_path] } {
|
|
|
|
untested { kill path not found }
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2011-11-30 17:41:35 +05:30
|
|
|
make_testproc
|
|
|
|
set testproc_len [ string length $testproc_comm ]
|
|
|
|
set testproc_trim [ string range $testproc_comm 0 [ expr { $testproc_len - 2 } ] ]
|
2012-06-28 02:51:50 +05:30
|
|
|
set testproc1_sid [ exec $ps --no-headers -o sid $testproc1_pid ]
|
2011-11-30 17:41:35 +05:30
|
|
|
|
|
|
|
set test "pkill find both test pids"
|
2012-06-24 18:07:11 +05:30
|
|
|
spawn $pkill -0 -e $testproc_comm
|
|
|
|
expect_pass "$test" "^$testproc_comm killed \\(pid $testproc1_pid\\)\\s+$testproc_comm killed \\(pid $testproc2_pid\\)\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
|
2012-06-24 18:10:02 +05:30
|
|
|
set test "pkill signal option order"
|
|
|
|
spawn $pkill -e $testproc_comm -0
|
|
|
|
expect_pass "$test" "^$testproc_comm killed \\(pid $testproc1_pid\\)\\s+$testproc_comm killed \\(pid $testproc2_pid\\)\\s*$"
|
|
|
|
|
2011-11-30 17:41:35 +05:30
|
|
|
# In Debian only
|
|
|
|
#set test "pkill counts 2 test pids"
|
|
|
|
#spawn $pkill -c $testproc
|
|
|
|
#expect_pass "$test" "^2\\s*"
|
|
|
|
|
|
|
|
set test "pkill with matching gid"
|
|
|
|
#spawn $pkill -G $gid $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with not matching gid"
|
|
|
|
#spawn $pkill -G $not_gid $testproc
|
|
|
|
#expect_blank $test
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with process name"
|
|
|
|
#spawn $pkill -l $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc\\s+$testproc2_pid\\s+$testproc\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill find newest test pid"
|
|
|
|
#spawn $pkill -n $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill find oldest test pid"
|
|
|
|
#spawn $pkill -o $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill matches with parent pid"
|
|
|
|
#spawn $pkill -P $mypid $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill doesn't match with bogus parent pid"
|
|
|
|
#spawn $pkill -P $not_ppid $testproc
|
|
|
|
#expect_blank "$test"
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill matches with its own sid"
|
|
|
|
#spawn $pkill -s $sleep1_sid $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill doesn't match with bogus sid"
|
|
|
|
#spawn $pkill -s 1 $testproc
|
|
|
|
#expect_blank "$test"
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill matches on tty"
|
|
|
|
#spawn $pkill -t $tty $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill doesn't match with bogus tty"
|
|
|
|
#spawn $pkill -t glass $testproc
|
|
|
|
#expect_blank "$test"
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with matching euid"
|
|
|
|
#spawn $pkill -u $uid $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with not matching euid"
|
|
|
|
#spawn $pkill -u $not_uid $testproc
|
|
|
|
#expect_blank $test
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with matching uid"
|
|
|
|
#spawn $pkill -U $uid $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill with not matching uid"
|
|
|
|
#spawn $pkill -U $not_uid $testproc
|
|
|
|
#expect_blank $test
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill matches on substring"
|
|
|
|
#spawn $pkill $testproc_trim
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill matches full string with exact"
|
|
|
|
#spawn $pkill -x $testproc
|
2012-06-24 18:07:11 +05:30
|
|
|
#expect_pass "$test" "^$testproc1_pid\\s+$testproc2_pid\\s*$"
|
2011-11-30 17:41:35 +05:30
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
set test "pkill does not match substring with exact"
|
|
|
|
#spawn $pkill -x $testproc_trim
|
|
|
|
#expect_blank $test
|
|
|
|
untested "$test"
|
|
|
|
|
|
|
|
|
|
|
|
# Cleanup
|
2013-10-09 13:48:55 +05:30
|
|
|
eval exec "$kill_path $testproc1_pid"
|
|
|
|
eval exec "$kill_path $testproc2_pid"
|
2011-11-30 17:41:35 +05:30
|
|
|
exec rm $testproc_path
|