You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.1 KiB
165 lines
4.1 KiB
#!/usr/bin/perl
|
|
|
|
use CGI qw(:standard escapeHTML);
|
|
|
|
# When something goes wrong before we start output, use this function
|
|
# so there is still output
|
|
sub failure {
|
|
print header("text/html"),start_html;
|
|
print "$_[0]\n";
|
|
print end_html;
|
|
exit;
|
|
}
|
|
|
|
# Most of the work is done in this directory
|
|
unless (chdir("/usr/tests/ltp/results")) {
|
|
failure("Could not get to the results directory\n");
|
|
}
|
|
|
|
|
|
# grab the parameters that determine what's going on then branch
|
|
$get_df = param("get_df");
|
|
if ($get_df) {
|
|
# copy a driver file and output it.
|
|
$get_df = (<$get_df*>)[0];
|
|
($host, $datestr, $suite, $type, $gz) = split(/\./, $get_df);
|
|
#print start_html, "<pre>\n";
|
|
if ($gz) {
|
|
open (DF, "gunzip -c $get_df|") || print "$get_df not found\n";
|
|
} else {
|
|
open (DF, "$get_df") || print "$get_df not found";
|
|
}
|
|
if ($type eq "driver" || $type eq "summary") {
|
|
print header("text/plain");
|
|
$zoom_tag = param("zoom_tag");
|
|
if ($zoom_tag) {
|
|
while (<DF>) {
|
|
# find the start of a test
|
|
while (<DF>) {
|
|
if (/\<\<\<test_start\>\>\>/) {
|
|
$line = <DF>;
|
|
if ($line =~ /^tag=$zoom_tag /) {
|
|
print "<<<test_start>>>\n";
|
|
print $line;
|
|
|
|
do {
|
|
$line = <DF>;
|
|
print $line;
|
|
} until ($line =~ /\<\<\<test_end\>\>\>/);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
print "Did not find tag $zoom_tag\n";
|
|
} else {
|
|
while (<DF>) {
|
|
print $_;
|
|
}
|
|
}
|
|
} elsif ($type eq "scanner") {
|
|
print header("text/html");
|
|
print start_html, "<pre>\n";
|
|
while (<DF>) {
|
|
print;
|
|
if (/^-+/) { last;}
|
|
}
|
|
@rest = <DF>;
|
|
# this is just to put the * at the end of the test case list
|
|
unless (param("raw")) {
|
|
foreach (@rest) { s/\*/{/; }
|
|
foreach (@rest) { s/(\s)-(\s)/\1}\2/; }
|
|
@rest = sort @rest;
|
|
foreach (@rest) { s/{/*/; }
|
|
foreach (@rest) { s/}/-/; }
|
|
}
|
|
|
|
foreach (@rest) {
|
|
s/(\S+)/<a href="results.cgi?get_df=$host.$datestr.$suite.driver&zoom_tag=\1">\1<\/a>/;
|
|
# colorize the status column
|
|
s/\bPASS\b/\<font color\=green\>PASS\<\/font\>/i;
|
|
s/\bFAIL\b/\<font color\=\"red\"\>FAIL\<\/font\>/i;
|
|
s/\bCONF\b/\<font color\=\"yellow\"\>CONF\<\/font\>/i;
|
|
s/\bBROK\b/\<font color\=\"blue\"\>BROK\<\/font\>/i;
|
|
print;
|
|
}
|
|
print "\n</pre>",end_html;
|
|
}
|
|
close(DF);
|
|
#print "\n</pre>\n",end_html;
|
|
} else {
|
|
%results = ();
|
|
|
|
# run through the files in the results directory
|
|
@driver_files = <*driver*>;
|
|
foreach $df (sort(@driver_files)) {
|
|
|
|
($host, $datestr, $suite, $type, $gz) = split(/\./, $df);
|
|
|
|
$a_rec = ();
|
|
$a_rec->{HOST} = $host;
|
|
$a_rec->{DATE} = $datestr;
|
|
$a_rec->{SUITE} = $suite;
|
|
$a_rec->{DRIVER_FILE} = $df;
|
|
|
|
$results{ $a_rec->{DRIVER_FILE} } = $a_rec;
|
|
}
|
|
|
|
# write the HTML file
|
|
print header("text/html"),start_html;
|
|
|
|
@ri = values %results;
|
|
@ri = sort { $a->{HOST} cmp $b->{HOST}
|
|
||$b->{DATE} <=> $a->{DATE}
|
|
||$a->{SUITE} cmp $b->{SUITE} } @ri;
|
|
$lasthost = "";
|
|
$lastdate = "";
|
|
$lastsuite = "";
|
|
$indent = 0;
|
|
print "<table>\n";
|
|
print "<tr><th>Hostname<th>Date<th>Suite</tr>\n";
|
|
foreach $rp ( @ri ) {
|
|
$thishost = $rp->{HOST};
|
|
$thisdate = $rp->{DATE};
|
|
$thissuite = $rp->{SUITE};
|
|
|
|
# figure out where is the table we need to start
|
|
if ($lasthost ne $thishost) {
|
|
$indent = 0;
|
|
} elsif ($lastdate ne $thisdate) {
|
|
$indent = 1;
|
|
} elsif ($lastsuite ne $thissuite) {
|
|
$indent = 2;
|
|
}
|
|
|
|
# write the rows we need depending on the starting point
|
|
# host level
|
|
if ($indent <= 0) {
|
|
print "<tr><td>$thishost\n";
|
|
}
|
|
# date level
|
|
if ($indent <= 1) {
|
|
($year, $month, $day, $hour, $min) = ($thisdate =~ /(\d+)(\d{2})(\d{2})(\d{2})(\d{2})/);
|
|
print "<tr><td><td>$year-$month-$day $hour:$min\n";
|
|
}
|
|
# suite level
|
|
if ($indent <= 2) {
|
|
print "<tr><td><td><td>";
|
|
print "$thissuite";
|
|
print " [<a href=\"results.cgi?get_df=$rp->{DRIVER_FILE}\">driver output</a>]";
|
|
print " [<a href=\"results.cgi?get_df=$thishost.$thisdate.$thissuite.scanner\">results</a>]";
|
|
print " [<a href=\"results.cgi?get_df=$thishost.$thisdate.$thissuite.summary\">summary</a>]";
|
|
|
|
print "\n";
|
|
}
|
|
|
|
# make sure we update the $last... variables
|
|
$lasthost = $thishost;
|
|
$lastdate = $thisdate;
|
|
$lastsuite = $thissuite;
|
|
}
|
|
print "</table>\n";
|
|
print end_html;
|
|
}
|
|
|