aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-11-09 12:55:40 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-11-18 11:23:12 -0500
commit1c8a617a274c4065681d964cd5a5afb921de4a87 (patch)
treeac0ed54d6d2a8db807f3a096d7df9fa35b600a31 /tools/testing
parentcccae1a62a81dc8e32bf787024fdcf7ef71f1285 (diff)
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>
Diffstat (limited to 'tools/testing')
-rwxr-xr-xtools/testing/ktest/ktest.pl33
-rw-r--r--tools/testing/ktest/sample.conf12
2 files changed, 44 insertions, 1 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index 52e45b8551e8..6e8597398468 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -45,6 +45,8 @@ $default{"DIE_ON_FAILURE"} = 1;
45$default{"SSH_EXEC"} = "ssh \$SSH_USER\@\$MACHINE \$SSH_COMMAND"; 45$default{"SSH_EXEC"} = "ssh \$SSH_USER\@\$MACHINE \$SSH_COMMAND";
46$default{"SCP_TO_TARGET"} = "scp \$SRC_FILE \$SSH_USER\@\$MACHINE:\$DST_FILE"; 46$default{"SCP_TO_TARGET"} = "scp \$SRC_FILE \$SSH_USER\@\$MACHINE:\$DST_FILE";
47$default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot"; 47$default{"REBOOT"} = "ssh \$SSH_USER\@\$MACHINE reboot";
48$default{"STOP_AFTER_SUCCESS"} = 10;
49$default{"STOP_AFTER_FAILURE"} = 60;
48 50
49my $version; 51my $version;
50my $machine; 52my $machine;
@@ -94,6 +96,8 @@ my $timeout;
94my $booted_timeout; 96my $booted_timeout;
95my $console; 97my $console;
96my $success_line; 98my $success_line;
99my $stop_after_success;
100my $stop_after_failure;
97my $build_target; 101my $build_target;
98my $target_image; 102my $target_image;
99my $localversion; 103my $localversion;
@@ -601,6 +605,9 @@ sub monitor {
601 605
602 reboot_to; 606 reboot_to;
603 607
608 my $success_start;
609 my $failure_start;
610
604 for (;;) { 611 for (;;) {
605 612
606 if ($booted) { 613 if ($booted) {
@@ -619,6 +626,16 @@ sub monitor {
619 626
620 if ($full_line =~ /$success_line/) { 627 if ($full_line =~ /$success_line/) {
621 $booted = 1; 628 $booted = 1;
629 $success_start = time;
630 }
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 }
622 } 639 }
623 640
624 if ($full_line =~ /\[ backtrace testing \]/) { 641 if ($full_line =~ /\[ backtrace testing \]/) {
@@ -626,7 +643,19 @@ sub monitor {
626 } 643 }
627 644
628 if ($full_line =~ /call trace:/i) { 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 }
650 }
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 }
630 } 659 }
631 660
632 if ($full_line =~ /\[ end of backtrace testing \]/) { 661 if ($full_line =~ /\[ end of backtrace testing \]/) {
@@ -1687,6 +1716,8 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
1687 $booted_timeout = set_test_option("BOOTED_TIMEOUT", $i); 1716 $booted_timeout = set_test_option("BOOTED_TIMEOUT", $i);
1688 $console = set_test_option("CONSOLE", $i); 1717 $console = set_test_option("CONSOLE", $i);
1689 $success_line = set_test_option("SUCCESS_LINE", $i); 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 $build_target = set_test_option("BUILD_TARGET", $i); 1721 $build_target = set_test_option("BUILD_TARGET", $i);
1691 $ssh_exec = set_test_option("SSH_EXEC", $i); 1722 $ssh_exec = set_test_option("SSH_EXEC", $i);
1692 $scp_to_target = set_test_option("SCP_TO_TARGET", $i); 1723 $scp_to_target = set_test_option("SCP_TO_TARGET", $i);
diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
index e1272746ce8c..3408c594b2de 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -294,6 +294,18 @@
294# (default "login:") 294# (default "login:")
295#SUCCESS_LINE = login: 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# Stop testing if a build fails. If set, the script will end if 309# Stop testing if a build fails. If set, the script will end if
298# a failure is detected, otherwise it will save off the .config, 310# a failure is detected, otherwise it will save off the .config,
299# dmesg and bootlog in a directory called 311# dmesg and bootlog in a directory called