########################################################################################## # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. #------------------------------------------------------------------------------ sub debug_print { foreach $str (@_){ # print( $str ); } } #------------------------------------------------------------------------------ # get the arguments: #------------------------------------------------------------------------------ @ARGV; $UrlName = $ARGV[0]; $logFile = $ARGV[1]; $NumOfSites = $ARGV[2]; $buildRoot = $ARGV[3]; $LinkURL = $ARGV[4]; $useClockTime = $ARGV[5]; #$buildIDFile = '< '.$buildRoot.'\bin\chrome\locales\en-US\navigator\locale\navigator.dtd'; #$buildIDFile = ""; debug_print( "Arguments:[ $UrlName | $logFile | $NumOfSites | $buildRoot | $LinkURL | $useClockTime]\n"); #------------------------------------------------------------------------------ # Open the ID file and get the build ID #------------------------------------------------------------------------------ #open (XUL_FILE, $buildIDFile) or die "Cannot open BuildID file $buildIDFile (AverageTable2.pl)\n"; #$BuildNo = ""; #$LineList; #while () #{ # $ThisLine = $_; # chop ($ThisLine); # if (/Build ID/){ # @LineList = split (/\"/, $ThisLine); # $BuildNo = $LineList[1]; # } #} #@LineList = split (/ /, $BuildNo); #$BuildNo = $LineList[2]; #$BuildNo =~ s/"//g; #$BuildNo =~ s/[>]//g; #debug_print ("Build Number: $BuildNo\n"); #close( XUL_FILE ); #------------------------------------------------------------------------------ # Open the logfile (input) # and the deviation file (output,append) #------------------------------------------------------------------------------ open (LOG_FILE, "< $logFile") or die "Logfile $logFile could not be opened"; #------------------------------------------------------------------------------ # Deviation file: # Flat file used to calculate and display deviation between latest and # week old builds data. # # Format of flat file is attributes separated by commas with no spaces as follows: # BuildNo,date,url,parsingtime,parsingper,contenttime,contentper,frametime, # frameper,styletime,styleper,reflowtime,reflowper,totallayouttime,totallayoutper, # totalpageloadtime ($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); $RealMonth = $Month + 1; $Year += 1900; $BuildNo = $RealMonth.$DayOfMonth.$Year; $file = $BuildNo.".dat"; open (DEVIATION, ">> $file") or die "Deviation file could not be opened"; # add entry to the deviation file ($Second, $Minute, $Hour, $DayOfMonth, $Month, $Year, $WeekDay, $DayOfYear, $IsDST) = localtime (time); $RealMonth = $Month + 1; $Year += 1900; $date2 = $RealMonth.$DayOfMonth.$Year; print (DEVIATION "$BuildNo,$date2,$UrlName,"); #------------------------------------------------------------------------------ # local variables #------------------------------------------------------------------------------ @List; $Content_Time = 0; $Reflow_Time = 0; $FrameAndStyle_Time = 0; $Frame_Time = 0; $Style_Time = 0; $Parse_Time = 0; $TotalPageLoad_Time = 0; $TotalLayout_Time = 0; $Avg_Content_Time = 0; $Avg_Reflow_Time = 0; $Avg_FrameAndStyle_Time = 0; $Avg_Frame_Time = 0; $Avg_Style_Time = 0; $Avg_Parse_Time = 0; $Avg_TotalPageLoad_Time = 0; $Avg_TotalLayout_Time = 0; $Content_Time_Percentage = 0; $Reflow_Time_Percentage = 0; $FrameAndStyle_Time_Percentage = 0; $Frame_Time_Percentage = 0; $Style_Time_Percentage = 0; $Parse_Time_Percentage = 0; $TotalLayout_Time_Percentage = 0; $Avg_Content_Time_Percentage = 0; $Avg_Reflow_Time_Percentage = 0; $Avg_FrameAndStyle_Time_Percentage = 0; $Avg_Frame_Time_Percentage = 0; $Avg_Style_Time_Percentage = 0; $Avg_Parse_Time_Percentage = 0; $Avg_TotalLayout_Time_Percentage = 0; $Num_Entries = 0; $valid = 0; # $WebShell; $temp; $url; $Content_Flag = 0; $Reflow_Flag = 0; $Style_Flag = 0; $Parse_Flag = 0; #------------------------------------------------------------------------------ # Management of averages via average.txt file # NOTE: the averag.txt file is used to accumulate all performance times # and keep track of the number of entries. When completed, the footer.pl # script does the averaging by dividing the accumulated times by the # number of entries #------------------------------------------------------------------------------ # if first site, delete any old Average file (in case the caller did not) # if ( $NumOfSites == 1 ){ unlink( "Average.txt" ); debug_print( "Deleting file Average.txt\n" ); } # load the averages data so we can accumulate it # if ( -r "Average.txt" ) { open (AVERAGE, "< Average.txt"); while( ){ $ThisLine = $_; chop ($ThisLine); if( /Num Entries:/ ){ @list = split( / /, $ThisLine ); $Num_Entries = $list[2]; debug_print( "Num Entries: $Num_Entries\n" ); } if( /Avg Parse:/ ){ @list = split( / /, $ThisLine ); $Avg_Parse_Time = $list[2]; debug_print( "Avg Parse: $Avg_Parse_Time\n" ); } if( /Per Parse:/ ){ @list = split( / /, $ThisLine ); $Avg_Parse_Time_Percentage = $list[2]; debug_print( "Per Parse: $Avg_Parse_Time_Percentage\n" ); } if( /Avg Content:/ ){ @list = split( / /, $ThisLine ); $Avg_Content_Time = $list[2]; debug_print( "Avg Content: $Avg_Content_Time\n" ); } if( /Per Content:/ ){ @list = split( / /, $ThisLine ); $Avg_Content_Time_Percentage = $list[2]; debug_print( "Per Content: $Avg_Content_Time_Percentage\n" ); } if( /Avg Frame:/ ){ @list = split( / /, $ThisLine ); $Avg_Frame_Time = $list[2]; debug_print( "Avg Frame: $Avg_Frame_Time\n" ); } if( /Per Frame:/ ){ @list = split( / /, $ThisLine ); $Avg_Frame_Time_Percentage = $list[2]; debug_print( "Per Frame: $Avg_Frame_Time_Percentage\n" ); } if( /Avg Style:/ ){ @list = split( / /, $ThisLine ); $Avg_Style_Time = $list[2]; debug_print( "Avg Style: $Avg_Style_Time\n" ); } if( /Per Style:/ ){ @list = split( / /, $ThisLine ); $Avg_Style_Time_Percentage = $list[2]; debug_print( "Per Style: $Avg_Style_Time_Percentage\n" ); } if( /Avg Reflow:/ ){ @list = split( / /, $ThisLine ); $Avg_Reflow_Time = $list[2]; debug_print( "Avg Reflow: $Avg_Reflow_Time\n" ); } if( /Per Reflow:/ ){ @list = split( / /, $ThisLine ); $Avg_Reflow_Time_Percentage = $list[2]; debug_print( "Per Reflow: $Avg_Reflow_Time_Percentage\n" ); } if( /Avg TotalLayout:/ ){ @list = split( / /, $ThisLine ); $Avg_TotalLayout_Time = $list[2]; debug_print( "Avg TotalLayout: $Avg_TotalLayout_Time\n" ); } if( /Per Layout:/ ){ @list = split( / /, $ThisLine ); $Avg_TotalLayout_Time_Percentage = $list[2]; debug_print( "Per Layout: $Avg_TotalLayout_Time_Percentage\n" ); } if( /Avg PageLoad:/ ){ @list = split( / /, $ThisLine ); $Avg_TotalPageLoad_Time = $list[2]; debug_print( "Avg PageLoad: $Avg_TotalPageLoad_Time\n" ); } } print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); close (AVERAGE); } #------------------------------------------------------------------------------ # now run through the log file and process the performance data #------------------------------------------------------------------------------ $IsValidURL = 0; while () { $ThisLine = $_; chop ($ThisLine); if (/Timing layout/) { # @List = split (/webshell: /, $ThisLine); # $WebShell = $List[1]; # $WebShell = "(webBrowserChrome=".$WebShell; # $WebShell = $WebShell."):"; # debug_print( "$WebShell\n" ); @List = split (/'/, $ThisLine); $url = $List[1]; debug_print( "(URI: $url) " ); if( $url =~ /$LinkURL/ ){ debug_print( "$url is the one!\n" ); $IsValidURL = 1; } else { debug_print( "Skipping URL $url\n" ); $IsValidURL = 0; } } if (/Content/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); if($useClockTime){ @clockTimeList = split(/:/, $List[6]); $Content_Time += $clockTimeList[2]; } else { $Content_Time += $List[9]; } $Content_Flag = 1; debug_print( "Content Time: $Content_Time\n" ); } } if (/Reflow/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); if($useClockTime){ @clockTimeList = split(/:/, $List[5]); $Reflow_Time += $clockTimeList[2]; } else { $Reflow_Time += $List[8]; } $Reflow_Flag = 1; debug_print( "Reflow Time: $Reflow_Time\n" ); } } if (/Frame construction plus/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); if($useClockTime){ @clockTimeList = split(/:/, $List[9]); $FrameAndStyle_Time += $clockTimeList[2]; } else { $FrameAndStyle_Time += $List[12]; } debug_print( "Frame and Style Time: $FrameAndStyle_Time\n" ); } } if (/Style/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); if($useClockTime){ @clockTimeList = split(/:/, $List[6]); $Style_Time += $clockTimeList[2]; } else { $Style_Time += $List[9]; } $Style_Flag = 1; debug_print( "Style Time: $Style_Time\n" ); } } if (/Parse/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); if($useClockTime){ @clockTimeList = split(/:/, $List[5]); $Parse_Time += $clockTimeList[2]; } else { $Parse_Time += $List[8]; } $Parse_Flag = 1; debug_print( "Parse Time: $Parse_Time\n" ); } } if (/Total/){ if ($IsValidURL == 1){ @List = split (/ /, $ThisLine); $temp = $List[6]; if ( # ($temp == $WebShell) && ($Parse_Flag == 1) && ($Content_Flag == 1) && ($Reflow_Flag == 1) && ($Style_Flag == 1)){ $TotalPageLoad_Time = $List[12]; debug_print( "Total Page Load_Time Time: $TotalPageLoad_Time\n" ); $Content_Flag = 0; $Reflow_Flag = 0; $Style_Flag = 0; $Parse_Flag = 0; } } } } #------------------------------------------------------------------------------ # Calculate the significant time values #------------------------------------------------------------------------------ $Frame_Time = $FrameAndStyle_Time - $Style_Time; if($Frame_Time < 0.0){ print( "\n***** ERROR: negative FrameTime *****\n"); $Frame_Time = 0; } $TotalLayout_Time = $Content_Time + $Reflow_Time + $Frame_Time + $Style_Time + $Parse_Time; $Avg_Time = $Avg_Time + $TotalLayoutTime + $TotalPageLoad_Time; if( $TotalLayout_Time > 0 ){ if ($Content_Time != 0) { $Content_Time_Percentage = ($Content_Time / $TotalLayout_Time) * 100; } if ($Reflow_Time != 0) { $Reflow_Time_Percentage = ($Reflow_Time / $TotalLayout_Time) * 100; } if ($Frame_Time != 0) { $Frame_Time_Percentage = ($Frame_Time / $TotalLayout_Time) * 100; } if ($Style_Time != 0) { $Style_Time_Percentage = ($Style_Time / $TotalLayout_Time) * 100; } if ($Parse_Time != 0) { $Parse_Time_Percentage = ($Parse_Time / $TotalLayout_Time) * 100; } if( $TotalPageLoad_Time > 0 ){ $TotalLayout_Time_Percentage = ($TotalLayout_Time / $TotalPageLoad_Time) * 100; } else { $TotalLayout_Time_Percentage = 100; } } #------------------------------------------------------------------------------ # Add current values to those in the averages-fields #------------------------------------------------------------------------------ $Avg_Content_Time += $Content_Time; $Avg_Reflow_Time += $Reflow_Time; $Avg_Frame_Time += $Frame_Time; $Avg_Style_Time += $Style_Time; $Avg_Parse_Time += $Parse_Time; $Avg_TotalPageLoad_Time += $TotalPageLoad_Time; $Avg_TotalLayout_Time += $TotalLayout_Time; $Avg_Content_Time_Percentage += $Content_Time_Percentage; $Avg_Reflow_Time_Percentage += $Reflow_Time_Percentage; $Avg_Frame_Time_Percentage += $Frame_Time_Percentage; $Avg_Style_Time_Percentage += $Style_Time_Percentage; $Avg_Parse_Time_Percentage += $Parse_Time_Percentage; $Avg_TotalLayout_Time_Percentage += $TotalLayout_Time_Percentage; $Num_Entries += 1; #------------------------------------------------------------------------------ # Now write this site's data to the table #------------------------------------------------------------------------------ open (TABLE_FILE, ">>table.html"); print (TABLE_FILE ""); print (TABLE_FILE ""); print (TABLE_FILE "
$UrlName
"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Parse_Time); print (DEVIATION "$Parse_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Parse_Time_Percentage); print (DEVIATION "$Parse_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Content_Time); print (DEVIATION "$Content_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Content_Time_Percentage); print (DEVIATION "$Content_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Frame_Time); print (DEVIATION "$Frame_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Frame_Time_Percentage); print (DEVIATION "$Frame_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Style_Time); print (DEVIATION "$Style_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Style_Time_Percentage); print (DEVIATION "$Style_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Reflow_Time); print (DEVIATION "$Reflow_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$Reflow_Time_Percentage); print (DEVIATION "$Reflow_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$TotalLayout_Time); print (DEVIATION "$TotalLayout_Time,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$TotalLayout_Time_Percentage); print (DEVIATION "$TotalLayout_Time_Percentage,"); print (TABLE_FILE ""); print (TABLE_FILE ""); printf (TABLE_FILE "
%4.2f
",$TotalPageLoad_Time); print (DEVIATION "$TotalPageLoad_Time\n"); print (TABLE_FILE ""); print (TABLE_FILE "\n"); close (LOG_FILE); open (AVERAGE, "> Average.txt"); print (AVERAGE "Num Entries: $Num_Entries\n"); print (AVERAGE "Avg Parse: $Avg_Parse_Time\n"); print (AVERAGE "Per Parse: $Avg_Parse_Time_Percentage\n"); print (AVERAGE "Avg Content: $Avg_Content_Time\n"); print (AVERAGE "Per Content: $Avg_Content_Time_Percentage\n"); print (AVERAGE "Avg Frame: $Avg_Frame_Time\n"); print (AVERAGE "Per Frame: $Avg_Frame_Time_Percentage\n"); print (AVERAGE "Avg Style: $Avg_Style_Time\n"); print (AVERAGE "Per Style: $Avg_Style_Time_Percentage\n"); print (AVERAGE "Avg Reflow: $Avg_Reflow_Time\n"); print (AVERAGE "Per Reflow: $Avg_Reflow_Time_Percentage\n"); print (AVERAGE "Avg TotalLayout: $Avg_TotalLayout_Time\n"); print (AVERAGE "Per Layout: $Avg_TotalLayout_Time_Percentage\n"); print (AVERAGE "Avg PageLoad: $Avg_TotalPageLoad_Time\n"); close (AVERAGE);