Yummy -- thanks Mike!

Can you add this field (and any others you have added) to the wiki?

    https://svn.open-mpi.org/trac/mtt/wiki/MTTINIFileFields

This is our *only* documentation; it's important to keep it up to date.

Thanks!


On Jan 25, 2012, at 6:02 AM, mi...@osl.iu.edu wrote:

> Author: miked
> Date: 2012-01-25 06:02:47 EST (Wed, 25 Jan 2012)
> New Revision: 1433
> URL: https://svn.open-mpi.org/trac/mtt/changeset/1433
> 
> Log:
> * Introduce mtt.break_threshold_timeout_and_fail ini param to specify % of 
> overall failed tests to trigger stop execution.
> 
> 
> Text files modified: 
>   trunk/lib/MTT/Reporter/TextFile.pm |     9 ++++-                            
>        
>   trunk/lib/MTT/Test/Run.pm          |    30 ++++++++++++++++----             
>        
>   trunk/lib/MTT/Test/RunEngine.pm    |    60 
> +++++++++++++++++++++++++++++++-------- 
>   trunk/lib/MTT/Util.pm              |     6 ++++                             
>        
>   trunk/lib/MTT/Values.pm            |     3 +                                
>        
>   5 files changed, 86 insertions(+), 22 deletions(-)
> 
> Modified: trunk/lib/MTT/Reporter/TextFile.pm
> ==============================================================================
> --- trunk/lib/MTT/Reporter/TextFile.pm        (original)
> +++ trunk/lib/MTT/Reporter/TextFile.pm        2012-01-25 06:02:47 EST (Wed, 
> 25 Jan 2012)
> @@ -230,8 +230,13 @@
>     my $filename = "All_phase-summary.txt";
>     my $file = "$dirname/" . MTT::Files::make_safe_filename("$filename");
> 
> -    my $body = join("\n", ($summary_header, $table->render, $perf_stat, 
> $summary_footer));
> -
> +    my $body;
> +    if ($MTT::Globals::Internals->{is_stopped_on_break_threshold}){
> +        $body = join("\n", ($summary_header, $table->render, $perf_stat, 
> $MTT::Globals::Internals->{stopped_on_break_threshold_message}, 
> $summary_footer));
> +    }
> +    else{
> +        $body = join("\n", ($summary_header, $table->render, $perf_stat, 
> $summary_footer));
> +    }   
>     print $body;
>     _output_results($file, $body);
> 
> 
> Modified: trunk/lib/MTT/Test/Run.pm
> ==============================================================================
> --- trunk/lib/MTT/Test/Run.pm (original)
> +++ trunk/lib/MTT/Test/Run.pm 2012-01-25 06:02:47 EST (Wed, 25 Jan 2012)
> @@ -64,8 +64,11 @@
> #--------------------------------------------------------------------------
> 
> sub Run {
> -    my ($ini, $ini_full, $install_dir, $runs_data_dir, $force) = @_;
> +    my ($ini, $ini_full, $install_dir, $runs_data_dir, $force, 
> $count_total_tests_number) = @_;
> 
> +    if ($count_total_tests_number ne "yes"){
> +        Run($ini, $ini_full, $install_dir, $runs_data_dir, $force,"yes");
> +    }
>     # Save the environment
>     my %ENV_SAVE = %ENV;
> 
> @@ -188,7 +191,7 @@
>                                     _do_run($ini, $section, $test_build, 
>                                             $mpi_get, $mpi_install,
>                                             $install_dir, $runs_data_dir, 
> -                                            $force);
> +                                            
> $force,$count_total_tests_number);
>                                     delete 
> $MTT::Globals::Internals->{mpi_get_name};
>                                     delete 
> $MTT::Globals::Internals->{mpi_install_name};
>                                     delete 
> $MTT::Globals::Internals->{test_get_name};
> @@ -196,12 +199,24 @@
>                                     delete 
> $MTT::Globals::Internals->{test_run_name};
>                                     %ENV = %ENV_SAVE;
>                                 }
> +                                last
> +                                if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>                             }
> +                            last
> +                            if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>                         }
> +                        last
> +                        if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>                     }                        
> +                    last
> +                    if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>                 }
> +                last
> +                if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>             }
>         }
> +        last
> +        if ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>     }
> 
>     Verbose("*** Run test phase complete\n");
> @@ -211,7 +226,7 @@
> 
> sub _do_run {
>     my ($ini, $section, $test_build, $mpi_get, $mpi_install, $install_dir, 
> -        $runs_data_dir, $force) = @_;
> +        $runs_data_dir, $force, $count_total_tests_number) = @_;
> 
>     # Simple section name
>     my $simple_section = GetSimpleSection($section);
> @@ -528,9 +543,13 @@
>     # If we got a list of tests to run, invoke the run engine to
>     # actually run them.
>     if ($ret && $ret->{test_result}) {
> -        MTT::Test::RunEngine::RunEngine($ini, $section, $install_dir, 
> +        my $return_value;
> +        $return_value = MTT::Test::RunEngine::RunEngine($ini, $section, 
> $install_dir, 
>                                         $runs_data_dir, $mpi_details,
> -                                        $test_build, $force, $ret);
> +                                        $test_build, $force, $ret, 
> $count_total_tests_number);
> +        if ($count_total_tests_number eq "yes"){
> +            $MTT::Globals::Internals->{total_tests_counter} += $return_value;
> +        }
>     }
> 
>     # Unload any loaded environment modules
> @@ -545,7 +564,6 @@
>         # means reverting to an env snapshot.
>         MTT::EnvImporter::unload(reverse @env_importers);
>     }
> -
> }
> 
> #--------------------------------------------------------------------------
> 
> Modified: trunk/lib/MTT/Test/RunEngine.pm
> ==============================================================================
> --- trunk/lib/MTT/Test/RunEngine.pm   (original)
> +++ trunk/lib/MTT/Test/RunEngine.pm   2012-01-25 06:02:47 EST (Wed, 25 Jan 
> 2012)
> @@ -38,10 +38,14 @@
> my $section;
> my $mpi_details_name;
> my $test_run_full_name;
> +my $break_threshold;
> 
> # Keep track of how many tests have passed, failed, skipped, and timed out
> my $test_results_count;
> 
> +#same as test_results_count but global over all envokations of RunEngine
> +my $test_results_count_global;
> +
> # Submit results after each run or after *all* the runs
> my $report_after_each_result = 0;
> my $report_results_count = 0;
> @@ -56,7 +60,7 @@
>     my ($install_dir, $runs_data_dir, $mpi_details, $test_build, $force, 
> $ret);
> 
>     # Make sure though, that the $ini remains a global
> -    ($ini, $section, $install_dir, $runs_data_dir, $mpi_details, 
> $test_build, $force, $ret) = @_;
> +    ($ini, $section, $install_dir, $runs_data_dir, $mpi_details, 
> $test_build, $force, $ret, my $count_total_tests_number) = @_;
> 
>     my $test_results;
>     $group_reports = MTT::Values::Value($ini, "mtt", "submit_group_results");
> @@ -81,12 +85,16 @@
>     my $variants_count_total =
>         $test_count_total * $np_count_total * $argv_count_total * 
> $exec_count_total;
> 
> +    if ($count_total_tests_number eq "yes"){
> +        return $variants_count_total;
> +    }
>     # Set some thresholds for an early exit
> -    my $break_threshold;
> +    $break_threshold = undef;
>     $break_threshold->{MTT::Values::PASS}      = Value($ini, $section, 
> "break_threshold_pass");
>     $break_threshold->{MTT::Values::FAIL}      = Value($ini, $section, 
> "break_threshold_fail");
>     $break_threshold->{MTT::Values::TIMED_OUT} = Value($ini, $section, 
> "break_threshold_timeout");
>     $break_threshold->{MTT::Values::SKIPPED}   = Value($ini, $section, 
> "break_threshold_skipped");
> +    $break_threshold->{MTT::Values::TIMED_OUT_OR_FAIL} = Value($ini, "mtt", 
> "break_threshold_timeout_and_fail");
> 
>     # This boolean value defaults to 0, and allows the user to submit results
>     # after each test to ensure at least *some* results are submitted (in case
> @@ -208,25 +216,29 @@
>             $run->{wdir} = $wdir;
>         }
>         # Just one np, or an array of np values?
> +
>         if (ref($all_np) eq "") {
> -            $test_results->{$all_np} =
> -                _run_one_np($install_dir, $run, $mpi_details, $all_np, 
> $force);
> +            $test_results->{$all_np} = _run_one_np($install_dir, $run, 
> $mpi_details, $all_np, $force);
>         } else {
>             foreach my $this_np (@$all_np) {
>                 # See if we're supposed to terminate.
>                 last
> -                    if (MTT::Util::time_to_terminate());
> +                   if (MTT::Util::time_to_terminate());
> +
> +                $test_results->{$all_np} = _run_one_np($install_dir, $run, 
> $mpi_details, $this_np,$force);
> 
> -                $test_results->{$this_np} =
> -                    _run_one_np($install_dir, $run, $mpi_details, $this_np,
> -                                $force);
> +                last
> +                   if 
> ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>             }
>         }
> +
> +        last
> +           if ($MTT::Globals::Internals->{is_stopped_on_break_threshold});
>         ++$test_count;
> 
>         # Write out the "to be saved" test run results
>         MTT::Test::SaveRuns($runs_data_dir);
> -        
> +
>         $MTT::Test::Run::mpi_details = $save_run_mpi_details;
> 
>         # Output a progress bar
> @@ -247,6 +259,7 @@
> 
>         MTT::Reporter::QueueSubmit();
>     }
> +
> }
> 
> sub _run_one_np {
> @@ -290,16 +303,30 @@
>                 foreach my $e (@$execs) {
>                     # See if we're supposed to terminate.
>                     last
> -                        if (MTT::Util::time_to_terminate());
> +                    if (MTT::Util::time_to_terminate());
> +                    
>                     _run_one_test($install_dir, $run, $mpi_details, $e, $name,
> -                                  $variant++, $force);
> +                        $variant++, $force);
> +                    
> +                    last
> +                    if (MTT::Util::check_break_threshold(
> +                            $test_results_count_global,
> +                            $break_threshold,
> +                            $MTT::Globals::Internals->{total_tests_counter})
> +                    );
>                 }
>             }
> -            
> +            last
> +            if (MTT::Util::check_break_threshold(
> +                    $test_results_count_global,
> +                    $break_threshold,
> +                    $MTT::Globals::Internals->{total_tests_counter})
> +            );
> +
>             $MTT::Test::Run::test_argv = undef;
>         }
>     }
> -    
> +
>     $MTT::Test::Run::test_np = undef;
> }
> 
> @@ -457,6 +484,13 @@
>     $test_results_count->{$report->{test_result}}++ 
>         if (exists($report->{test_result}));
> 
> +    $test_results_count_global->{$report->{test_result}}++
> +                if (exists($report->{test_result}));
> +
> +    $test_results_count_global->{MTT::Values::TIMED_OUT_OR_FAIL}++
> +                if (exists($report->{test_result}) && 
> +                    (MTT::Values::FAIL == $report->{test_result} || 
> MTT::Values::TIMED_OUT == $report->{test_result}));
> +
>     # If there is an after_each step, run it
>     $ENV{MTT_TEST_RUN_RESULT_MESSAGE} =
>         (MTT::Values::PASS == $report->{test_result} ? "passed" :
> 
> Modified: trunk/lib/MTT/Util.pm
> ==============================================================================
> --- trunk/lib/MTT/Util.pm     (original)
> +++ trunk/lib/MTT/Util.pm     2012-01-25 06:02:47 EST (Wed, 25 Jan 2012)
> @@ -205,6 +205,12 @@
> 
>         if (($count->{$result} / $total) > $threshold->{$result}) {
>             Verbose("--> Threshold ($per) exceeded for \"$result_label\": 
> $count->{$result} out of $total.\n");
> +            $MTT::Globals::Internals->{is_stopped_on_break_threshold} = 
> "true";
> +            $MTT::Globals::Internals->{stopped_on_break_threshold_message} = 
> "--> Threshold ($per) exceeded for \"$result_label\": $count->{$result} out 
> of $total.\n";
> +            print STDOUT "--> Threshold ($per) exceeded for 
> \"$result_label\": $count->{$result} out of $total.\n";
> +            if ($MTT::Globals::Internals->{is_stopped_on_break_threshold}){
> +                print STDOUT "0xdeadbeef: it works";
> +            }
>             return 1;
>         }
>     }
> 
> Modified: trunk/lib/MTT/Values.pm
> ==============================================================================
> --- trunk/lib/MTT/Values.pm   (original)
> +++ trunk/lib/MTT/Values.pm   2012-01-25 06:02:47 EST (Wed, 25 Jan 2012)
> @@ -45,6 +45,7 @@
>     PASS => 1,
>     SKIPPED => 2,
>     TIMED_OUT => 3,
> +    TIMED_OUT_OR_FAIL =>4,
> };
> 
> # Map to human-readable English labels
> @@ -53,7 +54,7 @@
> $result_messages->{MTT::Values::PASS}      = "pass";
> $result_messages->{MTT::Values::TIMED_OUT} = "timeout";
> $result_messages->{MTT::Values::SKIPPED}   = "skipped";
> -
> +$result_messages->{MTT::Values::TIMED_OUT_OR_FAIL} = "timeout_and_fail";
> # current $ini and $section parameters (we use it in funclets)
> our $evaluate_string_ini;
> our $evaluate_string_section;
> _______________________________________________
> mtt-svn mailing list
> mtt-...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-svn


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to