diff --git a/webtools/tinderbox2/src/lib/TinderDB/Build.pm b/webtools/tinderbox2/src/lib/TinderDB/Build.pm
index e2fc500c6e73..c54275286baa 100755
--- a/webtools/tinderbox2/src/lib/TinderDB/Build.pm
+++ b/webtools/tinderbox2/src/lib/TinderDB/Build.pm
@@ -7,8 +7,8 @@
# the build was and display a link to the build log.
-# $Revision: 1.6 $
-# $Date: 2000/09/18 19:20:44 $
+# $Revision: 1.7 $
+# $Date: 2000/10/18 20:31:34 $
# $Author: kestes%staff.mail.com $
# $Source: /home/hwine/cvs_conversion/cvsroot/mozilla/webtools/tinderbox2/src/lib/TinderDB/Build.pm,v $
# $Name: $
@@ -57,6 +57,11 @@
# starttime => The time the build started (in time() format)
# endtime => The time the build ended (in time() format)
# runtime => The time it took the build to complete (in seconds)
+# deadtime => The time between the last build ending and
+# this build starting (in seconds). Most organizations
+# will have this be zero all the time. Some shops may
+# run the build scrips through cron and this will cause
+# 'deadtime'.
#
# errorparser => The error parser to use when parsing the logfiles
# full-log => The basename of the log file contianing the full log
@@ -83,6 +88,9 @@
# $DATABASE{$tree}{$buildname}{'average_buildtime'}
# the average time a sucessful build takes(in seconds).
+# $DATABASE{$tree}{$buildname}{'average_deadtime'}
+# the average deadtime (in seconds).
+
# $METADATA{$tree}{'updates_since_trim'}+= 1
@@ -556,6 +564,8 @@ sub trim_db_history {
my ($self, $tree, ) = (@_);
my ($last_time) = $main::TIME - $TinderDB::TRIM_SECONDS;
+ my (@run_times) = ();
+ my (@dead_times) = ();
foreach $buildname (sort keys %{ $DATABASE{$tree} } ){
@@ -567,7 +577,11 @@ sub trim_db_history {
if ( ($rec->{'status'} eq 'success') &&
($rec->{'runtime'}) ) {
- push @times, $rec->{'runtime'};
+ push @run_times, $rec->{'runtime'};
+ }
+
+ if ( $rec->{'deadtime'} ) {
+ push @dead_times, $rec->{'deadtime'};
}
if ($rec->{'starttime'} < $last_time) {
@@ -580,9 +594,13 @@ sub trim_db_history {
# medians are a more robust statistical estimator then the mean.
# They will give us better answers then a typical "average"
- my $avg = main::median(@times);
- ($avg) &&
- ( $DATABASE{$tree}{$buildname}{'average_buildtime'} = $avg);
+ my $run_avg = main::median(@run_times);
+ ($run_avg) &&
+ ( $DATABASE{$tree}{$buildname}{'average_buildtime'} = $run_avg);
+
+ my $dead_avg = main::median(@dead_times);
+ ($dead_avg) &&
+ ( $DATABASE{$tree}{$buildname}{'average_deadtime'} = $dead_avg);
# the trim DB step
@@ -717,7 +735,9 @@ sub status_table_header {
# create popup text discribing how this build is progressing
my $avg_buildtime = $DATABASE{$tree}{$buildname}{'average_buildtime'};
+ my $avg_deadtime = $DATABASE{$tree}{$buildname}{'average_deadtime'};
my $current_starttime = $DATABASE{$tree}{$buildname}{'recs'}[0]{'starttime'};
+ my $previous_endtime = $DATABASE{$tree}{$buildname}{'recs'}[1]{'endtime'};
my $txt ='';
my $num_lines;
@@ -748,6 +768,13 @@ sub status_table_header {
$num_lines++;
}
+ if ($avg_deadtime) {
+ my $min = sprintf ("%.0f", # round
+ $avg_deadtime/60);
+ $txt .= "avg_deadtime (minutes): $min
";
+ $num_lines++;
+ }
+
if ($current_starttime) {
my $min = sprintf ("%.0f", # round
($main::TIME - $current_starttime)/60);
@@ -757,10 +784,18 @@ sub status_table_header {
$num_lines += 2;
}
+ my $estimated_remaining = undef;
if ( ($avg_buildtime) && ($current_starttime) ) {
+ $estimated_remaining = ($avg_buildtime) +
+ ($current_starttime - $main::TIME);
+ } elsif ( ($avg_deadtime) && ($avg_buildtime) && ($previous_endtime) ) {
+ $estimated_remaining = ($avg_deadtime + $avg_buildtime) +
+ ($previus_endtime - $main::TIME);
+ }
+
+ if ($estimated_remaining) {
my $min = sprintf ("%.0f", # round
- ( ($avg_buildtime + $current_starttime) -
- $main::TIME )/60);
+ ($estimated_finish/60) );
$txt .= "time_remaining (estimate): $min
";
$num_lines++;
}
@@ -889,8 +924,7 @@ sub apply_db_updates {
# If there is a final disposition then we need to add a bunch of
# other data which depends on what is already availible.
- if ( ($buildstatus ne 'not_running') &&
- ($buildstatus ne 'building') ) {
+ if ($buildstatus ne 'not_running') {
if (
($buildstatus ne 'success') &&
@@ -907,6 +941,9 @@ sub apply_db_updates {
$record->{'runtime'} = ( $record->{'timenow'} -
$record->{'starttime'} );
+ $record->{'deadtime'} = ( $record->{'starttime'} -
+ $previous_rec->{'endtime'} );
+
$record->{'endtime'} = $record->{'timenow'};
# construct text to be displayed to users interested in this cell
@@ -924,6 +961,11 @@ sub apply_db_updates {
$info .= ("runtime: ".
sprintf("%.2f", ($record->{'runtime'}/60)).
" (minutes)
");
+ if ($record->{'deadtime'} > 0) {
+ $info .= ("deadtime: ".
+ sprintf("%.2f", ($record->{'deadtime'}/60)).
+ " (minutes)
");
+ }
$info .= "buildstatus: $record->{'status'}
";
$info .= "buildname: $record->{'buildname'}
";
$info .= "tree: $record->{'tree'}
";