xref: /aosp_15_r20/external/ltp/tools/genhtml.pl (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker#!/usr/bin/perl
2*49cdfc7eSAndroid Build Coastguard Worker#****************************************************************************#
3*49cdfc7eSAndroid Build Coastguard Worker# Copyright (c) International Business Machines  Corp., 2001                 #
4*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
5*49cdfc7eSAndroid Build Coastguard Worker# This program is free software;  you can redistribute it an#or modify       #
6*49cdfc7eSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by       #
7*49cdfc7eSAndroid Build Coastguard Worker# the Free Software Foundation; either version 2 of the License, or          #
8*49cdfc7eSAndroid Build Coastguard Worker# (at your option) any later version.                                        #
9*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
10*49cdfc7eSAndroid Build Coastguard Worker# This program is distributed in the hope that it will be useful,            #
11*49cdfc7eSAndroid Build Coastguard Worker# but WITHOUT ANY WARRANTY;  without even the implied warranty of            #
12*49cdfc7eSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  #
13*49cdfc7eSAndroid Build Coastguard Worker# the GNU General Public License for more details.                           #
14*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
15*49cdfc7eSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License          #
16*49cdfc7eSAndroid Build Coastguard Worker# along with this program;  if not, write to the Free Software               #
17*49cdfc7eSAndroid Build Coastguard Worker# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    #
18*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
19*49cdfc7eSAndroid Build Coastguard Worker#****************************************************************************#
20*49cdfc7eSAndroid Build Coastguard Worker
21*49cdfc7eSAndroid Build Coastguard Worker#****************************************************************************#
22*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
23*49cdfc7eSAndroid Build Coastguard Worker# File:        genhtml.pl                                                    #
24*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
25*49cdfc7eSAndroid Build Coastguard Worker# Description: This is a Parser which can parse the text output generated by #
26*49cdfc7eSAndroid Build Coastguard Worker#              pan and convert the same to am HTML format, with proper high- #
27*49cdfc7eSAndroid Build Coastguard Worker#              lighting of test result backgorund for easy identification of #
28*49cdfc7eSAndroid Build Coastguard Worker#              pass/fail of testcases                                        #
29*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
30*49cdfc7eSAndroid Build Coastguard Worker# Author:      Subrata Modak: [email protected]                     #
31*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
32*49cdfc7eSAndroid Build Coastguard Worker#                                                                            #
33*49cdfc7eSAndroid Build Coastguard Worker#****************************************************************************#
34*49cdfc7eSAndroid Build Coastguard Worker
35*49cdfc7eSAndroid Build Coastguard Worker
36*49cdfc7eSAndroid Build Coastguard Workermy $process_line  = 0;
37*49cdfc7eSAndroid Build Coastguard Workermy $row_line      = "";
38*49cdfc7eSAndroid Build Coastguard Workermy $flag          = 0;
39*49cdfc7eSAndroid Build Coastguard Workermy $flag2         = 0;
40*49cdfc7eSAndroid Build Coastguard Workermy $flag3         = 0;
41*49cdfc7eSAndroid Build Coastguard Workermy $flag4         = 0;
42*49cdfc7eSAndroid Build Coastguard Workermy $test_counter  = 1;
43*49cdfc7eSAndroid Build Coastguard Workermy $failed_test_counter       = 0;
44*49cdfc7eSAndroid Build Coastguard Workermy $failed_test_counter_flag  = 0;
45*49cdfc7eSAndroid Build Coastguard Workermy $brok_test_counter       = 0;
46*49cdfc7eSAndroid Build Coastguard Workermy $brok_test_counter_flag  = 0;
47*49cdfc7eSAndroid Build Coastguard Workermy $warn_test_counter       = 0;
48*49cdfc7eSAndroid Build Coastguard Workermy $warn_test_counter_flag  = 0;
49*49cdfc7eSAndroid Build Coastguard Workermy $retr_test_counter       = 0;
50*49cdfc7eSAndroid Build Coastguard Workermy $retr_test_counter_flag  = 0;
51*49cdfc7eSAndroid Build Coastguard Workermy $conf_test_counter       = 0;
52*49cdfc7eSAndroid Build Coastguard Workermy $conf_test_counter_flag  = 0;
53*49cdfc7eSAndroid Build Coastguard Workermy $test_passed             = 0;
54*49cdfc7eSAndroid Build Coastguard Worker
55*49cdfc7eSAndroid Build Coastguard Workermy $detected_fail = 0;
56*49cdfc7eSAndroid Build Coastguard Workermy $detected_pass = 0;
57*49cdfc7eSAndroid Build Coastguard Workermy $detected_warn = 0;
58*49cdfc7eSAndroid Build Coastguard Workermy $detected_brok = 0;
59*49cdfc7eSAndroid Build Coastguard Workermy $detected_retr = 0;
60*49cdfc7eSAndroid Build Coastguard Workermy $detected_conf = 0;
61*49cdfc7eSAndroid Build Coastguard Workermy $background_colour =0;
62*49cdfc7eSAndroid Build Coastguard Worker
63*49cdfc7eSAndroid Build Coastguard Workermy $header_file   = shift (@ARGV) || syntax();
64*49cdfc7eSAndroid Build Coastguard Workermy $start_tag     = shift (@ARGV) || syntax();
65*49cdfc7eSAndroid Build Coastguard Workermy $end_tag       = shift (@ARGV) || syntax();
66*49cdfc7eSAndroid Build Coastguard Workermy $output_tag    = shift (@ARGV) || syntax();
67*49cdfc7eSAndroid Build Coastguard Workermy $execution_tag = shift (@ARGV) || syntax();
68*49cdfc7eSAndroid Build Coastguard Worker
69*49cdfc7eSAndroid Build Coastguard Workersub syntax() {
70*49cdfc7eSAndroid Build Coastguard Worker	print "syntax: prtag2tag start_tag end_tag output_tag execution_tag file(s)\n";
71*49cdfc7eSAndroid Build Coastguard Worker	exit (1);
72*49cdfc7eSAndroid Build Coastguard Worker}
73*49cdfc7eSAndroid Build Coastguard Worker
74*49cdfc7eSAndroid Build Coastguard Workersub get_background_colour_column() {
75*49cdfc7eSAndroid Build Coastguard Worker    if ( $detected_fail == 1 ) {
76*49cdfc7eSAndroid Build Coastguard Worker      return "#ff0000";
77*49cdfc7eSAndroid Build Coastguard Worker    } elsif ( $detected_brok == 1 ) {
78*49cdfc7eSAndroid Build Coastguard Worker      return Yellow;
79*49cdfc7eSAndroid Build Coastguard Worker    } elsif ( $detected_warn == 1 ) {
80*49cdfc7eSAndroid Build Coastguard Worker      return Fuchsia;
81*49cdfc7eSAndroid Build Coastguard Worker    } elsif ( $detected_retr == 1 ) {
82*49cdfc7eSAndroid Build Coastguard Worker      return "#8dc997";
83*49cdfc7eSAndroid Build Coastguard Worker    } elsif ( $detected_conf == 1 ) {
84*49cdfc7eSAndroid Build Coastguard Worker      return Aqua;
85*49cdfc7eSAndroid Build Coastguard Worker    } else {
86*49cdfc7eSAndroid Build Coastguard Worker      return "#66ff66";
87*49cdfc7eSAndroid Build Coastguard Worker    }
88*49cdfc7eSAndroid Build Coastguard Worker}
89*49cdfc7eSAndroid Build Coastguard Worker
90*49cdfc7eSAndroid Build Coastguard Worker
91*49cdfc7eSAndroid Build Coastguard Workerif ($start_tag eq "" || $end_tag eq "" || $output_tag eq "" || $execution_tag eq "") {
92*49cdfc7eSAndroid Build Coastguard Worker	syntax();
93*49cdfc7eSAndroid Build Coastguard Worker}
94*49cdfc7eSAndroid Build Coastguard Worker
95*49cdfc7eSAndroid Build Coastguard Workeropen (FILE, "$header_file") || "Cannot open file: $header_file";
96*49cdfc7eSAndroid Build Coastguard Workerwhile ($line_2 = <FILE>) {
97*49cdfc7eSAndroid Build Coastguard Worker       $row_line = $row_line . $line_2;
98*49cdfc7eSAndroid Build Coastguard Worker}
99*49cdfc7eSAndroid Build Coastguard Worker$row_line =~ s/LTP\ Output\/Log/LTP\ Output\/Log\ (Report\ Generated\ on\ $ENV{TEST_START_TIME})/;
100*49cdfc7eSAndroid Build Coastguard Workerprint $row_line;
101*49cdfc7eSAndroid Build Coastguard Workerclose (FILE);
102*49cdfc7eSAndroid Build Coastguard Worker$row_line = "";
103*49cdfc7eSAndroid Build Coastguard Worker
104*49cdfc7eSAndroid Build Coastguard Worker
105*49cdfc7eSAndroid Build Coastguard Workerforeach my $file (@ARGV) {
106*49cdfc7eSAndroid Build Coastguard Worker
107*49cdfc7eSAndroid Build Coastguard Worker	open (FILE, $file) || die "Cannot open file: $file\n";
108*49cdfc7eSAndroid Build Coastguard Worker
109*49cdfc7eSAndroid Build Coastguard Worker	LINE: while ($line = <FILE>) {
110*49cdfc7eSAndroid Build Coastguard Worker		chomp $line;
111*49cdfc7eSAndroid Build Coastguard Worker
112*49cdfc7eSAndroid Build Coastguard Worker		if ($line =~ /$start_tag/) {
113*49cdfc7eSAndroid Build Coastguard Worker			$process_line = 1;
114*49cdfc7eSAndroid Build Coastguard Worker                        $flag = 1;
115*49cdfc7eSAndroid Build Coastguard Worker		}
116*49cdfc7eSAndroid Build Coastguard Worker		if ($line =~ /$end_tag/) {
117*49cdfc7eSAndroid Build Coastguard Worker                        print "$row_line";
118*49cdfc7eSAndroid Build Coastguard Worker			$process_line  = 0;
119*49cdfc7eSAndroid Build Coastguard Worker                        $flag  = 0;             $flag2 = 0;            $flag3 = 0;            $flag4 = 0;            $flag5 = 0;
120*49cdfc7eSAndroid Build Coastguard Worker                        $detected_fail = 0;     $detected_pass = 0;    $detected_warn = 0;    $detected_brok = 0;    $detected_retr = 0;    $detected_conf = 0;
121*49cdfc7eSAndroid Build Coastguard Worker                        $background_colour = 0; $failed_test_counter_flag = 0; $brok_test_counter_flag = 0; $warn_test_counter_flag = 0; $retr_test_counter_flag = 0; $conf_test_counter_flag = 0;  $row_line= "";
122*49cdfc7eSAndroid Build Coastguard Worker		}
123*49cdfc7eSAndroid Build Coastguard Worker
124*49cdfc7eSAndroid Build Coastguard Worker		if ($process_line) {
125*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag == 2) { #Assuming we will find "tag" and "stime" values here
126*49cdfc7eSAndroid Build Coastguard Worker                             @variable_value_pair = split(/\ /, $line);
127*49cdfc7eSAndroid Build Coastguard Worker                             @tag_value   = split(/=/,$variable_value_pair[0]);
128*49cdfc7eSAndroid Build Coastguard Worker                             @stime_value = split(/=/,$variable_value_pair[1]);
129*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "<tr><td><p><strong>$test_counter</strong></p></td>\n" .
130*49cdfc7eSAndroid Build Coastguard Worker                                                     "<td><p><strong>$tag_value[1]</strong></p></td>\n"     .
131*49cdfc7eSAndroid Build Coastguard Worker                                                     "<td><p><pre><strong>";
132*49cdfc7eSAndroid Build Coastguard Worker                             $get_proper_time = localtime ($stime_value[1]);
133*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "$get_proper_time" . "</strong></pre></p></td>\n";
134*49cdfc7eSAndroid Build Coastguard Worker                             $test_counter++;
135*49cdfc7eSAndroid Build Coastguard Worker                        }
136*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag == 3) { #Assuming we will find "cmdling" value here
137*49cdfc7eSAndroid Build Coastguard Worker                             @variable_value_pair = split(/=/, $line);
138*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "<td><p><strong> $variable_value_pair[1] </strong></p></td>\n";
139*49cdfc7eSAndroid Build Coastguard Worker                        }
140*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag == 4) { #Assuming we will find "contact" value here
141*49cdfc7eSAndroid Build Coastguard Worker                             @variable_value_pair = split(/=/, $line);
142*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "<td><p><strong>$variable_value_pair[1]</strong></p></td>\n";
143*49cdfc7eSAndroid Build Coastguard Worker                        }
144*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag == 5) { #Assuming we will find "analysis" value here
145*49cdfc7eSAndroid Build Coastguard Worker                             @variable_value_pair = split(/=/, $line);
146*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "<td><p><strong>$variable_value_pair[1]</strong></p></td>\n";
147*49cdfc7eSAndroid Build Coastguard Worker                        }
148*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag3 == 1 ) {
149*49cdfc7eSAndroid Build Coastguard Worker                             if ( $flag4 == 1 ) {
150*49cdfc7eSAndroid Build Coastguard Worker				  @variable_value_pair = split(/=/, $line);
151*49cdfc7eSAndroid Build Coastguard Worker				  $row_line = $row_line . "<td><p><strong>$variable_value_pair[1]</strong></p></td>\n";
152*49cdfc7eSAndroid Build Coastguard Worker			     }
153*49cdfc7eSAndroid Build Coastguard Worker                             if ( $flag4 == 2 ) {
154*49cdfc7eSAndroid Build Coastguard Worker                                  @variable_value_pair    = split(/\ /, $line);
155*49cdfc7eSAndroid Build Coastguard Worker                                  @duration_value         = split(/=/, $variable_value_pair[0]);
156*49cdfc7eSAndroid Build Coastguard Worker                                  @termination_type_value = split(/=/, $variable_value_pair[1]);
157*49cdfc7eSAndroid Build Coastguard Worker                                  @termination_id_value   = split(/=/, $variable_value_pair[2]);
158*49cdfc7eSAndroid Build Coastguard Worker                                  @corefile_value         = split(/=/, $variable_value_pair[3]);
159*49cdfc7eSAndroid Build Coastguard Worker                                  $background_colour = get_background_colour_column();
160*49cdfc7eSAndroid Build Coastguard Worker                                  $row_line = $row_line . "<td><p><strong>$duration_value[1]</strong></p></td>\n"     .
161*49cdfc7eSAndroid Build Coastguard Worker                                              "<td><p><strong>$termination_type_value[1]<strong></p></td>\n" .
162*49cdfc7eSAndroid Build Coastguard Worker                                              "<td><p><strong>$termination_id_value[1]</strong></p></td>\n"  .
163*49cdfc7eSAndroid Build Coastguard Worker                                              "<td><p><strong>$corefile_value[1]</strong></p></td>\n";
164*49cdfc7eSAndroid Build Coastguard Worker                                  $row_line =~ s/<tr>/<tr\ bgcolor=$background_colour>/;
165*49cdfc7eSAndroid Build Coastguard Worker                             }
166*49cdfc7eSAndroid Build Coastguard Worker                             if ( $flag4 == 3 ) {
167*49cdfc7eSAndroid Build Coastguard Worker                                  @variable_value_pair    = split(/\ /, $line);
168*49cdfc7eSAndroid Build Coastguard Worker                                  @cutime_value           = split(/=/, $variable_value_pair[0]);
169*49cdfc7eSAndroid Build Coastguard Worker                                  @cstime_value           = split(/=/, $variable_value_pair[1]);
170*49cdfc7eSAndroid Build Coastguard Worker                                  $row_line = $row_line . "<td><p><strong>$cutime_value[1]</strong></p></td>\n" .
171*49cdfc7eSAndroid Build Coastguard Worker                                              "<td><p><strong>$cstime_value[1]</strong></p></td></tr>\n";
172*49cdfc7eSAndroid Build Coastguard Worker                             }
173*49cdfc7eSAndroid Build Coastguard Worker                             $flag4++;
174*49cdfc7eSAndroid Build Coastguard Worker                        }
175*49cdfc7eSAndroid Build Coastguard Worker                        if ( $line =~ /$execution_tag/ ) {
176*49cdfc7eSAndroid Build Coastguard Worker                             $flag2 = 0;
177*49cdfc7eSAndroid Build Coastguard Worker                             $flag3 = 1;
178*49cdfc7eSAndroid Build Coastguard Worker                             $flag4 = 1;
179*49cdfc7eSAndroid Build Coastguard Worker                             $flag5 = 1;
180*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "</strong></pre></td>";
181*49cdfc7eSAndroid Build Coastguard Worker                        }
182*49cdfc7eSAndroid Build Coastguard Worker                        if ( $flag2 == 1 ) {
183*49cdfc7eSAndroid Build Coastguard Worker			    $row_line = $row_line . "$line \n";
184*49cdfc7eSAndroid Build Coastguard Worker                        }
185*49cdfc7eSAndroid Build Coastguard Worker			 if ( $flag5 == 1 ) {
186*49cdfc7eSAndroid Build Coastguard Worker			 	 if ($line =~ "termination_id=1" ) {
187*49cdfc7eSAndroid Build Coastguard Worker					 $detected_fail = 1;
188*49cdfc7eSAndroid Build Coastguard Worker					 $failed_test_counter++;
189*49cdfc7eSAndroid Build Coastguard Worker				 } elsif ($line =~ "termination_id=2" ) {
190*49cdfc7eSAndroid Build Coastguard Worker					 $detected_brok = 1;
191*49cdfc7eSAndroid Build Coastguard Worker					 $brok_test_counter++;
192*49cdfc7eSAndroid Build Coastguard Worker				 } elsif ($line =~ "termination_id=4" ) {
193*49cdfc7eSAndroid Build Coastguard Worker					 $detected_warn = 1;
194*49cdfc7eSAndroid Build Coastguard Worker					 $warn_test_counter++;
195*49cdfc7eSAndroid Build Coastguard Worker				 } elsif ($line =~ "termination_id=32" ) {
196*49cdfc7eSAndroid Build Coastguard Worker					 $detected_conf = 1;
197*49cdfc7eSAndroid Build Coastguard Worker					 $conf_test_counter++;
198*49cdfc7eSAndroid Build Coastguard Worker				 } elsif ($line =~ "termination_id=0" ) {
199*49cdfc7eSAndroid Build Coastguard Worker					 $detected_pass = 1;
200*49cdfc7eSAndroid Build Coastguard Worker					 $test_passed++;
201*49cdfc7eSAndroid Build Coastguard Worker				 }
202*49cdfc7eSAndroid Build Coastguard Worker			 }
203*49cdfc7eSAndroid Build Coastguard Worker                        if ( $line =~ /$output_tag/ ) {
204*49cdfc7eSAndroid Build Coastguard Worker                             $flag2 = 1;
205*49cdfc7eSAndroid Build Coastguard Worker                             $row_line = $row_line . "<td><pre><strong>";
206*49cdfc7eSAndroid Build Coastguard Worker                        }
207*49cdfc7eSAndroid Build Coastguard Worker                        $flag++;
208*49cdfc7eSAndroid Build Coastguard Worker		}
209*49cdfc7eSAndroid Build Coastguard Worker	}
210*49cdfc7eSAndroid Build Coastguard Worker	close (FILE);
211*49cdfc7eSAndroid Build Coastguard Worker}
212*49cdfc7eSAndroid Build Coastguard Worker
213*49cdfc7eSAndroid Build Coastguard Workerprint "</tbody></table></div> \n\n<h2 id=\"_2\">Summary Report</h2>\n\n<div>\n\n<table border=\"1\" cellspacing=\"3\"><tbody>\n<tr>\n<td ";
214*49cdfc7eSAndroid Build Coastguard Workerif ($ENV{LTP_EXIT_VALUE} == 1 ) {
215*49cdfc7eSAndroid Build Coastguard Worker    print "bgcolor=\"#ff0000\"> <strong>Test Summary</strong></p></td><td bgcolor=\"#ff0000\"><strong>Pan reported some Tests FAIL</strong></p></td></tr>\n";
216*49cdfc7eSAndroid Build Coastguard Worker}
217*49cdfc7eSAndroid Build Coastguard Workerelse {
218*49cdfc7eSAndroid Build Coastguard Worker    print "bgcolor=\"#66ff66\"> <strong>Test Summary</strong></p></td><td bgcolor=\"#66ff66\"><strong>Pan reported all Test Pass</strong></p></td></tr>\n";
219*49cdfc7eSAndroid Build Coastguard Worker}
220*49cdfc7eSAndroid Build Coastguard Worker
221*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>LTP Version</strong> </td><td><strong> $ENV{LTP_VERSION}     </strong></td></tr>\n";
222*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Start Time</strong>  </td><td><strong> $ENV{TEST_START_TIME} </strong></td></tr>\n";
223*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>End Time</strong>    </td><td><strong> $ENV{TEST_END_TIME}   </strong></td></tr>\n";
224*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Log Result</strong>  </td><td><a href=\"file://$ENV{TEST_LOGS_DIRECTORY}/\">      <strong>$ENV{TEST_LOGS_DIRECTORY}</strong></a></td></tr>\n";
225*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Output/Failed Result</strong></td><td><a href=\"file://$ENV{TEST_OUTPUT_DIRECTORY}/\"> <strong>$ENV{TEST_OUTPUT_DIRECTORY}</strong></a></td></tr>\n";
226*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Tests</strong></td><td><strong>";
227*49cdfc7eSAndroid Build Coastguard Worker$test_counter--;
228*49cdfc7eSAndroid Build Coastguard Workerprint "$test_counter                         </strong></td></tr>\n";
229*49cdfc7eSAndroid Build Coastguard Worker$test_passed=$test_counter-$failed_test_counter-$brok_test_counter-$warn_test_counter-$retr_test_counter-$conf_test_counter;
230*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Test TPASS:</strong></td><td><strong> $test_passed </strong></td></tr>\n";
231*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Test TFAIL:</strong></td><td><strong> $failed_test_counter </strong></td></tr>\n";
232*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Test TBROK</strong></td><td><strong> $brok_test_counter </strong></td></tr>\n";
233*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Test TWARN</strong></td><td><strong> $warn_test_counter </strong></td></tr>\n";
234*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Total Test TCONF</strong></td><td><strong> $conf_test_counter </strong></td></tr>\n";
235*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Kernel Version</strong></td><td><strong> $ENV{KERNEL_VERSION}  </strong></td></tr>\n";
236*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Machine Architecture</strong></td><td><strong> $ENV{MACHINE_ARCH} </strong></td></tr>\n";
237*49cdfc7eSAndroid Build Coastguard Workerprint "<tr><td><strong>Hostname</strong>  </td> <td><strong>";
238*49cdfc7eSAndroid Build Coastguard Worker$hostname=system("uname -n");             chop($hostname);
239*49cdfc7eSAndroid Build Coastguard Workerprint " $hostname </strong></td></tr></tbody></table></div></body></html>\n";
240