ktest: Add STOP_TEST_AFTER to stop the test after a period of time
Currently, if a test causes constant output but never reaches a boot prompt, or crashes, the test will never stop. Add STOP_TEST_AFTER to create a variable that will stop (and fail) the test after it has run for this amount of time. The default is 10 minutes. Setting this variable to -1 will disable it. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
8ea0e063a7
commit
2d01b26a1b
@ -47,6 +47,7 @@ $default{"SCP_TO_TARGET"} = "scp \$SRC_FILE \$SSH_USER\@\$MACHINE:\$DST_FILE";
|
|||||||
$default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot";
|
$default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot";
|
||||||
$default{"STOP_AFTER_SUCCESS"} = 10;
|
$default{"STOP_AFTER_SUCCESS"} = 10;
|
||||||
$default{"STOP_AFTER_FAILURE"} = 60;
|
$default{"STOP_AFTER_FAILURE"} = 60;
|
||||||
|
$default{"STOP_TEST_AFTER"} = 600;
|
||||||
$default{"LOCALVERSION"} = "-test";
|
$default{"LOCALVERSION"} = "-test";
|
||||||
|
|
||||||
my $ktest_config;
|
my $ktest_config;
|
||||||
@ -102,6 +103,7 @@ my $console;
|
|||||||
my $success_line;
|
my $success_line;
|
||||||
my $stop_after_success;
|
my $stop_after_success;
|
||||||
my $stop_after_failure;
|
my $stop_after_failure;
|
||||||
|
my $stop_test_after;
|
||||||
my $build_target;
|
my $build_target;
|
||||||
my $target_image;
|
my $target_image;
|
||||||
my $localversion;
|
my $localversion;
|
||||||
@ -768,8 +770,10 @@ sub monitor {
|
|||||||
|
|
||||||
my $success_start;
|
my $success_start;
|
||||||
my $failure_start;
|
my $failure_start;
|
||||||
|
my $monitor_start = time;
|
||||||
|
my $done = 0;
|
||||||
|
|
||||||
for (;;) {
|
while (!$done) {
|
||||||
|
|
||||||
if ($booted) {
|
if ($booted) {
|
||||||
$line = wait_for_input($monitor_fp, $booted_timeout);
|
$line = wait_for_input($monitor_fp, $booted_timeout);
|
||||||
@ -831,6 +835,12 @@ sub monitor {
|
|||||||
if ($line =~ /\n/) {
|
if ($line =~ /\n/) {
|
||||||
$full_line = "";
|
$full_line = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($stop_test_after > 0 && !$booted && !$bug) {
|
||||||
|
if (time - $monitor_start > $stop_test_after) {
|
||||||
|
$done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close(DMESG);
|
close(DMESG);
|
||||||
@ -2002,6 +2012,7 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
|
|||||||
$success_line = set_test_option("SUCCESS_LINE", $i);
|
$success_line = set_test_option("SUCCESS_LINE", $i);
|
||||||
$stop_after_success = set_test_option("STOP_AFTER_SUCCESS", $i);
|
$stop_after_success = set_test_option("STOP_AFTER_SUCCESS", $i);
|
||||||
$stop_after_failure = set_test_option("STOP_AFTER_FAILURE", $i);
|
$stop_after_failure = set_test_option("STOP_AFTER_FAILURE", $i);
|
||||||
|
$stop_test_after = set_test_option("STOP_TEST_AFTER", $i);
|
||||||
$build_target = set_test_option("BUILD_TARGET", $i);
|
$build_target = set_test_option("BUILD_TARGET", $i);
|
||||||
$ssh_exec = set_test_option("SSH_EXEC", $i);
|
$ssh_exec = set_test_option("SSH_EXEC", $i);
|
||||||
$scp_to_target = set_test_option("SCP_TO_TARGET", $i);
|
$scp_to_target = set_test_option("SCP_TO_TARGET", $i);
|
||||||
|
@ -306,6 +306,14 @@
|
|||||||
# (default 60)
|
# (default 60)
|
||||||
#STOP_AFTER_FAILURE = 60
|
#STOP_AFTER_FAILURE = 60
|
||||||
|
|
||||||
|
# In case the console constantly fills the screen, having
|
||||||
|
# a specified time to stop the test if it never succeeds nor fails
|
||||||
|
# is recommended.
|
||||||
|
# Note: this is ignored if a success or failure is detected.
|
||||||
|
# (in seconds)
|
||||||
|
# (default 600, -1 is to never stop)
|
||||||
|
#STOP_TEST_AFTER = 600
|
||||||
|
|
||||||
# Stop testing if a build fails. If set, the script will end if
|
# Stop testing if a build fails. If set, the script will end if
|
||||||
# a failure is detected, otherwise it will save off the .config,
|
# a failure is detected, otherwise it will save off the .config,
|
||||||
# dmesg and bootlog in a directory called
|
# dmesg and bootlog in a directory called
|
||||||
|
Loading…
Reference in New Issue
Block a user