Skip to content

Commit

Permalink
Merge tag 'ktest-v3.4' of git://git.kernel.org/pub/scm/linux/kernel/g…
Browse files Browse the repository at this point in the history
…it/rostedt/linux-ktest

Pull ktest changes from Steven Rostedt.

* tag 'ktest-v3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest:
  ktest: Allow a test to override REBOOT_ON_SUCCESS
  ktest: Fix SWITCH_TO_GOOD to also reboot the machine
  ktest: Add SCP_TO_TARGET_INSTALL option
  ktest: Add warning when bugs are ignored
  ktest: Add INSTALL_MOD_STRIP=1 when installing modules
  • Loading branch information
torvalds committed Mar 23, 2012
2 parents e57f146 + 648a182 commit f0a5ec0
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 14 deletions.
56 changes: 45 additions & 11 deletions tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"DIE_ON_FAILURE" => 1,
"SSH_EXEC" => "ssh \$SSH_USER\@\$MACHINE \$SSH_COMMAND",
"SCP_TO_TARGET" => "scp \$SRC_FILE \$SSH_USER\@\$MACHINE:\$DST_FILE",
"SCP_TO_TARGET_INSTALL" => "\${SCP_TO_TARGET}",
"REBOOT" => "ssh \$SSH_USER\@\$MACHINE reboot",
"STOP_AFTER_SUCCESS" => 10,
"STOP_AFTER_FAILURE" => 60,
Expand Down Expand Up @@ -86,11 +87,13 @@
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;
my $ssh_exec;
my $scp_to_target;
my $scp_to_target_install;
my $power_off;
my $grub_menu;
my $grub_number;
Expand Down Expand Up @@ -211,6 +214,7 @@
"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,
Expand Down Expand Up @@ -243,6 +247,7 @@
"BUILD_TARGET" => \$build_target,
"SSH_EXEC" => \$ssh_exec,
"SCP_TO_TARGET" => \$scp_to_target,
"SCP_TO_TARGET_INSTALL" => \$scp_to_target_install,
"CHECKOUT" => \$checkout,
"TARGET_IMAGE" => \$target_image,
"LOCALVERSION" => \$localversion,
Expand Down Expand Up @@ -1113,7 +1118,6 @@ sub reboot_to_good {

if (defined($switch_to_good)) {
run_command $switch_to_good;
return;
}

reboot $time;
Expand Down Expand Up @@ -1349,15 +1353,30 @@ sub run_ssh {
}

sub run_scp {
my ($src, $dst) = @_;
my $cp_scp = $scp_to_target;
my ($src, $dst, $cp_scp) = @_;

$cp_scp =~ s/\$SRC_FILE/$src/g;
$cp_scp =~ s/\$DST_FILE/$dst/g;

return run_command "$cp_scp";
}

sub run_scp_install {
my ($src, $dst) = @_;

my $cp_scp = $scp_to_target_install;

return run_scp($src, $dst, $cp_scp);
}

sub run_scp_mod {
my ($src, $dst) = @_;

my $cp_scp = $scp_to_target;

return run_scp($src, $dst, $cp_scp);
}

sub get_grub_index {

if ($reboot_type ne "grub") {
Expand Down Expand Up @@ -1460,6 +1479,7 @@ sub get_sha1 {
sub monitor {
my $booted = 0;
my $bug = 0;
my $bug_ignored = 0;
my $skip_call_trace = 0;
my $loops;

Expand Down Expand Up @@ -1531,9 +1551,13 @@ sub monitor {
}

if ($full_line =~ /call trace:/i) {
if (!$ignore_errors && !$bug && !$skip_call_trace) {
$bug = 1;
$failure_start = time;
if (!$bug && !$skip_call_trace) {
if ($ignore_errors) {
$bug_ignored = 1;
} else {
$bug = 1;
$failure_start = time;
}
}
}

Expand Down Expand Up @@ -1595,6 +1619,10 @@ sub monitor {
fail "failed - never got a boot prompt." and return 0;
}

if ($bug_ignored) {
doprint "WARNING: Call Trace detected but ignored due to IGNORE_ERRORS=1\n";
}

return 1;
}

Expand All @@ -1621,7 +1649,7 @@ sub install {

my $cp_target = eval_kernel_version $target_image;

run_scp "$outputdir/$build_target", "$cp_target" or
run_scp_install "$outputdir/$build_target", "$cp_target" or
dodie "failed to copy image";

my $install_mods = 0;
Expand All @@ -1643,7 +1671,7 @@ sub install {
return;
}

run_command "$make INSTALL_MOD_PATH=$tmpdir modules_install" or
run_command "$make INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$tmpdir modules_install" or
dodie "Failed to install modules";

my $modlib = "/lib/modules/$version";
Expand All @@ -1656,7 +1684,7 @@ sub install {
run_command "cd $tmpdir && tar -cjf $modtar lib/modules/$version" or
dodie "making tarball";

run_scp "$tmpdir/$modtar", "/tmp" or
run_scp_mod "$tmpdir/$modtar", "/tmp" or
dodie "failed to copy modules";

unlink "$tmpdir/$modtar";
Expand Down Expand Up @@ -3526,8 +3554,10 @@ sub set_test_option {
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;
Expand Down Expand Up @@ -3572,8 +3602,12 @@ sub set_test_option {
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;
14 changes: 11 additions & 3 deletions tools/testing/ktest/sample.conf
Original file line number Diff line number Diff line change
Expand Up @@ -710,10 +710,18 @@
# The variables SSH_USER, MACHINE and SSH_COMMAND are defined
#SSH_EXEC = ssh $SSH_USER@$MACHINE $SSH_COMMAND";

# The way to copy a file to the target
# The way to copy a file to the target (install and modules)
# (default scp $SRC_FILE $SSH_USER@$MACHINE:$DST_FILE)
# The variables SSH_USER, MACHINE, SRC_FILE and DST_FILE are defined.
#SCP_TO_TARGET = scp $SRC_FILE $SSH_USER@$MACHINE:$DST_FILE
# The variables SSH_USER, MACHINE are defined by the config
# SRC_FILE and DST_FILE are ktest internal variables and
# should only have '$' and not the '${}' notation.
# (default scp $SRC_FILE ${SSH_USER}@${MACHINE}:$DST_FILE)
#SCP_TO_TARGET = echo skip scp for $SRC_FILE $DST_FILE

# If install needs to be different than modules, then this
# option will override the SCP_TO_TARGET for installation.
# (default ${SCP_TO_TARGET} )
#SCP_TO_TARGET_INSTALL = scp $SRC_FILE tftp@tftpserver:$DST_FILE

# The nice way to reboot the target
# (default ssh $SSH_USER@$MACHINE reboot)
Expand Down

0 comments on commit f0a5ec0

Please sign in to comment.