bldsystemtools/commonbldutils/GenResult/BragStatus.pm
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bldsystemtools/commonbldutils/GenResult/BragStatus.pm	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,320 @@
+# 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 "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:
+# Script summarise and hotlink logfiles by reading
+# HTMLscanlog generated files
+# This initial version is phase 1 of 3.
+# 1. HTML scanlog input --> HTML report output
+# 2. HTML scanlog input --> XML report output + XSLT to HTML
+# 3. XML scanlog input  --> XML report output + XSLT to HTML
+# 
+#
+
+#!/usr/bin/perl -w
+package BragStatus;
+use FindBin;
+use FileRead;
+require GenResult;
+use strict;
+
+use constant SINGLE_SMOKETEST_FAILURE   => 1;
+use constant PLATFORM_SMOKETEST_FAILURE => 2;
+use constant PLATFORM_SMOKETEST_SUCCESS => 0;
+
+my $gBragStatus = "Green";
+my $iHTMLFileName = "testlog.html";
+my $iTraceFileName = "trace.txt";
+my $iDevkitFileName = "Devkit\.log";
+
+my $iCfgFileLocation = $FindBin::Bin;
+#Read in the products from a cfg file
+my $text = FileRead::file_read("$iCfgFileLocation\\Product_AutoSmokeTest.cfg");
+my %iProducts = $text =~ /^\s*(\w+\.?\w+)\s*=\s*(.+)$/mg ;
+#Read in the smoketest list from a cfg file
+my $Smoketext = FileRead::file_read ("$iCfgFileLocation\\AutoSmoketests.cfg");
+my %iTests = $Smoketext =~ /^\s*(\w+\s*\w*\s*)=\s*(.+)$/mg ;
+
+my $iNumberOfTests = scalar(my @iTempArray = values %iTests);
+my $iLogsPublishLocation = "";
+
+# Entry point into the BragStatus module
+sub main
+{
+    my ($iDir, $iSnapshot, $iProduct, $iLinkPath) = @_;
+    # set file names, so that they can be accessed globally
+    ${GenResult::iGTFileName}    = "GT.summary.html";
+    ${GenResult::iTVFileName}    = "TV.summary.html";
+    ${GenResult::iBUILDFileName} = "$iSnapshot"."_Symbian_OS_v"."$iProduct".".summary.html";
+    ${GenResult::iCBRFileName}   = "$iSnapshot"."_Symbian_OS_v"."$iProduct"."_cbr.summary.html";
+    ${GenResult::iROMFileName}   = "techviewroms"."$iSnapshot"."_Symbian_OS_v"."$iProduct". ".log";
+   
+    my $iLinkPathLocation = "";
+    $iDir =~  s/[^\\]$/$&\\/; #add trailing backslash, if missing
+    $iLogsPublishLocation  = $iDir;
+    if (-e $iLinkPath) {
+        $iLinkPathLocation = $iLinkPath;
+    } else {
+        # if no link path is specified, then use current directory location
+        #print "WARNING:" .$iLinkPath. " does not exist, linking with relative paths\n";
+        $iLinkPathLocation = $iLogsPublishLocation;
+    }
+
+    if (-e $iLogsPublishLocation) 
+     {
+     #Set the Files for the Smoketest package 
+     ${GenResult::iGTLogFileLocation}    = $iLogsPublishLocation.${GenResult::iGTFileName};
+     ${GenResult::iTVLogFileLocation}    = $iLogsPublishLocation.${GenResult::iTVFileName};
+     ${GenResult::iBUILDLogFileLocation} = $iLogsPublishLocation.${GenResult::iBUILDFileName};
+     ${GenResult::iCBRLogFileLocation}   = $iLogsPublishLocation.${GenResult::iCBRFileName};
+     ${GenResult::iROMLogFileLocation}   = $iLogsPublishLocation.${GenResult::iROMFileName};
+
+     #################################### 
+     #BUILD RESULTS 
+     ####################################
+     CheckBuildResults();
+     }
+    else
+     {
+     #Something is seriously wrong if there is no logs
+     setBragStatus("Black");
+     }
+
+    ###############################
+    #SMOKETEST
+    ###############################
+    CheckSmokeTest($iProduct, $iSnapshot."_Symbian_OS_v".$iProduct);
+    ###############################
+    CheckDevkit($iProduct);
+    #CBR EXIST
+    ###############################
+    CheckCBRs($iProduct, $iSnapshot);	
+    return $gBragStatus;
+}
+
+#########################################################
+# Name:CheckSmokeTest
+# Input: Product
+# Outout: None
+# Description: Checks the smoketest tables for any errors
+#########################################################
+sub CheckSmokeTest
+{
+    my $iProduct  = shift;
+    my $iFileName = shift;
+    my $iResult = 0;
+    my @iProductList = ($iProducts{$iProduct} =~ m/\S+/ig);
+    my $iplatform_counter = 0;
+
+     
+    # Parse results from dabs/autorom smoketest solution
+    # Passing 1 as the second argument ensures that the function acts for brag status only.
+    $iResult = &GenAutoSmokeTestResult::printSTResultRow(1,($iLogsPublishLocation."AutoSmokeTest\\"),@iProductList);
+
+    if($iResult == 1)
+    {
+        #Some tests failed for $iPlatform
+        setBragStatus("Amber");
+    }
+    if($iResult == 2)
+    {
+        #Platform Failure
+        setBragStatus("Red");
+    }
+    
+    if($iResult == -1)
+    {
+        # BRAG status set to TBA as smoke tests do not appear to have been run 
+        setBragStatus("TBA");
+    }
+}
+
+###########################################
+#Name: CheckBuildResults
+#inputs :None
+#Outputs:None
+#Description:Checks the same files as the Build Results table.
+###########################################
+sub CheckBuildResults
+{
+	my @ListofChecks = qw(GT TV BUILD CBR ROM CDB);
+   	my $iCount = "0";
+   	while(@ListofChecks)
+            {
+            my $iFile = shift @ListofChecks;
+            # zero errors, means 'None' is displayed
+            if (!&GenResult::getHandleErrors($iFile)) 
+	     {
+	     setBragStatus("TBA");
+	     #Should jump up to While loop again
+	     next;
+             }
+
+	    my $iResultRow;
+	    my @iResult = &GenResult::getResults($iFile); 
+ 	    foreach (&GenResult::getResults($iFile)) {
+            undef $iResultRow;
+            if (($_->[1] != "0") || ($_->[3] != "0")) 
+	       {
+		#A Build Results Error
+		setBragStatus("Amber");
+               }
+               if ($_->[5] != "0")
+               {
+                   $GenResult::iBraggflag=1;
+               }
+               
+           }#foreach
+	    $iCount++;
+	  }#end while
+}
+##############################################
+# Name: CheckCBRs
+# Inputs : product and snapshot number
+# Outputs: None
+# Description: Checks that the CBRs are created and sets the brag
+# 	       status to Red if they havent been
+###############################################
+sub CheckCBRs
+{
+    my $iProduct = shift;
+    my $iSnapshot = shift;
+
+    my $iCBR_GT_only_Location = "\\\\builds01\\devbuilds\\ComponentisedReleases\\DailyBuildArchive\\Symbian_OS_v$iProduct\\";
+    my $iCBR_GT_techview_Location = "\\\\builds01\\devbuilds\\ComponentisedReleases\\DailyBuildArchive\\Symbian_OS_v$iProduct\\";
+    #Check to see if its a test build
+    if(&GenResult::isTestBuild() eq "1")
+       {
+	$iCBR_GT_only_Location = "\\\\builds01\\devbuilds\\Test_Builds\\ComponentisedReleases\\TestArchive\\Symbian_OS_v$iProduct\\";
+	$iCBR_GT_techview_Location = "\\\\builds01\\devbuilds\\Test_Builds\\ComponentisedReleases\\TestArchive\\Symbian_OS_v$iProduct\\";
+       }
+       
+    if( -e $iCBR_GT_only_Location)
+      {
+      #Check the GT_ONLY
+      if( -e $iCBR_GT_only_Location."\\GT_only_baseline\\$iSnapshot\_Symbian_OS_v$iProduct\\reldata")
+      {
+      setBragStatus("Green");
+      }
+      else
+      {
+      setBragStatus("Red");
+      }
+      #Check the GT_techview_baseline
+      if( -e $iCBR_GT_techview_Location."\\GT_techview_baseline\\$iSnapshot\_Symbian_OS_v$iProduct\\reldata")
+      {
+      setBragStatus("Green");
+      }
+      else
+      {
+      setBragStatus("Red");
+      }
+      }
+      else #No CBRs built so BragStatus is Red
+      {
+      setBragStatus("Red");
+      }
+}
+
+#########################################################
+# Name:CheckDevkit
+# Input: Product
+# Outout: None
+# Description: Checks the Devkit log file for any errors
+#########################################################
+sub CheckDevkit
+{
+    my $iProduct = shift;
+    my $iResult = 0;
+    my @iProductList = ($iProducts{$iProduct} =~ m/\S+/ig);
+    my $iplatform_counter = 0;
+    foreach my $iPlatform (@iProductList)
+    {
+	$iResult = getDEVKITRow($iPlatform);
+	if($iResult == 1)
+	{
+	  #Error in $iPlatform
+	  setBragStatus("Amber");
+	}
+	
+    }
+}
+
+sub getDEVKITRow
+{
+###############################################
+# Name: getDEVKITRow
+# Input: Platform
+# Output: 0 - No problems
+# 	  1 - error in log file
+#
+##############################################
+
+    my $iPlatform = $_[0];
+    my $iDKdir = "\\SmokeTest\\";	
+	
+    open (DevkitLOGFILE, $iLogsPublishLocation.$iDKdir.$iDevkitFileName);
+    my @iDevkitLog = <DevkitLOGFILE>;   
+    my $iErrorCount = 0;
+    my $iLineOK = 0;
+    
+    foreach (@iDevkitLog) {
+       if (m/ERROR:/) 
+             {
+		$iErrorCount++;		 
+        }
+	     else
+	      {
+		$iLineOK++;
+	}
+    }
+	      if($iErrorCount > 0) { return 1;}else{return 0;}
+	     
+}
+
+###############################################
+# Name  : setBragStatus
+# Inputs: Suggested Brag Status "Green","Amber","Red","Black"
+# Outputs: None
+# Description: This function sets the brag status
+# 	       Brag status can only deteriorate, not improve
+###############################################
+sub setBragStatus
+{
+	my $iBstatus = shift;
+	if($gBragStatus eq "Green")
+	  {
+	   $gBragStatus = $iBstatus;
+	   return 0;
+          }
+        if(($gBragStatus eq "Amber") && (($iBstatus eq "Black") || ($iBstatus eq "Red")))
+	  {
+	  $gBragStatus = $iBstatus;
+	  return 0;
+  	  }
+
+        if(($gBragStatus eq "Red") && ($iBstatus eq "Black"))
+	  {
+	  $gBragStatus = $iBstatus;
+	  return 0;
+  	  }
+          
+        if($iBstatus eq "TBA") # Set BRAG to "TBA" if the SmokeTests do not appear to have run.
+        {
+            $gBragStatus = $iBstatus;
+            return 0;
+        }
+
+#For Everything Else leave gBragStatus as is
+        return 0;
+}
+1;