cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 15 da2ae96f639b
--- a/cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/newdigest.pl	Thu Sep 10 14:01:51 2009 +0300
@@ -1,157 +1,240 @@
-#
-# Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of the License "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
-
-use strict;
-use Getopt::Long;
-use IO::Handle;
-use IO::Seekable;
-use File::Basename;
-
-main();
-exit(0);
-
-sub main {
-	if ($#ARGV != 0)
-	{
-		print "usage: newdigest.pl <logfile>\n";
-		exit;
-	}
-	
-	my ($log_file) = $ARGV[0];
-	
-	if (-f $log_file)
-	{
-		system ("del $log_file");
-	}
-	
-	opendir( DIR, "." ) or die("Unable to open directory");
-	my @dirs = readdir DIR;
-	my $entry;
-	my $failed = 0;
-	my $notests = 0;
-
-	open (SUMMARY, ">$log_file") || die "couldn't open digest file: $!";
-	
-	foreach $entry ( sort @dirs )
-	{
-		next if ( $entry eq ".." or $entry eq "." );
-		next if ( -d $entry );
-		
-		if ( $entry =~ /\.log/ || $entry =~ /\.txt/)
-		{
-			parseLog($entry, \$failed, \$notests);
-		}
-		elsif ($entry =~ /\.htm/) 
-		{
-			parseHtm($entry, \$failed, \$notests);
-		}
-	}
-	
-	print SUMMARY "\r\nPassed\tFailed\tTotal\r\n";
-	printf SUMMARY ("%d\t%d\t%d\n", $notests-$failed, $failed, $notests);
-	print SUMMARY "\n";
-	
-	print SUMMARY "\r\n%Passed\t\t%Failed\r\n";
-	printf SUMMARY ("%.2f\t\t%.2f\r\n", 100-$failed/$notests*100, $failed/$notests*100);
-}
-
-
-sub parseLog($$$) {
-	my ($entry, $failed, $notests) = @_;
-
-    open (LOG, "$entry" ) or die("open failed");
-    my $found = "false";
-    while(<LOG>)
-    {
-	chomp;
-	
-	my $line  = $_;
-	$line =~ s/\x0//g;
-	if ($line =~ /tests failed/)
-	{
-	    $line =~ /(\d+) tests failed out of (\d+)/;
-	    printf SUMMARY (" %45s: %s\r\n", $entry, $&);
-	    $found = "true";
-	    $$failed += $1;
-	    $$notests += $2;
-	}
-    }
-    close LOG;
-
-    if ( $found eq "false" && $entry ne "buildid.txt")
-    {
-	printf SUMMARY ("WARNING: Could not parse file %s\r\n", $entry);
-    }
-}
-
-sub parseHtm($$$) {
-	my ($entry, $failed, $notests) = @_;
-    my ($textfile);
-    $textfile = $entry;
-    $textfile =~ s/\.htm/\.log/;
-    next if ( -f $textfile);
-	
-    my $total = 0;
-    my $pass = 0;
-    my $unknown = 0;
-    my $fail = 0;
-    open (LOG, $entry) || die "couldn't open $entry: $!";
-    while (<LOG>)
-    {
-	my ($line) = $_;
-	if ($line =~ /PASS = (\d+)/)
-	{
-	    $pass += $1;
-	}
-	elsif ($line =~ /FAIL = (\d+)/)
-	{
-	    $fail += $1;
-	}
-	elsif ($line =~ /ABORT = (\d+)/)
-	{
-	    $unknown += $1;
-	}
-	elsif ($line =~ /PANIC = (\d+)/)
-	{
-	    $unknown += $1;
-	}
-	elsif ($line =~ /INCONCLUSIVE = (\d+)/)
-	{
-	    $unknown += $1;
-	}
-	elsif ($line =~ /UNKNOWN = (\d+)/)
-	{
-	    $unknown += $1;
-	}
-	elsif ($line =~ /UNEXECUTED = (\d+)/)
-	{
-	    $unknown += $1;
-	}
-    }
-	$total = $pass + $fail + $unknown;
-    close LOG;
-	if($total != 0)
-	{
-	  printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $total-$pass, $total);
-	}
-	else
-	{
-	  printf SUMMARY ("WARNING: %45s: %d tests failed out of %d\r\n", $entry, $total-$pass, $total);
-	}
-    $$notests += $total;
-    $$failed += $fail + $unknown;
-}
+#
+# Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+
+use strict;
+use Getopt::Long;
+use IO::Handle;
+use IO::Seekable;
+use File::Basename;
+
+main();
+exit(0);
+
+sub main {
+	if ($#ARGV != 0)
+	{
+		print "usage: newdigest.pl <logfile>\n";
+		exit;
+	}
+	
+	my ($log_file) = $ARGV[0];
+	
+	if (-f $log_file)
+	{
+		system ("del $log_file");
+	}
+	
+	opendir( DIR, "." ) or die("Unable to open directory");
+	my @dirs = readdir DIR;
+	my $entry;
+	
+	my $nTotalTestCase = 0;
+	my $nTotalPassedCase = 0;
+	my $nTotalFailedCase = 0;
+	my $nTotalPassedStep = 0;
+	my $nTotalFailedStep = 0;
+	my $scriptsRun = 0;
+	open (SUMMARY, ">$log_file") || die "couldn't open digest file: $!";
+	
+	foreach $entry ( sort @dirs )
+	{
+		next if ( $entry eq ".." or $entry eq "." );
+		next if ( -d $entry );
+
+		my $failed = 0;
+		my $passed = 0;
+		my $ntestcasepassed = 0;
+		my $ntestcasefailed = 0;
+
+		if ( $entry =~ /\.log/ || $entry =~ /\.txt/)
+		{
+			parseLog($entry, \$failed, \$passed);
+			#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $failed+$passed);			
+		}
+		elsif ($entry =~ /\.htm/) 
+		{
+			parseHtm($entry, \$failed, \$passed, \$ntestcasefailed, \$ntestcasepassed);
+			#printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $ntestcasefailed, $ntestcasepassed+$ntestcasefailed);
+		}
+		if ( $passed > 0 or $failed > 0)
+		{
+			$scriptsRun++;
+			$nTotalPassedStep += $passed;
+			$nTotalFailedStep += $failed;
+
+			if ( $ntestcasepassed > 0 || $ntestcasefailed > 0 )
+			{
+			$nTotalPassedCase += $ntestcasepassed;
+			$nTotalFailedCase += $ntestcasefailed;
+			}
+			else
+			{
+			if ( $failed > 0 )
+			{
+			$nTotalFailedCase++;
+			}
+			else
+			{
+			$nTotalPassedCase++;
+			}
+			}
+		}
+	}
+	my $ntestScripts = " Test Scripts Run \t";
+	print SUMMARY "\n";	
+	print SUMMARY ($scriptsRun, $ntestScripts);
+	
+	my $nTotalTestCases = $nTotalFailedCase+$nTotalPassedCase;	
+	print SUMMARY "\n";	
+	print SUMMARY "\r\nTest Cases\tPassed\tFailed\tTotal\r\n";
+	printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedCase, $nTotalFailedCase, $nTotalTestCases);
+	if ($nTotalTestCases > 0)
+	{
+	print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";	
+	printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedCase/$nTotalTestCases*100, $nTotalFailedCase/$nTotalTestCases*100);	
+	}
+	my $nTotalTestSteps = $nTotalPassedStep+$nTotalFailedStep;
+	print SUMMARY "\n";
+	print SUMMARY "\r\nTest Steps\tPassed\tFailed\tTotal\r\n";
+	printf SUMMARY ("\t\t%d\t%d\t%d\n", $nTotalPassedStep, $nTotalFailedStep, $nTotalTestSteps);
+	if ($nTotalTestSteps > 0)
+	{
+	print SUMMARY "\r\n\t\t%Passed\t\t%Failed\r\n";
+	printf SUMMARY ("\t\t%.2f\t\t%.2f\r\n", $nTotalPassedStep/$nTotalTestSteps*100, $nTotalFailedStep/$nTotalTestSteps*100);
+	}
+}
+
+
+sub parseLog($$$) {
+	my ($entry, $failed, $passed) = @_;
+
+    open (LOG, "$entry" ) or die("open failed");
+    my $found = "false";
+	my $notests = 0;
+    while(<LOG>)
+    {
+	chomp;
+	
+	my $line  = $_;
+	$line =~ s/\x0//g;
+	if ($line =~ /tests failed/)
+	{
+	    $line =~ /(\d+) tests failed out of (\d+)/;
+	    printf SUMMARY (" %45s: %s\r\n", $entry, $&);
+	    $found = "true";
+	    $$failed = $1;
+	    $notests = $2;
+	}
+    }
+    close LOG;
+
+    if ( $found eq "false" && $entry ne "buildid.txt")
+    {
+	printf SUMMARY ("WARNING: Could not parse file %s\r\n", $entry);
+    }
+	$$passed = $notests - $$failed;
+}
+
+sub parseHtm($$$$$) {
+	my ($entry, $nfailed, $npassed, $nCasesFailed, $nCasesPassed) = @_;
+    my ($textfile);
+    $textfile = $entry;
+    $textfile =~ s/\.htm/\.log/;
+    next if ( -f $textfile);
+	
+    my $ncasestotal = 0;
+	my $nstepstotal = 0;
+	my $passed = 0;
+	my $failed = 0;
+	my $casepassed = 0;
+	my $casefailed = 0;
+	my $TEST_STEP_SECTION = 0;
+	my $TEST_CASE_SECTION = 0;
+	my $noTestCase = 0;
+	
+	
+    open (LOG, $entry) || die "couldn't open $entry: $!";
+    while (<LOG>)
+    {
+		my ($sLine) = $_;
+	
+		if ( $sLine =~ /TEST STEP SUMMARY:<\/font>/i) 
+		{
+			$TEST_STEP_SECTION = 1;
+			$TEST_CASE_SECTION = 0;
+		}
+		elsif ( $sLine =~ /RUN PROGRAM SUMMARY:<\/font>/i) 
+		{
+			$TEST_STEP_SECTION = 0;
+		}
+	        elsif( $sLine =~ /TEST CASE SUMMARY:<\/font>/i)
+		{
+			$TEST_CASE_SECTION = 1;
+			$TEST_STEP_SECTION = 0;
+		}		
+		elsif ( $sLine =~ /SUMMARY:<\/font>/i ) # To Keep Last
+		{
+			$TEST_STEP_SECTION = 1;
+			$noTestCase = 1;
+		}
+	
+		if ( $TEST_STEP_SECTION )
+		{
+			$passed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
+			$passed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
+			$failed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
+		}
+		if ( $TEST_CASE_SECTION )
+		{
+			$casepassed += $1 if( $sLine =~ /<font.*color=00AF00> PASS = (\d+)<\/font>/i);
+			$casepassed += $1 if( $sLine =~ /<font.*color=00AF00>PASS = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=FF0000>FAIL = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>ABORT = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>PANIC = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>INCONCLUSIVE = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNKNOWN = (\d+)<\/font>/i);
+			$casefailed += $1 if( $sLine =~ /<font.*color=0000FF>UNEXECUTED = (\d+)<\/font>/i);
+		}
+    }
+	$ncasestotal = $casefailed + $casepassed;
+	$nstepstotal = $passed + $failed;
+	
+    close LOG;
+	if($ncasestotal != 0 or $noTestCase == 1) 
+	{
+	  printf SUMMARY (" %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
+	}
+	else
+	{
+	  printf SUMMARY ("WARNING: %45s: %d tests failed out of %d\r\n", $entry, $failed, $nstepstotal);
+	}
+	$$npassed = $passed;
+	$$nfailed = $failed;
+	$$nCasesPassed = $casepassed;
+	$$nCasesFailed = $casefailed;
+}
+
+
+
+
+
+