Module: tools Branch: master Commit: ee3483d4b8b0d1aaf7f706f2d645d696a5ccf548 URL: https://source.winehq.org/git/tools.git/?a=commit;h=ee3483d4b8b0d1aaf7f706f2...
Author: Francois Gouget fgouget@codeweavers.com Date: Thu Mar 22 02:01:33 2018 +0100
testbot/web: Centralize the conversion of durations to human readable strings.
Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
testbot/lib/WineTestBot/Utils.pm | 30 +++++++++++++++++++++++++++++- testbot/web/Activity.pl | 12 ++---------- testbot/web/Stats.pl | 29 ++--------------------------- 3 files changed, 33 insertions(+), 38 deletions(-)
diff --git a/testbot/lib/WineTestBot/Utils.pm b/testbot/lib/WineTestBot/Utils.pm index 5538ecd..63b9062 100644 --- a/testbot/lib/WineTestBot/Utils.pm +++ b/testbot/lib/WineTestBot/Utils.pm @@ -35,7 +35,7 @@ require Exporter; @ISA = qw(Exporter); @EXPORT = qw(&MakeSecureURL &SecureConnection &GenerateRandomString &OpenNewFile &CreateNewFile &CreateNewLink &CreateNewDir - &BuildEMailRecipient); + &DurationToString &BuildEMailRecipient);
sub MakeSecureURL($) { @@ -121,6 +121,34 @@ sub CreateNewDir($$) } }
+sub DurationToString($;$) +{ + my ($Secs, $Raw) = @_; + + return "n/a" if (!defined $Secs); + + my @Parts; + if (!$Raw) + { + my $Mins = int($Secs / 60); + $Secs -= 60 * $Mins; + my $Hours = int($Mins / 60); + $Mins -= 60 * $Hours; + my $Days = int($Hours / 24); + $Hours -= 24 * $Days; + push @Parts, "${Days}d" if ($Days); + push @Parts, "${Hours}h" if ($Hours); + push @Parts, "${Mins}m" if ($Mins); + } + if (!@Parts or int($Secs) != 0) + { + push @Parts, (@Parts or int($Secs) == $Secs) ? + int($Secs) ."s" : + sprintf('%.1fs', $Secs); + } + return join(" ", @Parts); +} + sub BuildEMailRecipient($$) { my ($EMailAddress, $Name) = @_; diff --git a/testbot/web/Activity.pl b/testbot/web/Activity.pl index ddea602..96a1ef0 100644 --- a/testbot/web/Activity.pl +++ b/testbot/web/Activity.pl @@ -28,6 +28,7 @@ use ObjectModel::CGI::FreeFormPage; use WineTestBot::Config; use WineTestBot::Activity; use WineTestBot::Log; +use WineTestBot::Utils; use WineTestBot::VMs;
@ActivityPage::ISA = qw(ObjectModel::CGI::FreeFormPage); @@ -72,16 +73,7 @@ sub _GetHtmlTime($) sub _GetHtmlDuration($) { my ($Secs) = @_; - - return "" if ($Secs < 2); - my $Mins = int($Secs / 60); - my $Hours = int($Mins / 60); - - my @Parts; - push @Parts, "${Hours}h" if ($Hours); - push @Parts, "${Mins}m" if ($Mins %= 60); - push @Parts, "${Secs}s" if ($Secs %= 60); - return "<span class='RecordDuration'>". join(" ", @Parts) ."</span>"; + return ($Secs < 2) ? "" : "<span class='RecordDuration'>". DurationToString($Secs) ."</span>"; }
sub _CompareVMs() diff --git a/testbot/web/Stats.pl b/testbot/web/Stats.pl index 806a366..1467407 100644 --- a/testbot/web/Stats.pl +++ b/testbot/web/Stats.pl @@ -38,31 +38,6 @@ sub _initialize($$$) $self->SUPER::_initialize($Request, $RequiredRole); }
-sub _GetDuration($;$) -{ - my ($Secs, $Raw) = @_; - - return "n/a" if (!defined $Secs); - - my @Parts; - if (!$Raw) - { - my $Mins = int($Secs / 60); - my $Hours = int($Mins / 60); - my $Days = int($Hours / 24); - push @Parts, "${Days}d" if ($Days); - my $Part = $Hours - 24 * $Days; - push @Parts, "${Part}h" if ($Part); - $Part = $Mins - 60 * $Hours; - push @Parts, "${Part}m" if ($Part); - $Secs = $Secs - 60 * $Mins; - } - push @Parts, (@Parts or int($Secs) == $Secs) ? - int($Secs) ."s" : - sprintf('%.1fs', $Secs); - return join(" ", @Parts); -} - sub _CompareVMs() { my ($aHost, $bHost) = ($a->GetHost(), $b->GetHost()); @@ -105,7 +80,7 @@ sub _GetStatStr($$;$$) exists $Stats->{"$StatKey.count"}) { my $Avg = _GetAverage($Stats, $StatKey); - return $Avg eq "n/a" ? "n/a" : _GetDuration($Avg, $Flags & $NO_TIME); + return $Avg eq "n/a" ? "n/a" : DurationToString($Avg, $Flags & $NO_TIME); }
if ($StatKey =~ /.size$/ and !($Flags & $NO_AVERAGE) and @@ -124,7 +99,7 @@ sub _GetStatStr($$;$$) } if ($StatKey =~ /(?:\belapsed|.time(?!.count))/) { - return _GetDuration($Value, $Flags & $NO_TIME); + return DurationToString($Value, $Flags & $NO_TIME); } if ($StatKey =~ /.rate$/) {