--- /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 (<TESTS>) {
+ 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 <<EOT;
+<html>
+<head>
+<title>$suite Log</title></head>
+<style type="text/css">
+.pass { color: green; }
+.fail { color: red; }
+</style>
+<body>
+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 "</body></html>";
+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 "<b>$name Log</b><br/><br/>";
+ my $fail = 0;
+ $fail += &process_txt_log($txtlog) unless $txtlog eq "";
+ $fail += &process_htm_log($htmlog);
+ if ($fail > 0) {
+ print MAIN "<b>$name: </b><span class=\"fail\"><b>$fail step(s) failed</b></span><br/>";
+ } else {
+ print MAIN "<b>$name: </b><span class=\"pass\"><b>All steps passed</b></span><br/>";
+ }
+}
+
+sub process_txt_log {
+ open LOG, $_[0] or die "Can't open".$_[0].": $!\n";
+ my $fail = 0;
+ while (<LOG>) {
+ print MAIN "Command $_ : ";
+ $_ = <LOG>;
+ print MAIN "<span class=\"pass\">PASS" if /pass/i;
+ do { print MAIN "<span class=\"fail\">FAIL"; $fail++ } if /fail/i;
+ print MAIN "</span><br/>";
+ }
+ close LOG;
+ return $fail;
+}
+
+sub process_htm_log {
+ open LOG, $_[0] or die "Can't open".$_[0].": $!\n";
+ print MAIN "<pre>\n";
+ my $fail = 0;
+ LINE: while (<LOG>) {
+ next LINE if /<\/?html>/;
+ if (/(FAIL|ABORT|PANIC|INCONCLUSIVE|UNKNOWN|UNEXECUTED) = ([0-9]+)/) {
+ $fail += $2;
+ }
+ print MAIN;
+ }
+ print MAIN "</pre>\n";
+ return $fail;
+}
+
+