[PATCH 07/10] ktest: Introduce PASS_COUNT

From: Andrew Jones
Date: Fri Aug 12 2011 - 09:33:46 EST


Add another config variable that defines the number of times a test
must pass before it really passes. This is good for boot tests, where
the failure doesn't occur every time.

Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
---
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 4265652..38c4532 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{"PASS_COUNT"} = 1;
$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 $pass_count;
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 $count = $pass_count;

grub_install;
- start_monitor_and_boot or $failed = 1;

- if ($failed && $in_bisect && $type ne "boot") {
- end_monitor;
- return -1;
- }
+ while (!$failed && $count--) {
+ 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);
+ $pass_count = set_test_option("PASS_COUNT", $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 23b2fbb..fe7630a 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -266,6 +266,13 @@
# default (undefined)
#TEST = ssh user@machine /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 1)
+#PASS_COUNT = 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/