package Tapper::Reports::Web::Util::Testrun;
our $AUTHORITY = 'cpan:TAPPER';
$Tapper::Reports::Web::Util::Testrun::VERSION = '5.0.10';
use Moose;
use Tapper::Model 'model';
use common::sense;
extends 'Tapper::Reports::Web::Util';
sub prepare_testrunlist
{
my ( $self, $testruns ) = @_;
my @testruns;
foreach my $testrun ($testruns->all)
{
my $testrun_report = model('ReportsDB')->resultset('ReportgroupTestrunStats')->search({testrun_id => $testrun->id}, {rows => 1})->first;
my ($primary_report, $suite_name, $updated_at, $primary_report_id);
if ($testrun_report) {
$primary_report = $testrun_report->reportgrouptestruns->search({primaryreport => 1}, {rows => 1})->first;
$primary_report = $testrun_report->reportgrouptestruns->search({}, {rows => 1})->first unless $primary_report; # link to any report if no primary
eval{ # prevent dereferencing to undefined db links
if ($primary_report) {
$suite_name = $primary_report->report->suite->name;
$updated_at = $primary_report->report->updated_at || $primary_report->created_at;
$primary_report_id = $primary_report->report->id;
}
};
}
my ($hostname, $status);
if ($testrun->testrun_scheduling) {
if ($testrun->testrun_scheduling->host) {
$hostname = $testrun->testrun_scheduling->host->name;
} else {
$hostname = $testrun->testrun_scheduling->status eq 'finished' ?
'Host deleted' :
'No host assigned';
}
$status = $testrun->testrun_scheduling->status;
}
my $tr = {
testrun_id => $testrun->id,
success_ratio => $testrun_report ? $testrun_report->success_ratio : 0,
primary_report_id => $primary_report_id,
topic_name => $testrun->topic_name,
machine_name => $hostname || 'unknownmachine',
status => $status || 'unknown status',
started_at => $testrun->starttime_testrun,
created_at => $testrun->created_at,
updated_at => $updated_at || $testrun->updated_at,
owner => $testrun->owner->login || 'unknown user' ,
};
push @testruns, $tr;
}
return \@testruns;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Tapper::Reports::Web::Util::Testrun
=head2 prepare_testrunlist
For each of the given testruns generate a hash describing the
testrun. This hash is used to display the testrun in the template.
hash contains:
* primary_report_id
* success_ratio
* testrun_id
* suite_name
* host_name
* status
* created_at
* updated_at
@param DBIC resultset - testruns
@return array ref - list of hash refs describing the testruns
=head1 AUTHORS
=over 4
=item *
AMD OSRC Tapper Team <tapper@amd64.org>
=item *
Tapper Team <tapper-ops@amazon.com>
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2016 by Advanced Micro Devices, Inc..
This is free software, licensed under:
The (two-clause) FreeBSD License
=cut