Open MPI logo

MTT Devel Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all MTT Devel mailing list

Subject: Re: [MTT devel] [MTT svn] svn:mtt-svn r1242
From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2008-11-06 11:49:34


Hey, this is good stuff!

It would be fun to sync up the HTML style of
open-mpi.org/mtt with your local HTML file add-on (in a
single .css file?). Now that TextFile dumps .txt *and* .html
report files, maybe we need to rename the module
LocalFile.pm?

-Ethan

On Thu, Nov/06/2008 04:14:54AM, miked_at_[hidden] wrote:
> Author: miked
> Date: 2008-11-06 04:14:53 EST (Thu, 06 Nov 2008)
> New Revision: 1242
> URL: https://svn.open-mpi.org/trac/mtt/changeset/1242
>
> Log:
> generate html report: All_phase-summary.html
>
> Text files modified:
> trunk/lib/MTT/Reporter/TextFile.pm | 196 +++++++++++++++++++++++++++++++--------
> 1 files changed, 156 insertions(+), 40 deletions(-)
>
> Modified: trunk/lib/MTT/Reporter/TextFile.pm
> ==============================================================================
> --- trunk/lib/MTT/Reporter/TextFile.pm (original)
> +++ trunk/lib/MTT/Reporter/TextFile.pm 2008-11-06 04:14:53 EST (Thu, 06 Nov 2008)
> @@ -158,8 +158,8 @@
>
> print $summary_header;
>
> - my $table = Text::TabularDisplay->new(("Phase","Section","MPI Version", "Duration (secs.)","Pass","Fail","Time out","Skip"));
> - my ($total_fail, $total_succ, $total_tests,$total_duration) = (0,0,0,0);
> + my $table = Text::TabularDisplay->new(("Phase","Section","MPI Version", "Duration","Pass","Fail","Time out","Skip","Detailed report"));
> + my ($total_fail, $total_succ, $total_duration, $html_table_content) = (0,0,0,"");
>
> foreach my $results (@$results_arr) {
>
> @@ -168,41 +168,48 @@
>
> foreach my $section (keys %{$phase_obj}) {
> my $section_obj = $results->{$phase}{$section};
> -
> - my ($pass, $fail, $timed, $skipped, $duration, $mpi_version) = (0, 0, 0, 0, 0, undef);
> + my ($per_mpiver) = ();
>
> foreach my $results_hash (@$section_obj) {
>
> + my $mpi_version = $results_hash->{mpi_version};
> if ($results_hash->{test_result} eq MTT::Values::PASS) {
> - $pass++;
> + $per_mpiver->{$mpi_version}{pass}++;
> + $total_succ++;
> } elsif ($results_hash->{test_result} eq MTT::Values::FAIL) {
> - $fail++;
> + $per_mpiver->{$mpi_version}{fail}++;
> + $total_fail++;
> } elsif ($results_hash->{test_result} eq MTT::Values::TIMED_OUT) {
> - $timed++;
> + $per_mpiver->{$mpi_version}{timed}++;
> + $total_fail++;
> } elsif ($results_hash->{test_result} eq MTT::Values::SKIPPED) {
> - $skipped++;
> + $per_mpiver->{$mpi_version}{skipped}++;
> }
> if ( defined($results_hash->{duration}) ) {
> my $one_test_duration = $results_hash->{duration};
> $one_test_duration =~ s/(\d+).+/$1/g;
> - $duration += $one_test_duration;
> - }
> -
> - if (defined($results_hash->{mpi_version}) and !$mpi_version) {
> - $mpi_version = $results_hash->{mpi_version};
> + $per_mpiver->{$mpi_version}{duration} += $one_test_duration;
> + $total_duration += $one_test_duration;
> }
> + $per_mpiver->{$mpi_version}{report} = $results_hash;
> }
>
> -
> - $total_fail += $fail + $timed;
> - $total_succ += $pass;
> - $total_duration += $duration;
> - $table->add($phase, $section, $mpi_version, $duration, $pass, $fail, $timed, $skipped);
> + foreach my $mpi_version (keys %{$per_mpiver}) {
> + my $mpi_stat = $per_mpiver->{$mpi_version};
> + my $report = $mpi_stat->{report};
> + my $rep_file = basename(_get_filename($report, $section));
> +
> + my $duration_human = _convert_duration($mpi_stat->{duration});
> + $table->add($phase, $section, $mpi_version, $duration_human, $mpi_stat->{pass}, $mpi_stat->{fail},
> + $mpi_stat->{timed}, $mpi_stat->{skipped}, $rep_file);
> + $html_table_content .= add_tr($phase, $section, $mpi_version, $duration_human, $mpi_stat->{pass}, $mpi_stat->{fail},
> + $mpi_stat->{timed}, $mpi_stat->{skipped}, $rep_file);
> + }
> }
> }
> }
> - $total_tests = $total_fail + $total_succ;
>
> + my $total_tests = $total_fail + $total_succ;
> my $total_duration_human = _convert_duration($total_duration);
> my $perf_stat = "
>
> @@ -223,27 +230,40 @@
> print $body;
> _output_results($file, $body);
>
> - if ( $to ) {
> - # Evaluate the email subject header and from
> - my ($subject, $body_footer);
> - my $subject_tmpl = Value($ini, $section, "email_subject");
> - my $body_footer_tmpl = Value($ini, $section, "email_footer");
> - my $from = Value($ini, $section, "email_from");
> -
> - my $overall_mtt_status = "success";
> - if ( $total_fail > 0 ) {
> - $overall_mtt_status = "failed";
> - }
> - my $str = "\$body_footer = \"$body_footer_tmpl\"";
> - eval $str;
> -
> - my $str = "\$subject = \"$subject_tmpl\"";
> - eval $str;
> - Verbose(">> Subject: $subject\n");
> -
> - # Now send it
> - MTT::Mail::Send($subject, $to, $from, $body . $body_footer);
> - Verbose(">> Reported to e-mail: $to\n");
> +
> + # Wrte html report to a file
> + my $html_body = get_html_template();
> + $html_body =~ s/%TESTS_RESULTS%/$html_table_content/g;
> + my $html_totals = "<td>$total_tests</td><td>$total_fail</td><td>$total_succ</td><td>$total_duration_human</td>\n";
> + $html_body =~ s/%TOTALS%/$html_totals/g;
> +
> + my $html_filename = "All_phase-summary.html";
> + my $html_file = "$dirname/" . MTT::Files::make_safe_filename("$html_filename");
> +
> + _output_results($html_file, $html_body);
> +
> +
> + if ( $to ) {
> + # Evaluate the email subject header and from
> + my ($subject, $body_footer);
> + my $subject_tmpl = Value($ini, $section, "email_subject");
> + my $body_footer_tmpl = Value($ini, $section, "email_footer");
> + my $from = Value($ini, $section, "email_from");
> +
> + my $overall_mtt_status = "success";
> + if ( $total_fail > 0 ) {
> + $overall_mtt_status = "failed";
> + }
> + my $str = "\$body_footer = \"$body_footer_tmpl\"";
> + eval $str;
> +
> + my $str = "\$subject = \"$subject_tmpl\"";
> + eval $str;
> + Verbose(">> Subject: $subject\n");
> +
> + # Now send it
> + MTT::Mail::Send($subject, $to, $from, $body . $body_footer);
> + Verbose(">> Reported to e-mail: $to\n");
> }
> return 1;
> }
> @@ -445,5 +465,101 @@
> return $res;
> }
>
> +sub add_tr
> +{
> + my ($phase, $section, $mpi_version, $duration_human, $pass, $fail, $timed, $skipped, $rep_file_url) = @_;
> + my $trClass = "Passed";
> + if ($fail or $timed) {
> + $trClass = "Error";
> + }
> +
> + my $tr = "<tr valign='top' class='$trClass'>\n";
> + $tr .= "<td><a href='$rep_file_url'>$phase</a></td><td>$section</td><td>$mpi_version</td><td>$duration_human</td><td>$pass</td><td>$fail</td><td>$timed</td><td>$skipped</td>\n</tr>\n";
> +
> + return $tr;
> +}
> +
> +sub get_html_template
> +{
> + my $tmpl = '
> + <html xmlns:lxslt="http://xml.apache.org/xslt" xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
> + <META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
> + <head>
> + <style type="text/css" media=screen>
> + body {
> + font:normal 68% verdana,arial,helvetica;
> + color:#000000;
> + }
> + table tr td, table tr th {
> + font-size: 68%;
> + }
> + table.details tr th{
> + font-weight: bold;
> + text-align:left;
> + background:#a6caf0;
> + }
> + table.details tr td{
> + background:#eeeee0;
> + }
> + p {
> + line-height:1.5em;
> + margin-top:0.5em; margin-bottom:1.0em;
> + }
> + h1 {
> + margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
> + }
> + h2 {
> + margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
> + }
> + h3 {
> + margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
> + }
> + h4 {
> + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
> + }
> + h5 {
> + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
> + }
> + h6 {
> + margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
> + }
> + .Error {
> + font-weight:bold; color:red;
> + }
> + .Failure {
> + font-weight:bold; color:purple;
> + }
> + .Properties {
> + text-align:right;
> + }
> + </style>
> + </head>
> + <title>MTT Results: Summary</title>
> + <h1>MTT Results</h1>
> + <hr size="1">
> + <h2>Summary</h2>
> + <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
> + <tr valign="top">
> + <th>Phase</th><th>Section</th><th>MPI Version</th><th>Duration</th><th>Pass</th><th>Fail</th><th>Time Out</th><th>Skip</th>
> + </tr>
> + %TESTS_RESULTS%
> + </table>
> + <h2>Totals</h2>
> + <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
> + <tr valign="top">
> + <th>Tests</th><th>Failed</th><th>Passed</th><th nowrap>Duration</th>
> + </tr>
> + <tr valign="top" class="Pass">
> + %TOTALS%
> + </tr>
> + </table>
> +
> + </body>
> + </html>
> + ';
> + return $tmpl;
> +}
> +
> +
>
> 1;
> _______________________________________________
> mtt-svn mailing list
> mtt-svn_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/mtt-svn