diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgrtest/automation/processLogs.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgrtest/automation/processLogs.pl Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,161 @@ +# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "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: +# + +$suite = ""; +$verbose = 1; + +$numtests = $ARGV[0]; + +open TESTS, $ARGV[1] or die "Cannot open $ARGV[1]"; +%config = (tdlogs => "", logdir => "", mainlog => ""); +CONFIG: while () { + last CONFIG if /\[tests\]/i; + next CONFIG if /^\n/; + chomp; + ($var, $value) = split /=/, $_; + if (exists $config{$var}) { + $config{$var} = $value; + } +} +close TESTS; + +@rundirs = &find_rundirs; +@sorted = sort { + $a =~ /RunNo([0-9]+)/; + $l = $1; + $b =~ /RunNo([0-9]+)/; + $r = $1; + $r <=> $l; + } @rundirs; + +open MAIN, ">".$config{"mainlog"} or die "Can't open ".$config{"mainlog"}.": $!"; +print MAIN < + +$suite Log + + +EOT +print "Number of test dirs to process: $numtests\n"; +my @dirlist; +for ($i = 0; $i < $numtests; $i++) { + $dirlist[$i] = $sorted[$i]; +} +@dirlist = reverse @dirlist; +for ($i = 0; $i < $numtests; $i++) { + &process_dir($dirlist[$i], ""); +} +print MAIN ""; +close MAIN; + +sub find_rundirs { + my @rundirs; + opendir(RESDIR, $config{"tdlogs"}) or die "Can't open ".$config{"tdlogs"}.": $!\n"; + my @dirs = grep { /^[^.]/ } readdir(RESDIR); + close RESDIR; + my $highest = 0; + my $highDir = ""; + for my $dir (@dirs) { + opendir(SUBDIR, $config{"tdlogs"}."\\$dir") or die "Can't open ".$config{"tdlogs"}."\\$dir: $!\n"; + @subdirs = grep { /[^.]/ } readdir(SUBDIR); + for my $subdir (@subdirs) { + push @rundirs, $config{"tdlogs"}."\\$dir\\$subdir"; +# print "Found ".$config{"tdlogs"}."\\$dir\\$subdir\n" + #$subdir =~ /RunNo([0-9]+)/; + #if ($1 > $highest) { + # $highest = $1; + # $highDir = $config{"tdlogs"}."\\$dir\\$subdir"; + #} + } + close SUBDIR; + } + #return $highDir; + return @rundirs; +} + +sub process_dir { + my ($tdlogdir, $currdir) = @_; + print "Processing $tdlogdir$currdir\n" if $verbose; + chdir("$tdlogdir$currdir"); + #Find all log files that match the ones retrieved from the board and process them. + while (<*.htm>) { + /(.*)\.htm/; + my $htmlog = $_; + my $txtlog = ""; + print "Looking for ".$config{"logdir"}."\\$suite$currdir\\$1.txt\n" if $verbose; + if (-e $config{"logdir"}."\\$suite$currdir\\$1.txt") { + print "found $1.txt\n" if $verbose; + $txtlog = $config{"logdir"}."\\$suite$currdir\\$1.txt"; + } + &process_logs($1, $txtlog, $htmlog); + } + + #Process subdirectories + opendir(DIR, "$tdlogdir$currdir") or die "Can't open $tdlogdir$currdir: $!\n"; + my @dirs = grep { /^[^.]/ } readdir(DIR); + close DIR; + for my $dir (@dirs) { + if (-d "$tdlogdir$currdir\\$dir") { + &process_dir($tdlogdir, "$currdir\\$dir"); + } + } +} + +sub process_logs { + my ($name, $txtlog, $htmlog) = @_; + print MAIN "$name Log

"; + my $fail = 0; + $fail += &process_txt_log($txtlog) unless $txtlog eq ""; + $fail += &process_htm_log($htmlog); + if ($fail > 0) { + print MAIN "$name: $fail step(s) failed
"; + } else { + print MAIN "$name: All steps passed
"; + } +} + +sub process_txt_log { + open LOG, $_[0] or die "Can't open".$_[0].": $!\n"; + my $fail = 0; + while () { + print MAIN "Command $_ : "; + $_ = ; + print MAIN "PASS" if /pass/i; + do { print MAIN "FAIL"; $fail++ } if /fail/i; + print MAIN "
"; + } + close LOG; + return $fail; +} + +sub process_htm_log { + open LOG, $_[0] or die "Can't open".$_[0].": $!\n"; + print MAIN "
\n";
+	my $fail = 0;
+	LINE: while () {
+		next LINE if /<\/?html>/;
+		if (/(FAIL|ABORT|PANIC|INCONCLUSIVE|UNKNOWN|UNEXECUTED) = ([0-9]+)/) {
+			$fail += $2; 
+		}		
+		print MAIN;
+	}
+	print MAIN "
\n"; + return $fail; +} + +