diff -r 000000000000 -r 83f4b4db085c bldsystemtools/commonbldutils/GenResult/BragStatus.pm --- /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 = ; + 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;