aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/ktest/ktest.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing/ktest/ktest.pl')
-rwxr-xr-xtools/testing/ktest/ktest.pl33
1 files changed, 32 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);