os/security/cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
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