ktest: Allow a test to override REBOOT_ON_SUCCESS
authorSteven Rostedt <srostedt@redhat.com>
Wed, 21 Mar 2012 15:18:27 +0000 (11:18 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 21 Mar 2012 15:18:27 +0000 (11:18 -0400)
The option REBOOT_ON_SUCCESS is global, and will have the machine reboot
the the box if all tests are successful. But a test may not want the
machine to reboot, and perhaps have the kernel it loaded be used to
install the next kernel. Or the last test may set up a kernel that the
user may want to look at. In this case, the user could have the global
option REBOOT_ON_SUCCESS be true, but if a test is defined to run at the
end, that test can override the global option and keep the kernel it
installed for the user to log in with.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl

index e7fed79039393fcf365b1e37796a194ed35e9410..c858152f16e25dad99332492b5dd50637ffd22bf 100755 (executable)
@@ -87,6 +87,7 @@ my $reboot_on_error;
 my $switch_to_good;
 my $switch_to_test;
 my $poweroff_on_error;
+my $reboot_on_success;
 my $die_on_failure;
 my $powercycle_after_reboot;
 my $poweroff_after_halt;
@@ -213,6 +214,7 @@ my %option_map = (
     "SWITCH_TO_GOOD"           => \$switch_to_good,
     "SWITCH_TO_TEST"           => \$switch_to_test,
     "POWEROFF_ON_ERROR"                => \$poweroff_on_error,
+    "REBOOT_ON_SUCCESS"                => \$reboot_on_success,
     "DIE_ON_FAILURE"           => \$die_on_failure,
     "POWER_OFF"                        => \$power_off,
     "POWERCYCLE_AFTER_REBOOT"  => \$powercycle_after_reboot,
@@ -3552,8 +3554,10 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
            die "failed to checkout $checkout";
     }
 
-    $no_reboot = 0;
-
+    # A test may opt to not reboot the box
+    if ($reboot_on_success) {
+       $no_reboot = 0;
+    }
 
     if ($test_type eq "bisect") {
        bisect $i;
@@ -3598,8 +3602,12 @@ if ($opt{"POWEROFF_ON_SUCCESS"}) {
     halt;
 } elsif ($opt{"REBOOT_ON_SUCCESS"} && !do_not_reboot) {
     reboot_to_good;
+} elsif (defined($switch_to_good)) {
+    # still need to get to the good kernel
+    run_command $switch_to_good;
 }
 
+
 doprint "\n    $successes of $opt{NUM_TESTS} tests were successful\n\n";
 
 exit 0;