Commit 1c8a617a274c4065681d964cd5a5afb921de4a87

Authored by Steven Rostedt
Committed by Steven Rostedt
1 parent cccae1a62a

ktest: Added force stop after success and failure

Added the options STOP_AFTER_SUCCESS and STOP_AFTER_FAILURE to
allow the user to give a time (in seconds) to stop the monitor
after a stack trace or login has been detected. Sometimes the
kernel constantly prints out to the console and this may cause
the test to run indefinitely.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

Showing 2 changed files with 44 additions and 1 deletions Side-by-side Diff

tools/testing/ktest/ktest.pl
... ... @@ -45,6 +45,8 @@
45 45 $default{"SSH_EXEC"} = "ssh \$SSH_USER\@\$MACHINE \$SSH_COMMAND";
46 46 $default{"SCP_TO_TARGET"} = "scp \$SRC_FILE \$SSH_USER\@\$MACHINE:\$DST_FILE";
47 47 $default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot";
  48 +$default{"STOP_AFTER_SUCCESS"} = 10;
  49 +$default{"STOP_AFTER_FAILURE"} = 60;
48 50  
49 51 my $version;
50 52 my $machine;
... ... @@ -94,6 +96,8 @@
94 96 my $booted_timeout;
95 97 my $console;
96 98 my $success_line;
  99 +my $stop_after_success;
  100 +my $stop_after_failure;
97 101 my $build_target;
98 102 my $target_image;
99 103 my $localversion;
... ... @@ -601,6 +605,9 @@
601 605  
602 606 reboot_to;
603 607  
  608 + my $success_start;
  609 + my $failure_start;
  610 +
604 611 for (;;) {
605 612  
606 613 if ($booted) {
607 614  
608 615  
609 616  
... ... @@ -619,16 +626,38 @@
619 626  
620 627 if ($full_line =~ /$success_line/) {
621 628 $booted = 1;
  629 + $success_start = time;
622 630 }
623 631  
  632 + if ($booted && defined($stop_after_success) &&
  633 + $stop_after_success >= 0) {
  634 + my $now = time;
  635 + if ($now - $success_start >= $stop_after_success) {
  636 + doprint "Test forced to stop after $stop_after_success seconds after success\n";
  637 + last;
  638 + }
  639 + }
  640 +
624 641 if ($full_line =~ /\[ backtrace testing \]/) {
625 642 $skip_call_trace = 1;
626 643 }
627 644  
628 645 if ($full_line =~ /call trace:/i) {
629   - $bug = 1 if (!$skip_call_trace);
  646 + if (!$skip_call_trace) {
  647 + $bug = 1;
  648 + $failure_start = time;
  649 + }
630 650 }
631 651  
  652 + if ($bug && defined($stop_after_failure) &&
  653 + $stop_after_failure >= 0) {
  654 + my $now = time;
  655 + if ($now - $failure_start >= $stop_after_failure) {
  656 + doprint "Test forced to stop after $stop_after_failure seconds after failure\n";
  657 + last;
  658 + }
  659 + }
  660 +
632 661 if ($full_line =~ /\[ end of backtrace testing \]/) {
633 662 $skip_call_trace = 0;
634 663 }
... ... @@ -1687,6 +1716,8 @@
1687 1716 $booted_timeout = set_test_option("BOOTED_TIMEOUT", $i);
1688 1717 $console = set_test_option("CONSOLE", $i);
1689 1718 $success_line = set_test_option("SUCCESS_LINE", $i);
  1719 + $stop_after_success = set_test_option("STOP_AFTER_SUCCESS", $i);
  1720 + $stop_after_failure = set_test_option("STOP_AFTER_FAILURE", $i);
1690 1721 $build_target = set_test_option("BUILD_TARGET", $i);
1691 1722 $ssh_exec = set_test_option("SSH_EXEC", $i);
1692 1723 $scp_to_target = set_test_option("SCP_TO_TARGET", $i);
tools/testing/ktest/sample.conf
... ... @@ -294,6 +294,18 @@
294 294 # (default "login:")
295 295 #SUCCESS_LINE = login:
296 296  
  297 +# In case the console constantly fills the screen, having
  298 +# a specified time to stop the test after success is recommended.
  299 +# (in seconds)
  300 +# (default 10)
  301 +#STOP_AFTER_SUCCESS = 10
  302 +
  303 +# In case the console constantly fills the screen, having
  304 +# a specified time to stop the test after failure is recommended.
  305 +# (in seconds)
  306 +# (default 60)
  307 +#STOP_AFTER_FAILURE = 60
  308 +
297 309 # Stop testing if a build fails. If set, the script will end if
298 310 # a failure is detected, otherwise it will save off the .config,
299 311 # dmesg and bootlog in a directory called