Commit 1c8a617a274c4065681d964cd5a5afb921de4a87
Committed by
Steven Rostedt
1 parent
cccae1a62a
Exists in
master
and in
4 other branches
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 |