Skip to content

Commit

Permalink
ktest.pl: Powercycle the box on reboot if no connection can be made
Browse files Browse the repository at this point in the history
When performing a reboot of the test box, try to ssh to it. If it can't
connect for 5 seconds, then powercycle the box. This is useful because the
reboot is done via ssh, and if you can't ssh to the box because it is hung,
the reboot fails to reboot.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt (VMware) committed Feb 7, 2017
1 parent 6e98d1b commit 6474ace
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -1325,26 +1325,44 @@ sub eval_option {

sub reboot {
my ($time) = @_;
my $powercycle = 0;

# Make sure everything has been written to disk
run_ssh("sync");
# test if the machine can be connected to within 5 seconds
my $stat = run_ssh("echo check machine status", 5);
if (!$stat) {
doprint("power cycle\n");
$powercycle = 1;
}

if ($powercycle) {
run_command "$power_cycle";

if (defined($time)) {
start_monitor;
# flush out current monitor
# May contain the reboot success line
wait_for_monitor 1;
}

# try to reboot normally
if (run_command $reboot) {
if (defined($powercycle_after_reboot)) {
sleep $powercycle_after_reboot;
} else {
# Make sure everything has been written to disk
run_ssh("sync");

if (defined($time)) {
start_monitor;
# flush out current monitor
# May contain the reboot success line
wait_for_monitor 1;
}

# try to reboot normally
if (run_command $reboot) {
if (defined($powercycle_after_reboot)) {
sleep $powercycle_after_reboot;
run_command "$power_cycle";
}
} else {
# nope? power cycle it.
run_command "$power_cycle";
}
} else {
# nope? power cycle it.
run_command "$power_cycle";
}

if (defined($time)) {
Expand Down

0 comments on commit 6474ace

Please sign in to comment.