mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 01:24:12 +08:00
ktest: Add BISECT_SKIP
If a during a git bisect, ktest fails on something other than what it is testing (if BISECT_TYPE is test but it fails on build), if BISECT_SKIP is set, then it will do a "git bisect skip" instead of just failing the bisect and letting the user find a good commit to test. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
c960bb9f59
commit
c23dca7cd2
@ -38,6 +38,7 @@ $default{"BUILD_OPTIONS"} = "";
|
|||||||
$default{"BISECT_SLEEP_TIME"} = 60; # sleep time between bisects
|
$default{"BISECT_SLEEP_TIME"} = 60; # sleep time between bisects
|
||||||
$default{"CLEAR_LOG"} = 0;
|
$default{"CLEAR_LOG"} = 0;
|
||||||
$default{"BISECT_MANUAL"} = 0;
|
$default{"BISECT_MANUAL"} = 0;
|
||||||
|
$default{"BISECT_SKIP"} = 1;
|
||||||
$default{"SUCCESS_LINE"} = "login:";
|
$default{"SUCCESS_LINE"} = "login:";
|
||||||
$default{"BOOTED_TIMEOUT"} = 1;
|
$default{"BOOTED_TIMEOUT"} = 1;
|
||||||
$default{"DIE_ON_FAILURE"} = 1;
|
$default{"DIE_ON_FAILURE"} = 1;
|
||||||
@ -83,6 +84,7 @@ my $in_bisect = 0;
|
|||||||
my $bisect_bad = "";
|
my $bisect_bad = "";
|
||||||
my $reverse_bisect;
|
my $reverse_bisect;
|
||||||
my $bisect_manual;
|
my $bisect_manual;
|
||||||
|
my $bisect_skip;
|
||||||
my $in_patchcheck = 0;
|
my $in_patchcheck = 0;
|
||||||
my $run_test;
|
my $run_test;
|
||||||
my $redirect;
|
my $redirect;
|
||||||
@ -1169,7 +1171,15 @@ sub run_git_bisect {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# returns 1 on success, 0 on failure
|
sub bisect_reboot {
|
||||||
|
doprint "Reboot and sleep $bisect_sleep_time seconds\n";
|
||||||
|
reboot;
|
||||||
|
start_monitor;
|
||||||
|
wait_for_monitor $bisect_sleep_time;
|
||||||
|
end_monitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
# returns 1 on success, 0 on failure, -1 on skip
|
||||||
sub run_bisect_test {
|
sub run_bisect_test {
|
||||||
my ($type, $buildtype) = @_;
|
my ($type, $buildtype) = @_;
|
||||||
|
|
||||||
@ -1183,6 +1193,10 @@ sub run_bisect_test {
|
|||||||
build $buildtype or $failed = 1;
|
build $buildtype or $failed = 1;
|
||||||
|
|
||||||
if ($type ne "build") {
|
if ($type ne "build") {
|
||||||
|
if ($failed && $bisect_skip) {
|
||||||
|
$in_bisect = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
dodie "Failed on build" if $failed;
|
dodie "Failed on build" if $failed;
|
||||||
|
|
||||||
# Now boot the box
|
# Now boot the box
|
||||||
@ -1194,6 +1208,12 @@ sub run_bisect_test {
|
|||||||
monitor or $failed = 1;
|
monitor or $failed = 1;
|
||||||
|
|
||||||
if ($type ne "boot") {
|
if ($type ne "boot") {
|
||||||
|
if ($failed && $bisect_skip) {
|
||||||
|
end_monitor;
|
||||||
|
bisect_reboot;
|
||||||
|
$in_bisect = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
dodie "Failed on boot" if $failed;
|
dodie "Failed on boot" if $failed;
|
||||||
|
|
||||||
do_run_test or $failed = 1;
|
do_run_test or $failed = 1;
|
||||||
@ -1206,11 +1226,7 @@ sub run_bisect_test {
|
|||||||
|
|
||||||
# reboot the box to a good kernel
|
# reboot the box to a good kernel
|
||||||
if ($type ne "build") {
|
if ($type ne "build") {
|
||||||
doprint "Reboot and sleep $bisect_sleep_time seconds\n";
|
bisect_reboot;
|
||||||
reboot;
|
|
||||||
start_monitor;
|
|
||||||
wait_for_monitor $bisect_sleep_time;
|
|
||||||
end_monitor;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$result = 1;
|
$result = 1;
|
||||||
@ -1240,10 +1256,13 @@ sub run_bisect {
|
|||||||
$ret = !$ret;
|
$ret = !$ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ret) {
|
if ($ret > 0) {
|
||||||
return "good";
|
return "good";
|
||||||
} else {
|
} elsif ($ret == 0) {
|
||||||
return "bad";
|
return "bad";
|
||||||
|
} elsif ($bisect_skip) {
|
||||||
|
doprint "HIT A BAD COMMIT ... SKIPPING\n";
|
||||||
|
return "skip";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1954,6 +1973,7 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
|
|||||||
$sleep_time = set_test_option("SLEEP_TIME", $i);
|
$sleep_time = set_test_option("SLEEP_TIME", $i);
|
||||||
$bisect_sleep_time = set_test_option("BISECT_SLEEP_TIME", $i);
|
$bisect_sleep_time = set_test_option("BISECT_SLEEP_TIME", $i);
|
||||||
$bisect_manual = set_test_option("BISECT_MANUAL", $i);
|
$bisect_manual = set_test_option("BISECT_MANUAL", $i);
|
||||||
|
$bisect_skip = set_test_option("BISECT_SKIP", $i);
|
||||||
$store_failures = set_test_option("STORE_FAILURES", $i);
|
$store_failures = set_test_option("STORE_FAILURES", $i);
|
||||||
$timeout = set_test_option("TIMEOUT", $i);
|
$timeout = set_test_option("TIMEOUT", $i);
|
||||||
$booted_timeout = set_test_option("BOOTED_TIMEOUT", $i);
|
$booted_timeout = set_test_option("BOOTED_TIMEOUT", $i);
|
||||||
|
@ -519,6 +519,15 @@
|
|||||||
# git bisect good, git bisect bad, and running the git bisect replay
|
# git bisect good, git bisect bad, and running the git bisect replay
|
||||||
# if the BISECT_REPLAY is set.
|
# if the BISECT_REPLAY is set.
|
||||||
#
|
#
|
||||||
|
# BISECT_SKIP = 1 (optional, default 0)
|
||||||
|
#
|
||||||
|
# If BISECT_TYPE is set to test but the build fails, ktest will
|
||||||
|
# simply fail the test and end their. You could use BISECT_REPLAY
|
||||||
|
# and BISECT_START to resume after you found a new starting point,
|
||||||
|
# or you could set BISECT_SKIP to 1. If BISECT_SKIP is set to 1,
|
||||||
|
# when something other than the BISECT_TYPE fails, ktest.pl will
|
||||||
|
# run "git bisect skip" and try again.
|
||||||
|
#
|
||||||
# BISECT_REVERSE = 1 (optional, default 0)
|
# BISECT_REVERSE = 1 (optional, default 0)
|
||||||
#
|
#
|
||||||
# In those strange instances where it was broken forever
|
# In those strange instances where it was broken forever
|
||||||
|
Loading…
Reference in New Issue
Block a user