Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bbcb1d3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ktest update from Steven Rostedt:
 "A fix and a clean up to ktest, as well as two small features.

   - A way to allow users to skip a manual bisect.
   - Allowing cherry picked patches to be tested.

  The cherry pick worked for a test I needed, but stressing it may not
  have all the desired effects.  It doesn't cause any regressions so I
  kept it in"

* tag 'ktest-v3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest:
  ktest: Don't bother with bisect good or bad on replay
  ktest: Fix check for new kernel success on rebooting to good kernel
  ktest: add ability to skip during BISECT_MANUAL
  ktest: Add PATCHCHECK_CHERRY
parents 8df6be11 d832d743
Loading
Loading
Loading
Loading
+47 −14
Original line number Diff line number Diff line
@@ -194,6 +194,7 @@ my $config_bisect_check;

my $patchcheck_type;
my $patchcheck_start;
my $patchcheck_cherry;
my $patchcheck_end;

# set when a test is something other that just building or install
@@ -320,6 +321,7 @@ my %option_map = (

    "PATCHCHECK_TYPE"		=> \$patchcheck_type,
    "PATCHCHECK_START"		=> \$patchcheck_start,
    "PATCHCHECK_CHERRY"		=> \$patchcheck_cherry,
    "PATCHCHECK_END"		=> \$patchcheck_end,
);

@@ -1448,6 +1450,12 @@ sub wait_for_monitor {
	}
    }
    print "** Monitor flushed **\n";

    # if stop is defined but wasn't hit, return error
    # used by reboot (which wants to see a reboot)
    if (defined($stop) && !$booted) {
	$bug = 1;
    }
    return $bug;
}

@@ -2336,15 +2344,17 @@ sub success {

sub answer_bisect {
    for (;;) {
	doprint "Pass or fail? [p/f]";
	doprint "Pass, fail, or skip? [p/f/s]";
	my $ans = <STDIN>;
	chomp $ans;
	if ($ans eq "p" || $ans eq "P") {
	    return 1;
	} elsif ($ans eq "f" || $ans eq "F") {
	    return 0;
	} elsif ($ans eq "s" || $ans eq "S") {
	    return -1;
	} else {
	    print "Please answer 'P' or 'F'\n";
	    print "Please answer 'p', 'f', or 's'\n";
	}
    }
}
@@ -2726,15 +2736,17 @@ sub bisect {
    run_command "git bisect start$start_files" or
	dodie "could not start bisect";

    if (defined($replay)) {
	run_command "git bisect replay $replay" or
	    dodie "failed to run replay";
    } else {

	run_command "git bisect good $good" or
	    dodie "could not set bisect good to $good";

	run_git_bisect "git bisect bad $bad" or
	    dodie "could not set bisect bad to $bad";

    if (defined($replay)) {
	run_command "git bisect replay $replay" or
	    dodie "failed to run replay";
    }

    if (defined($start)) {
@@ -3181,9 +3193,16 @@ sub patchcheck {

    my $start = $patchcheck_start;

    my $cherry = $patchcheck_cherry;
    if (!defined($cherry)) {
	$cherry = 0;
    }

    my $end = "HEAD";
    if (defined($patchcheck_end)) {
	$end = $patchcheck_end;
    } elsif ($cherry) {
	die "PATCHCHECK_END must be defined with PATCHCHECK_CHERRY\n";
    }

    # Get the true sha1's since we can use things like HEAD~3
@@ -3197,24 +3216,38 @@ sub patchcheck {
	$type = "boot";
    }

    if ($cherry) {
	open (IN, "git cherry -v $start $end|") or
	    dodie "could not get git list";
    } else {
	open (IN, "git log --pretty=oneline $end|") or
	    dodie "could not get git list";
    }

    my @list;

    while (<IN>) {
	chomp;
	# git cherry adds a '+' we want to remove
	s/^\+ //;
	$list[$#list+1] = $_;
	last if (/^$start/);
    }
    close(IN);

    if (!$cherry) {
	if ($list[$#list] !~ /^$start/) {
	    fail "SHA1 $start not found";
	}

	# go backwards in the list
	@list = reverse @list;
    }

    doprint("Going to test the following commits:\n");
    foreach my $l (@list) {
	doprint "$l\n";
    }

    my $save_clean = $noclean;
    my %ignored_warnings;
+10 −0
Original line number Diff line number Diff line
@@ -906,6 +906,16 @@
#
#  PATCHCHECK_END is the last patch to check (default HEAD)
#
#  PATCHCHECK_CHERRY if set to non zero, then git cherry will be
#      performed against PATCHCHECK_START and PATCHCHECK_END. That is
#
#      git cherry ${PATCHCHECK_START} ${PATCHCHECK_END}
#
#      Then the changes found will be tested.
#
#      Note, PATCHCHECK_CHERRY requires PATCHCHECK_END to be defined.
#      (default 0)
#
#  PATCHCHECK_TYPE is required and is the type of test to run:
#      build, boot, test.
#