4050148a45
The ps sched test has been disabled. There are too many odd build farms this fails in strange ways. Other odd build farms have no tty and so some tests check for no tty and skip if not found.
158 lines
4.0 KiB
Plaintext
158 lines
4.0 KiB
Plaintext
|
|
set env(LC_ALL) "C"
|
|
regexp "(.*\/)testsuite" $objdir objdir topdir
|
|
|
|
# These are the same as include/c.h
|
|
set usage_help "\\s*-h, --help\\s+display this help and exit\\s+"
|
|
set usage_version "\\s*-V, --version\\s+output version information and exit\\s+"
|
|
set usage_man "\\s*For more details see \\S+\\."
|
|
|
|
proc kill_process pid {
|
|
set cmdline "kill $pid"
|
|
if { [catch { exec /bin/sh -c $cmdline } msg]} {
|
|
warning "Could not kill process: $msg\n"
|
|
}
|
|
}
|
|
|
|
proc procps_v_version { tool } {
|
|
global topdir
|
|
set toolpath ${topdir}${tool}
|
|
set tmp [ exec $toolpath -V ]
|
|
regexp "from procps-ng (\[0-9.\]*)" $tmp tmp version
|
|
clone_output "$toolpath version $version\n"
|
|
}
|
|
|
|
proc free_version {} { procps_v_version free }
|
|
proc kill_version {} { procps_v_version kill }
|
|
proc pgrep_version {} { procps_v_version pgrep }
|
|
proc pkill_version {} { procps_v_version pkill }
|
|
proc pmap_version {} { procps_v_version pmap }
|
|
proc pwdx_version {} { procps_v_version pwdx }
|
|
proc sysctl_version {} { procps_v_version sysctl }
|
|
proc uptime_version {} { procps_v_version uptime }
|
|
proc vmstat_version {} { procps_v_version vmstat }
|
|
proc w_version {} { procps_v_version w }
|
|
|
|
#
|
|
#
|
|
# common utilities
|
|
proc expect_continue { testname reg } {
|
|
expect {
|
|
-re "$reg" { }
|
|
eof { fail "$testname" }
|
|
timeout { fail "$testname" }
|
|
}
|
|
}
|
|
|
|
proc expect_pass { testname reg } {
|
|
expect {
|
|
-re "$reg" { pass "$testname" }
|
|
default { fail "$testname" }
|
|
timeout { fail "$testname" }
|
|
}
|
|
}
|
|
|
|
proc expect_blank { testname } {
|
|
expect {
|
|
-re "\\w" { fail "$testname" }
|
|
eof { pass "$testname" }
|
|
timeout { pass "$testname" }
|
|
}
|
|
}
|
|
|
|
proc expect_table { test match_header match_items match_footer } {
|
|
expect {
|
|
-re "$match_header" {
|
|
expect {
|
|
-re "$match_items" {
|
|
expect {
|
|
-re "$match_footer" { pass "$test" }
|
|
default { fail "$test (footer)" }
|
|
}
|
|
}
|
|
default { fail "$test (items)" }
|
|
}
|
|
}
|
|
default { fail "$test (header)" }
|
|
}
|
|
}
|
|
|
|
proc expect_table_dsc { test match_header match_item } {
|
|
expect {
|
|
-re $match_header {}
|
|
default {
|
|
fail "$test (header)"
|
|
return
|
|
}
|
|
}
|
|
|
|
set do_loop 1
|
|
set last_value 99999999
|
|
set found_item 0
|
|
while { $do_loop ==1 } {
|
|
expect {
|
|
-re $match_item {
|
|
set current_value $expect_out(1,string)
|
|
if { $current_value > $last_value } {
|
|
fail "$test (sorting $current_value > $last_value)"
|
|
return
|
|
} else {
|
|
set found_item 1
|
|
set last_value $current_value
|
|
}
|
|
}
|
|
default {
|
|
if { $found_item == 0 } {
|
|
fail "$test (items)"
|
|
} else {
|
|
pass $test
|
|
}
|
|
return
|
|
}
|
|
}
|
|
}
|
|
#expect {
|
|
# -re $match_footer { pass $test }
|
|
# default { fail "$test (footer)" }
|
|
#}
|
|
}
|
|
|
|
proc make_testproc { } {
|
|
global testproc_path testproc_comm testproc1_pid testproc2_pid sleep_time
|
|
|
|
# Time to run the whole job
|
|
set sleep_time 300
|
|
|
|
set testproc_path [ exec mktemp -u ]
|
|
set sleep_path [ exec sh -c "command -v sleep" ]
|
|
exec ln -s $sleep_path $testproc_path
|
|
set testproc_comm [ exec basename $testproc_path ]
|
|
|
|
spawn readlink $testproc_path
|
|
expect {
|
|
-re "^$sleep_path\\s*$" { }
|
|
timeout { perror "test proc does not link to sleep 1" }
|
|
eof { perror "test proc does not link to sleep 1" }
|
|
}
|
|
|
|
set testproc1_pid [ exec $testproc_path $sleep_time & ]
|
|
set testproc2_pid [ exec $testproc_path $sleep_time & ]
|
|
}
|
|
|
|
proc kill_testproc { } {
|
|
global testproc_path testproc1_pid testproc2_pid
|
|
|
|
kill_process $testproc1_pid
|
|
kill_process $testproc2_pid
|
|
file delete $testproc_path
|
|
}
|
|
|
|
proc get_tty {} {
|
|
if { [catch { set raw_tty [ exec tty ] } msg]} {
|
|
warning "No TTY found"
|
|
return ""
|
|
}
|
|
regexp "/dev/(.+)" $raw_tty > tty
|
|
return $tty
|
|
}
|