Commit 2d01b26a1b14ab248f850d858f2ff3de3ead6d33
Committed by
Steven Rostedt
1 parent
8ea0e063a7
Exists in
master
and in
4 other branches
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>
Showing 2 changed files with 20 additions and 1 deletions Side-by-side Diff
tools/testing/ktest/ktest.pl
... | ... | @@ -47,6 +47,7 @@ |
47 | 47 | $default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot"; |
48 | 48 | $default{"STOP_AFTER_SUCCESS"} = 10; |
49 | 49 | $default{"STOP_AFTER_FAILURE"} = 60; |
50 | +$default{"STOP_TEST_AFTER"} = 600; | |
50 | 51 | $default{"LOCALVERSION"} = "-test"; |
51 | 52 | |
52 | 53 | my $ktest_config; |
... | ... | @@ -102,6 +103,7 @@ |
102 | 103 | my $success_line; |
103 | 104 | my $stop_after_success; |
104 | 105 | my $stop_after_failure; |
106 | +my $stop_test_after; | |
105 | 107 | my $build_target; |
106 | 108 | my $target_image; |
107 | 109 | my $localversion; |
108 | 110 | |
... | ... | @@ -768,8 +770,10 @@ |
768 | 770 | |
769 | 771 | my $success_start; |
770 | 772 | my $failure_start; |
773 | + my $monitor_start = time; | |
774 | + my $done = 0; | |
771 | 775 | |
772 | - for (;;) { | |
776 | + while (!$done) { | |
773 | 777 | |
774 | 778 | if ($booted) { |
775 | 779 | $line = wait_for_input($monitor_fp, $booted_timeout); |
... | ... | @@ -831,6 +835,12 @@ |
831 | 835 | if ($line =~ /\n/) { |
832 | 836 | $full_line = ""; |
833 | 837 | } |
838 | + | |
839 | + if ($stop_test_after > 0 && !$booted && !$bug) { | |
840 | + if (time - $monitor_start > $stop_test_after) { | |
841 | + $done = 1; | |
842 | + } | |
843 | + } | |
834 | 844 | } |
835 | 845 | |
836 | 846 | close(DMESG); |
... | ... | @@ -2002,6 +2012,7 @@ |
2002 | 2012 | $success_line = set_test_option("SUCCESS_LINE", $i); |
2003 | 2013 | $stop_after_success = set_test_option("STOP_AFTER_SUCCESS", $i); |
2004 | 2014 | $stop_after_failure = set_test_option("STOP_AFTER_FAILURE", $i); |
2015 | + $stop_test_after = set_test_option("STOP_TEST_AFTER", $i); | |
2005 | 2016 | $build_target = set_test_option("BUILD_TARGET", $i); |
2006 | 2017 | $ssh_exec = set_test_option("SSH_EXEC", $i); |
2007 | 2018 | $scp_to_target = set_test_option("SCP_TO_TARGET", $i); |
tools/testing/ktest/sample.conf
... | ... | @@ -306,6 +306,14 @@ |
306 | 306 | # (default 60) |
307 | 307 | #STOP_AFTER_FAILURE = 60 |
308 | 308 | |
309 | +# In case the console constantly fills the screen, having | |
310 | +# a specified time to stop the test if it never succeeds nor fails | |
311 | +# is recommended. | |
312 | +# Note: this is ignored if a success or failure is detected. | |
313 | +# (in seconds) | |
314 | +# (default 600, -1 is to never stop) | |
315 | +#STOP_TEST_AFTER = 600 | |
316 | + | |
309 | 317 | # Stop testing if a build fails. If set, the script will end if |
310 | 318 | # a failure is detected, otherwise it will save off the .config, |
311 | 319 | # dmesg and bootlog in a directory called |