Commit 2d01b26a1b14ab248f850d858f2ff3de3ead6d33

Authored by Steven Rostedt
Committed by Steven Rostedt
1 parent 8ea0e063a7

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