Add support for viewing jobset evaluations
This commit is contained in:
@ -60,7 +60,7 @@ sub all : Chained('get_builds') PathPart {
|
||||
|
||||
$c->stash->{page} = $page;
|
||||
$c->stash->{resultsPerPage} = $resultsPerPage;
|
||||
$c->stash->{totalBuilds} = $nrBuilds;
|
||||
$c->stash->{total} = $nrBuilds;
|
||||
|
||||
$c->stash->{builds} = [ $c->stash->{allBuilds}->search(
|
||||
{ finished => 1 },
|
||||
|
@ -329,5 +329,34 @@ sub clone_submit : Chained('jobset') PathPart('clone/submit') Args(0) {
|
||||
}
|
||||
|
||||
|
||||
sub evals : Chained('jobset') PathPart('evals') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
$c->stash->{template} = 'jobset-evals.tt';
|
||||
|
||||
my $page = int($c->req->param('page') || "1") || 1;
|
||||
|
||||
my $resultsPerPage = 20;
|
||||
|
||||
$c->stash->{page} = $page;
|
||||
$c->stash->{resultsPerPage} = $resultsPerPage;
|
||||
$c->stash->{total} = $c->stash->{jobset}->jobsetevals->search({hasnewbuilds => 1})->count;
|
||||
|
||||
$c->stash->{evals} = [ $c->stash->{jobset}->jobsetevals->search(
|
||||
{ hasnewbuilds => 1 },
|
||||
{ order_by => "id DESC"
|
||||
, '+select' => # !!! Slow - should precompute this.
|
||||
[ "(select count(*) from JobsetEvalMembers where eval = me.id)"
|
||||
, "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 0))"
|
||||
, "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1))"
|
||||
, "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1 and b.buildStatus = 0))"
|
||||
]
|
||||
, '+as' => [ "nrBuilds", "nrScheduled", "nrFinished", "nrSucceeded" ]
|
||||
, rows => $resultsPerPage
|
||||
, page => $page
|
||||
}
|
||||
) ];
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
76
src/lib/Hydra/Controller/JobsetEval.pm
Normal file
76
src/lib/Hydra/Controller/JobsetEval.pm
Normal file
@ -0,0 +1,76 @@
|
||||
package Hydra::Controller::JobsetEval;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use base 'Catalyst::Controller';
|
||||
use Hydra::Helper::Nix;
|
||||
use Hydra::Helper::CatalystUtils;
|
||||
|
||||
|
||||
sub eval : Chained('/') PathPart('eval') CaptureArgs(1) {
|
||||
my ($self, $c, $evalId) = @_;
|
||||
|
||||
my $eval = $c->model('DB::JobsetEvals')->find($evalId)
|
||||
or notFound($c, "Evaluation $evalId doesn't exist.");
|
||||
|
||||
$c->stash->{eval} = $eval;
|
||||
$c->stash->{project} = $eval->project;
|
||||
$c->stash->{jobset} = $eval->jobset;
|
||||
}
|
||||
|
||||
|
||||
sub view : Chained('eval') PathPart('') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
$c->stash->{template} = 'jobset-eval.tt';
|
||||
|
||||
my $eval = $c->stash->{eval};
|
||||
|
||||
my ($eval2) = $eval->jobset->jobsetevals->search(
|
||||
{ hasnewbuilds => 1, id => { '<', $eval->id } },
|
||||
{ order_by => "id DESC", rows => 1 });
|
||||
|
||||
my @builds = $eval->builds->search({}, { order_by => ["job", "system", "id"], columns => [@buildListColumns] });
|
||||
my @builds2 = $eval2->builds->search({}, { order_by => ["job", "system", "id"], columns => [@buildListColumns] });
|
||||
|
||||
print STDERR "EVAL IS ", $eval2->id, "\n";
|
||||
print STDERR scalar(@builds), "\n";
|
||||
print STDERR scalar(@builds2), "\n";
|
||||
|
||||
$c->stash->{stillSucceed} = [];
|
||||
$c->stash->{stillFail} = [];
|
||||
$c->stash->{nowSucceed} = [];
|
||||
$c->stash->{nowFail} = [];
|
||||
|
||||
my $n = 0;
|
||||
foreach my $build (@builds) {
|
||||
my $d;
|
||||
while ($n < scalar(@builds2)) {
|
||||
my $build2 = $builds2[$n];
|
||||
my $d = $build->get_column('job') cmp $build2->get_column('job')
|
||||
|| $build->get_column('system') cmp $build2->get_column('system');
|
||||
#print STDERR $build->id, " ", $build->get_column('job'), " ", $build->system, " ", $d, "\n";
|
||||
last if $d == -1;
|
||||
if ($d == 0) {
|
||||
#print STDERR $build->buildstatus, "\n";
|
||||
#print STDERR $build2->buildstatus, "\n";
|
||||
if ($build->buildstatus == 0 && $build2->buildstatus == 0) {
|
||||
push @{$c->stash->{stillSucceed}}, $build;
|
||||
} elsif ($build->buildstatus != 0 && $build2->buildstatus != 0) {
|
||||
push @{$c->stash->{stillFail}}, $build;
|
||||
} elsif ($build->buildstatus == 0 && $build2->buildstatus != 0) {
|
||||
push @{$c->stash->{nowSucceed}}, $build;
|
||||
} elsif ($build->buildstatus != 0 && $build2->buildstatus == 0) {
|
||||
push @{$c->stash->{nowFail}}, $build;
|
||||
}
|
||||
last;
|
||||
}
|
||||
$n++;
|
||||
}
|
||||
}
|
||||
|
||||
$c->stash->{full} = ($c->req->params->{full} || "0") eq "1";
|
||||
}
|
||||
|
||||
|
||||
1;
|
Reference in New Issue
Block a user