[PATCH] testbot: Link statistics to the corresponding activity page row.
More specifically, this makes it possible to see where the maximum revert times and others come from, and what else was happening at that time. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> --- testbot/lib/WineTestBot/Activity.pm | 25 ++++++++++++++----------- testbot/web/Activity.pl | 3 ++- testbot/web/Stats.pl | 19 +++++++++++++------ 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/testbot/lib/WineTestBot/Activity.pm b/testbot/lib/WineTestBot/Activity.pm index fb2cee52..2c21d9fd 100644 --- a/testbot/lib/WineTestBot/Activity.pm +++ b/testbot/lib/WineTestBot/Activity.pm @@ -51,6 +51,7 @@ Each entry contains a structure grouping all the state and event information for the specified timestamp. Entries have the following structure: { + id => <RecordGroupId>, start => <StartTimestamp>, end => <EndTimestamp>, runnable => <RunnableTasksCount>, @@ -105,7 +106,8 @@ sub GetActivity($;$) $Counters->{recordgroups} = $RecordGroups->GetItemsCount(); foreach my $RecordGroup (sort CompareRecordGroups @{$RecordGroups->GetItems()}) { - my $Group = { start => $RecordGroup->Timestamp }; + my $Group = { id => $RecordGroup->Id, + start => $RecordGroup->Timestamp }; $ActivityHash->{$RecordGroup->Id} = $Group; push @$Activity, $Group; $MinId = $RecordGroup->Id if (!defined $MinId or $RecordGroup->Id < $MinId); @@ -305,9 +307,9 @@ sub GetActivity($;$) return ($Activity, $Counters); } -sub _AddFullStat($$$;$) +sub _AddFullStat($$$$;$) { - my ($Stats, $StatKey, $Value, $Source) = @_; + my ($Stats, $StatKey, $Value, $GroupId, $Source) = @_; $Stats->{"$StatKey.count"}++; $Stats->{$StatKey} += $Value; @@ -315,6 +317,7 @@ sub _AddFullStat($$$;$) if (!exists $Stats->{$MaxKey} or $Stats->{$MaxKey} < $Value) { $Stats->{$MaxKey} = $Value; + $Stats->{"$MaxKey.groupid"} = $GroupId if (defined $GroupId); $Stats->{"$MaxKey.source"} = $Source if ($Source); } } @@ -346,7 +349,7 @@ sub GetStatistics($) $Task->Status !~ /^(?:queued|running|canceled)$/) { my $Time = $Task->Ended - $Task->Started; - _AddFullStat($GlobalStats, "$StepType.time", $Time, $Task); + _AddFullStat($GlobalStats, "$StepType.time", $Time, undef, $Task); } if ($IsSpecialJob) { @@ -354,11 +357,11 @@ sub GetStatistics($) if (-f $ReportFileName) { my $ReportSize = -s $ReportFileName; - _AddFullStat($GlobalStats, "$StepType.size", $ReportSize, $Task); + _AddFullStat($GlobalStats, "$StepType.size", $ReportSize, undef, $Task); if ($VMs->ItemExists($Task->VM->GetKey())) { my $VMStats = ($VMsStats->{items}->{$Task->VM->Name} ||= {}); - _AddFullStat($VMStats, "report.size", $ReportSize, $Task); + _AddFullStat($VMStats, "report.size", $ReportSize, undef, $Task); } } } @@ -369,7 +372,7 @@ sub GetStatistics($) $Job->Status !~ /^(?:queued|running|canceled)$/) { my $Time = $Job->Ended - $Job->Submitted; - _AddFullStat($GlobalStats, "jobs.time", $Time, $Job); + _AddFullStat($GlobalStats, "jobs.time", $Time, undef, $Job); push @JobTimes, $Time; if (!exists $GlobalStats->{start} or $GlobalStats->{start} > $Job->Submitted) @@ -421,8 +424,8 @@ sub GetStatistics($) my $Status = $VMStatus->{status}; my $Time = $VMStatus->{end} - $VMStatus->{start}; - _AddFullStat($VMStats, "$Status.time", $Time); - _AddFullStat($HostStats, "$Status.time", $Time); + _AddFullStat($VMStats, "$Status.time", $Time, $Group->{id}); + _AddFullStat($HostStats, "$Status.time", $Time, $Group->{id}); if ($Status =~ /^(?:reverting|sleeping|running|dirty)$/) { $VMStats->{"busy.elapsed"} += $Time; @@ -439,8 +442,8 @@ sub GetStatistics($) $VMStatus->{result} eq "failed")) { my $StepType = $VMStatus->{step}->Type; - _AddFullStat($VMStats, "$StepType.time", $Time, $VMStatus->{task}); - _AddFullStat($HostStats, "$StepType.time", $Time, $VMStatus->{task}); + _AddFullStat($VMStats, "$StepType.time", $Time, $Group->{id}, $VMStatus->{task}); + _AddFullStat($HostStats, "$StepType.time", $Time, $Group->{id}, $VMStatus->{task}); } } diff --git a/testbot/web/Activity.pl b/testbot/web/Activity.pl index 0b92299a..6ca3199a 100644 --- a/testbot/web/Activity.pl +++ b/testbot/web/Activity.pl @@ -153,7 +153,8 @@ EOF my $Group = $Activity->[$Index]; next if (!$Group->{statusvms}); - print "<tr><td>", _GetHtmlTime($Group->{start}), "</td>"; + my $GroupId = $Group->{id}; + print "<tr><td id='g$GroupId'>", _GetHtmlTime($Group->{start}), "</td>"; if ($Group->{engine}) { print "<td class='Record RecordEngine'>$Group->{engine}</td>\n"; diff --git a/testbot/web/Stats.pl b/testbot/web/Stats.pl index d9f43814..d9a3ce50 100644 --- a/testbot/web/Stats.pl +++ b/testbot/web/Stats.pl @@ -140,16 +140,23 @@ sub _GetStatHtml($$;$$) my ($Stats, $StatKey, $AllStats, $Flags) = @_; my $Value = _GetStatStr($Stats, $StatKey, $AllStats, $Flags); - return $Value if (!$Stats->{"$StatKey.source"}); my $SrcObj = $Stats->{"$StatKey.source"}; - my ($JobId, $StepNo, $TaskNo) = ObjectModel::Collection::SplitKey(undef, $SrcObj->GetFullKey()); - if (defined $TaskNo) + if ($SrcObj) { - my $Key = "$JobId#k". ($StepNo * 100 + $TaskNo); - return "<a href='/JobDetails.pl?Key=$Key'>$Value</a>"; + my ($JobId, $StepNo, $TaskNo) = ObjectModel::Collection::SplitKey(undef, $SrcObj->GetFullKey()); + if (defined $TaskNo) + { + my $Key = "$JobId#k". ($StepNo * 100 + $TaskNo); + return "<a href='/JobDetails.pl?Key=$Key'>$Value</a>"; + } + return "<a href='/index.pl#job$JobId'>$Value</a>"; } - return "<a href='/index.pl#job$JobId'>$Value</a>"; + + my $GroupId = $Stats->{"$StatKey.groupid"}; + return "<a href='/Activity.pl?Hours=0#g$GroupId'>$Value</a>" if ($GroupId); + + return $Value; } sub _GenGlobalLine($$$;$$) -- 2.15.1
participants (1)
-
Francois Gouget