Skip to content

Commit

Permalink
ktest: Add MAX_MONITOR_WAIT option
Browse files Browse the repository at this point in the history
If the console is constantly outputting content, this can cause ktest
to get stuck waiting on the monitor to settle down.

The option MAX_MONITOR_WAIT is the maximum time (in seconds) for ktest
to wait for the console to flush.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Jul 19, 2012
1 parent cf79fab commit 407b95b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
16 changes: 15 additions & 1 deletion tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
"STOP_AFTER_SUCCESS" => 10,
"STOP_AFTER_FAILURE" => 60,
"STOP_TEST_AFTER" => 600,
"MAX_MONITOR_WAIT" => 1800,

# required, and we will ask users if they don't have them but we keep the default
# value something that is common.
Expand Down Expand Up @@ -98,6 +99,7 @@
my $die_on_failure;
my $powercycle_after_reboot;
my $poweroff_after_halt;
my $max_monitor_wait;
my $ssh_exec;
my $scp_to_target;
my $scp_to_target_install;
Expand Down Expand Up @@ -243,6 +245,7 @@
"POWER_OFF" => \$power_off,
"POWERCYCLE_AFTER_REBOOT" => \$powercycle_after_reboot,
"POWEROFF_AFTER_HALT" => \$poweroff_after_halt,
"MAX_MONITOR_WAIT" => \$max_monitor_wait,
"SLEEP_TIME" => \$sleep_time,
"BISECT_SLEEP_TIME" => \$bisect_sleep_time,
"PATCHCHECK_SLEEP_TIME" => \$patchcheck_sleep_time,
Expand Down Expand Up @@ -1133,7 +1136,10 @@ sub reboot {
}

if (defined($time)) {
wait_for_monitor($time, $reboot_success_line);
if (wait_for_monitor($time, $reboot_success_line)) {
# reboot got stuck?
run_command "$power_cycle";
}
end_monitor;
}
}
Expand Down Expand Up @@ -1228,6 +1234,8 @@ sub wait_for_monitor {
my $full_line = "";
my $line;
my $booted = 0;
my $start_time = time;
my $now;

doprint "** Wait for monitor to settle down **\n";

Expand All @@ -1246,8 +1254,14 @@ sub wait_for_monitor {
if ($line =~ /\n/) {
$full_line = "";
}
$now = time;
if ($now - $start_time >= $max_monitor_wait) {
doprint "Exiting monitor flush due to hitting MAX_MONITOR_WAIT\n";
return 1;
}
}
print "** Monitor flushed **\n";
return 0;
}

sub save_logs {
Expand Down
8 changes: 8 additions & 0 deletions tools/testing/ktest/sample.conf
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,14 @@
# (default 60)
#BISECT_SLEEP_TIME = 60

# The max wait time (in seconds) for waiting for the console to finish.
# If for some reason, the console is outputting content without
# ever finishing, this will cause ktest to get stuck. This
# option is the max time ktest will wait for the monitor (console)
# to settle down before continuing.
# (default 1800)
#MAX_MONITOR_WAIT

# The time in between patch checks to sleep (in seconds)
# (default 60)
#PATCHCHECK_SLEEP_TIME = 60
Expand Down

0 comments on commit 407b95b

Please sign in to comment.