lkml.org 
[lkml]   [2011]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/10 v2] ktest: Introduce RERUN
    Date
    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@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 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


    \
     
     \ /
      Last update: 2011-08-12 20:01    [W:4.155 / U:0.284 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site