[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1313171885-18148-1-git-send-email-drjones@redhat.com>
Date: Fri, 12 Aug 2011 19:58:05 +0200
From: Andrew Jones <drjones@...hat.com>
To: linux-kernel@...r.kernel.org
Cc: drjones@...hat.com, rostedt@...dmis.org
Subject: [PATCH 07/10 v2] ktest: Introduce RERUN
Add another config variable that defines the number of additional
times a test must pass before it really passes. This is good for
bisecting boot problems, where the failure doesn't occur every time.
---
tools/testing/ktest/ktest.pl | 23 +++++++++++++++--------
tools/testing/ktest/sample.conf | 7 +++++++
2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index e37c67e..28658b4 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -24,6 +24,7 @@ my %default;
$default{"NUM_TESTS"} = 1;
$default{"REBOOT_TYPE"} = "grub";
$default{"TEST_TYPE"} = "test";
+$default{"RERUN"} = 0;
$default{"BUILD_TYPE"} = "randconfig";
$default{"MAKE_CMD"} = "make";
$default{"TIMEOUT"} = 120;
@@ -61,6 +62,7 @@ my $builddir;
my $outputdir;
my $output_config;
my $test_type;
+my $rerun;
my $build_type;
my $build_options;
my $pre_build;
@@ -1495,19 +1497,23 @@ sub do_run_test {
sub do_test {
my ($type) = @_;
my $failed = 0;
+ my $runs = $rerun + 1; # run at least once
grub_install;
- start_monitor_and_boot or $failed = 1;
- if ($failed && $in_bisect && $type ne "boot") {
- end_monitor;
- return -1;
- }
+ while (!$failed && $runs--) {
+ start_monitor_and_boot or $failed = 1;
- if (!$failed && $type ne "boot" && defined($run_test)) {
- do_run_test or $failed = 1;
+ if ($failed && $in_bisect && $type ne "boot") {
+ end_monitor;
+ return -1;
+ }
+
+ if (!$failed && $type ne "boot" && defined($run_test)) {
+ do_run_test or $failed = 1;
+ }
+ end_monitor;
}
- end_monitor;
return !$failed;
}
@@ -2807,6 +2813,7 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
$outputdir = set_test_option("OUTPUT_DIR", $i);
$builddir = set_test_option("BUILD_DIR", $i);
$test_type = set_test_option("TEST_TYPE", $i);
+ $rerun = set_test_option("RERUN", $i);
$build_type = set_test_option("BUILD_TYPE", $i);
$build_options = set_test_option("BUILD_OPTIONS", $i);
$pre_build = set_test_option("PRE_BUILD", $i);
diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
index ba430a7..8d0d33e 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -266,6 +266,13 @@
# default (undefined)
#TEST = ssh user@...hine /root/run_test
+# The number of times the test must pass before we really believe
+# it passes. Generally you could put a loop in the 'TEST' program,
+# but this option makes it easier to do boot testing for problems
+# that don't occur on every boot.
+# (default 0)
+#RERUN = 10
+
# The build type is any make config type or special command
# (default randconfig)
# nobuild - skip the clean and build step
--
1.7.4.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists