sl@0
|
1 |
#
|
sl@0
|
2 |
# Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
|
sl@0
|
3 |
# All rights reserved.
|
sl@0
|
4 |
# This component and the accompanying materials are made available
|
sl@0
|
5 |
# under the terms of the License "Eclipse Public License v1.0"
|
sl@0
|
6 |
# which accompanies this distribution, and is available
|
sl@0
|
7 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
sl@0
|
8 |
#
|
sl@0
|
9 |
# Initial Contributors:
|
sl@0
|
10 |
# Nokia Corporation - initial contribution.
|
sl@0
|
11 |
#
|
sl@0
|
12 |
# Contributors:
|
sl@0
|
13 |
#
|
sl@0
|
14 |
# Description:
|
sl@0
|
15 |
#
|
sl@0
|
16 |
|
sl@0
|
17 |
|
sl@0
|
18 |
use strict;
|
sl@0
|
19 |
use Getopt::Long;
|
sl@0
|
20 |
use IO::Handle;
|
sl@0
|
21 |
use IO::Seekable;
|
sl@0
|
22 |
use File::Basename;
|
sl@0
|
23 |
|
sl@0
|
24 |
main();
|
sl@0
|
25 |
exit(0);
|
sl@0
|
26 |
|
sl@0
|
27 |
sub main {
|
sl@0
|
28 |
if ($#ARGV != 0)
|
sl@0
|
29 |
{
|
sl@0
|
30 |
print "usage: newdigest.pl <logfile>\n";
|
sl@0
|
31 |
exit;
|
sl@0
|
32 |
}
|
sl@0
|
33 |
|
sl@0
|
34 |
my ($log_file) = $ARGV[0];
|
sl@0
|
35 |
|
sl@0
|
36 |
if (-f $log_file)
|
sl@0
|
37 |
{
|
sl@0
|
38 |
system ("del $log_file");
|
sl@0
|
39 |
}
|
sl@0
|
40 |
|
sl@0
|
41 |
opendir( DIR, "." ) or die("Unable to open directory");
|
sl@0
|
42 |
my @dirs = readdir DIR;
|
sl@0
|
43 |
my $entry;
|
sl@0
|
44 |
|
sl@0
|
45 |
my $nTotalTestCase = 0;
|
sl@0
|
46 |
my $nTotalPassedCase = 0;
|
sl@0
|
47 |
my $nTotalFailedCase = 0;
|
sl@0
|
48 |
my $nTotalPassedStep = 0;
|
sl@0
|
49 |
my $nTotalFailedStep = 0;
|
sl@0
|
50 |
my $scriptsRun = 0;
|
sl@0
|
51 |
open (SUMMARY, ">$log_file") || die "couldn't open digest file: $!";
|
sl@0
|
52 |
|
sl@0
|
53 |
foreach $entry ( sort @dirs )
|
sl@0
|
54 |
{
|
sl@0
|
55 |
next if ( $entry eq ".." or $entry eq "." );
|
sl@0
|
56 |
next if ( -d $entry );
|
sl@0
|
57 |
|
sl@0
|
58 |
my $failed = 0;
|
sl@0
|
59 |
my $passed = 0;
|
sl@0
|
60 |
my $ntestcasepassed = 0;
|
sl@0
|
61 |
my $ntestcasefailed = 0;
|
sl@0
|
62 |
|
sl@0
|
63 |
if ( $entry =~ /\.log/ || $entry =~ /\.txt/)
|
sl@0
|
64 |
{
|
sl@0
|
65 |
parseLog($entry, \$failed, \$passed);
|
sl@0
|
66 |
#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);
|
sl@0
|
67 |
}
|
sl@0
|
68 |
|
sl@0
|
69 |
elsif ($entry =~ /\.htm/)
|
sl@0
|
70 |
{
|
sl@0
|
71 |
open (HTML_LOG, "$entry" ) or die("open failed");
|
sl@0
|
72 |
my $Is_Tef_Htm = 1;
|
sl@0
|
73 |
|
sl@0
|
74 |
while(<HTML_LOG>)
|
sl@0
|
75 |
{
|
sl@0
|
76 |
chomp;
|
sl@0
|
77 |
|
sl@0
|
78 |
my $line = $_;
|
sl@0
|
79 |
$line =~ s/\x0//g;
|
sl@0
|
80 |
|
sl@0
|
81 |
if ($line =~ /tests failed/)
|
sl@0
|
82 |
{
|
sl@0
|
83 |
parseLog($entry, \$failed, \$passed);
|
sl@0
|
84 |
#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);
|
sl@0
|
85 |
$Is_Tef_Htm = 0;
|
sl@0
|
86 |
}
|
sl@0
|
87 |
|
sl@0
|
88 |
}
|
sl@0
|
89 |
|
sl@0
|
90 |
close HTML_LOG;
|
sl@0
|
91 |
if( $Is_Tef_Htm )
|
sl@0
|
92 |
{
|
sl@0
|
93 |
parseHtm($entry, \$failed, \$passed, \$ntestcasefailed, \$ntestcasepassed);
|
sl@0
|
94 |
}
|
sl@0
|
95 |
}
|
sl@0
|
96 |
if ( $passed > 0 or $failed > 0)
|
sl@0
|
97 |
{
|
sl@0
|
98 |
$scriptsRun++;
|
sl@0
|
99 |
$nTotalPassedStep += $passed;
|
sl@0
|
100 |
$nTotalFailedStep += $failed;
|
sl@0
|
101 |
|
sl@0
|
102 |
if ( $ntestcasepassed > 0 || $ntestcasefailed > 0 )
|
sl@0
|
103 |
{
|
sl@0
|
104 |
$nTotalPassedCase += $ntestcasepassed;
|
sl@0
|
105 |
$nTotalFailedCase += $ntestcasefailed;
|
sl@0
|
106 |
}
|
sl@0
|
107 |
else
|
sl@0
|
108 |
{
|
sl@0
|
109 |
if ( $failed > 0 )
|
sl@0
|
110 |
{
|
sl@0
|
111 |
$nTotalFailedCase++;
|
sl@0
|
112 |
}
|
sl@0
|
113 |
else
|
sl@0
|
114 |
{
|
sl@0
|
115 |
$nTotalPassedCase++;
|
sl@0
|
116 |
}
|
sl@0
|
117 |
}
|
sl@0
|
118 |
}
|
sl@0
|
119 |
}
|
sl@0
|
120 |
my $ntestScripts = " Test Scripts Run \t";
|
sl@0
|
121 |
print SUMMARY "\n";
|
sl@0
|
122 |
print SUMMARY ($scriptsRun, $ntestScripts);
|
sl@0
|
123 |
|
sl@0
|
124 |
my $nTotalTestCases = $nTotalFailedCase+$nTotalPassedCase;
|
sl@0
|
125 |
print SUMMARY "\n";
|
sl@0
|
126 |
print SUMMARY "\r\nTest Cases\tPassed\tFailed\tTotal\r\n";
|
sl@0
|
127 |
printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedCase, $nTotalFailedCase, $nTotalTestCases);
|
sl@0
|
128 |
if ($nTotalTestCases > 0)
|
sl@0
|
129 |
{
|
sl@0
|
130 |
print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";
|
sl@0
|
131 |
printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedCase/$nTotalTestCases*100, $nTotalFailedCase/$nTotalTestCases*100);
|
sl@0
|
132 |
}
|
sl@0
|
133 |
my $nTotalTestSteps = $nTotalPassedStep+$nTotalFailedStep;
|
sl@0
|
134 |
print SUMMARY "\n";
|
sl@0
|
135 |
print SUMMARY "\r\nTest Steps\tPassed\tFailed\tTotal\r\n";
|
sl@0
|
136 |
printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedStep, $nTotalFailedStep, $nTotalTestSteps);
|
sl@0
|
137 |
if ($nTotalTestSteps > 0)
|
sl@0
|
138 |
{
|
sl@0
|
139 |
print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";
|
sl@0
|
140 |
printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedStep/$nTotalTestSteps*100, $nTotalFailedStep/$nTotalTestSteps*100);
|
sl@0
|
141 |
}
|
sl@0
|
142 |
}
|
sl@0
|
143 |
|
sl@0
|
144 |
|
sl@0
|
145 |
sub parseLog($$$) {
|
sl@0
|
146 |
my ($entry, $failed, $passed) = @_;
|
sl@0
|
147 |
|
sl@0
|
148 |
open (LOG, "$entry" ) or die("open failed");
|
sl@0
|
149 |
my $found = "false";
|
sl@0
|
150 |
my $notests = 0;
|
sl@0
|
151 |
while(<LOG>)
|
sl@0
|
152 |
{
|
sl@0
|
153 |
chomp;
|
sl@0
|
154 |
|
sl@0
|
155 |
my $line = $_;
|
sl@0
|
156 |
$line =~ s/\x0//g;
|
sl@0
|
157 |
if ($line =~ /tests failed/)
|
sl@0
|
158 |
{
|
sl@0
|
159 |
$line =~ /(\d+) tests failed out of (\d+)/;
|
sl@0
|
160 |
printf SUMMARY (" %45s: %s\r\n", $entry, $&);
|
sl@0
|
161 |
$found = "true";
|
sl@0
|
162 |
$$failed = $1;
|
sl@0
|
163 |
$notests = $2;
|
sl@0
|
164 |
}
|
sl@0
|
165 |
}
|
sl@0
|
166 |
close LOG;
|
sl@0
|
167 |
|
sl@0
|
168 |
if ( $found eq "false" && $entry ne "buildid.txt")
|
sl@0
|
169 |
{
|
sl@0
|
170 |
printf SUMMARY ("WARNING: Could not parse file %s\r\n", $entry);
|
sl@0
|
171 |
}
|
sl@0
|
172 |
$$passed = $notests - $$failed;
|
sl@0
|
173 |
}
|
sl@0
|
174 |
|
sl@0
|
175 |
sub parseHtm($$$$$) {
|
sl@0
|
176 |
my ($entry, $nfailed, $npassed, $nCasesFailed, $nCasesPassed) = @_;
|
sl@0
|
177 |
my ($textfile);
|
sl@0
|
178 |
$textfile = $entry;
|
sl@0
|
179 |
$textfile =~ s/\.htm/\.log/;
|
sl@0
|
180 |
next if ( -f $textfile);
|
sl@0
|
181 |
|
sl@0
|
182 |
my $ncasestotal = 0;
|
sl@0
|
183 |
my $nstepstotal = 0;
|
sl@0
|
184 |
my $passed = 0;
|
sl@0
|
185 |
my $failed = 0;
|
sl@0
|
186 |
my $casepassed = 0;
|
sl@0
|
187 |
my $casefailed = 0;
|
sl@0
|
188 |
my $TEST_STEP_SECTION = 0;
|
sl@0
|
189 |
my $TEST_CASE_SECTION = 0;
|
sl@0
|
190 |
my $noTestCase = 0;
|
sl@0
|
191 |
|
sl@0
|
192 |
|
sl@0
|
193 |
open (LOG, $entry) || die "couldn't open $entry: $!";
|
sl@0
|
194 |
while (<LOG>)
|
sl@0
|
195 |
{
|
sl@0
|
196 |
my ($sLine) = $_;
|
sl@0
|
197 |
|
sl@0
|
198 |
if ( $sLine =~ /TEST STEP SUMMARY:<\/font>/i)
|
sl@0
|
199 |
{
|
sl@0
|
200 |
$TEST_STEP_SECTION = 1;
|
sl@0
|
201 |
$TEST_CASE_SECTION = 0;
|
sl@0
|
202 |
}
|
sl@0
|
203 |
elsif ( $sLine =~ /RUN PROGRAM SUMMARY:<\/font>/i)
|
sl@0
|
204 |
{
|
sl@0
|
205 |
$TEST_STEP_SECTION = 0;
|
sl@0
|
206 |
}
|
sl@0
|
207 |
elsif( $sLine =~ /TEST CASE SUMMARY:<\/font>/i)
|
sl@0
|
208 |
{
|
sl@0
|
209 |
$TEST_CASE_SECTION = 1;
|
sl@0
|
210 |
$TEST_STEP_SECTION = 0;
|
sl@0
|
211 |
}
|
sl@0
|
212 |
elsif ( $sLine =~ /SUMMARY:<\/font>/i ) # To Keep Last
|
sl@0
|
213 |
{
|
sl@0
|
214 |
$TEST_STEP_SECTION = 1;
|
sl@0
|
215 |
$noTestCase = 1;
|
sl@0
|
216 |
}
|
sl@0
|
217 |
|
sl@0
|
218 |
if ( $TEST_STEP_SECTION )
|
sl@0
|
219 |
{
|
sl@0
|
220 |
$passed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
|
sl@0
|
221 |
$passed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
|
sl@0
|
222 |
$failed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
|
sl@0
|
223 |
$failed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
|
sl@0
|
224 |
$failed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
|
sl@0
|
225 |
$failed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
|
sl@0
|
226 |
$failed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
|
sl@0
|
227 |
$failed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
|
sl@0
|
228 |
}
|
sl@0
|
229 |
if ( $TEST_CASE_SECTION )
|
sl@0
|
230 |
{
|
sl@0
|
231 |
$casepassed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
|
sl@0
|
232 |
$casepassed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
|
sl@0
|
233 |
$casefailed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
|
sl@0
|
234 |
$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
|
sl@0
|
235 |
$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
|
sl@0
|
236 |
$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
|
sl@0
|
237 |
$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
|
sl@0
|
238 |
$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
|
sl@0
|
239 |
}
|
sl@0
|
240 |
}
|
sl@0
|
241 |
$ncasestotal = $casefailed + $casepassed;
|
sl@0
|
242 |
$nstepstotal = $passed + $failed;
|
sl@0
|
243 |
|
sl@0
|
244 |
close LOG;
|
sl@0
|
245 |
if($ncasestotal != 0 or $noTestCase == 1)
|
sl@0
|
246 |
{
|
sl@0
|
247 |
printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
|
sl@0
|
248 |
}
|
sl@0
|
249 |
else
|
sl@0
|
250 |
{
|
sl@0
|
251 |
printf SUMMARY ("WARNING: %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
|
sl@0
|
252 |
}
|
sl@0
|
253 |
$$npassed = $passed;
|
sl@0
|
254 |
$$nfailed = $failed;
|
sl@0
|
255 |
$$nCasesPassed = $casepassed;
|
sl@0
|
256 |
$$nCasesFailed = $casefailed;
|
sl@0
|
257 |
}
|
sl@0
|
258 |
|
sl@0
|
259 |
|
sl@0
|
260 |
|
sl@0
|
261 |
|
sl@0
|
262 |
|
sl@0
|
263 |
|