From e04477003e5d123763355ce008d871046218dabb Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Thu, 24 Oct 2013 15:38:20 -0400 Subject: [PATCH] Cleanup eval serialization Signed-off-by: Shea Levy --- src/lib/Hydra/Controller/Jobset.pm | 19 +------------------ src/lib/Hydra/Schema/JobsetEvalInputs.pm | 10 +++++++++- src/lib/Hydra/Schema/JobsetEvals.pm | 18 ++++++++++++++++++ tests/api-test.pl | 10 +++++----- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/lib/Hydra/Controller/Jobset.pm b/src/lib/Hydra/Controller/Jobset.pm index 8f211eaa..c716458e 100644 --- a/src/lib/Hydra/Controller/Jobset.pm +++ b/src/lib/Hydra/Controller/Jobset.pm @@ -274,24 +274,7 @@ sub evals_GET { my $offset = ($page - 1) * $resultsPerPage; $c->stash->{evals} = getEvals($self, $c, $evals, $offset, $resultsPerPage); my %entity = ( - evals => [ $evals->search({ 'me.hasnewbuilds' => 1 }, { - columns => [ - 'me.hasnewbuilds', - 'me.id', - 'jobsetevalinputs.name', - 'jobsetevalinputs.altnr', - 'jobsetevalinputs.revision', - 'jobsetevalinputs.type', - 'jobsetevalinputs.uri', - 'jobsetevalinputs.dependency', - 'jobsetevalmembers.build', - ], - join => [ 'jobsetevalinputs', 'jobsetevalmembers' ], - collapse => 1, - rows => $resultsPerPage, - offset => $offset, - order_by => "me.id DESC", - }) ], + evals => $c->stash->{evals}, first => "?page=1", last => "?page=" . POSIX::ceil($c->stash->{total}/$resultsPerPage) ); diff --git a/src/lib/Hydra/Schema/JobsetEvalInputs.pm b/src/lib/Hydra/Schema/JobsetEvalInputs.pm index fa68fc40..77b18900 100644 --- a/src/lib/Hydra/Schema/JobsetEvalInputs.pm +++ b/src/lib/Hydra/Schema/JobsetEvalInputs.pm @@ -169,6 +169,14 @@ __PACKAGE__->belongs_to( # Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1Dp8B58leBLh4GK0GPw2zg +my %hint = ( + columns => [ + "revision" + ], +); + +sub json_hint { + return \%hint; +} -# You can replace this text with custom code or comments, and it will be preserved on regeneration 1; diff --git a/src/lib/Hydra/Schema/JobsetEvals.pm b/src/lib/Hydra/Schema/JobsetEvals.pm index 5fcd5249..0bd21da2 100644 --- a/src/lib/Hydra/Schema/JobsetEvals.pm +++ b/src/lib/Hydra/Schema/JobsetEvals.pm @@ -199,4 +199,22 @@ __PACKAGE__->has_many( __PACKAGE__->many_to_many(builds => 'buildIds', 'build'); +my %hint = ( + columns => [ + "hasnewbuilds", + "id" + ], + relations => { + "builds" => "id" + }, + eager_relations => { + # altnr? Does anyone care? + jobsetevalinputs => "name" + } +); + +sub json_hint { + return \%hint; +} + 1; diff --git a/tests/api-test.pl b/tests/api-test.pl index 3ee4881f..68b28d3d 100644 --- a/tests/api-test.pl +++ b/tests/api-test.pl @@ -1,6 +1,6 @@ use LWP::UserAgent; use JSON; -use Test::Simple tests => 10; +use Test::Simple tests => 13; #use Test::Simple tests => 15; my $ua = LWP::UserAgent->new; @@ -47,20 +47,20 @@ ok(exists $jobset->{jobsetinputs}->{"my-src"}, "The new jobset has a 'my-src' in ok($jobset->{jobsetinputs}->{"my-src"}->{jobsetinputalts}->[0] eq "/run/jobset", "The 'my-src' input is in /run/jobset"); -=begin comment - system("LOGNAME=root NIX_STORE_DIR=/run/nix/store NIX_LOG_DIR=/run/nix/var/log/nix NIX_STATE_DIR=/run/nix/var/nix HYDRA_DATA=/var/lib/hydra HYDRA_DBI='dbi:Pg:dbname=hydra;user=root;' hydra-evaluator sample default"); $result = request_json({ uri => '/jobset/sample/default/evals' }); ok($result->code() == 200, "Can get evals of a jobset"); my $evals = decode_json($result->content())->{evals}; my $eval = $evals->[0]; -ok($eval->{hasnewbuilds} == 1, "The first eval of a jobset has new builds"); +ok($eval->{eval}->{hasnewbuilds} == 1, "The first eval of a jobset has new builds"); # Ugh, cached for 30s sleep 30; system("echo >> /run/jobset/default.nix; LOGNAME=root NIX_STORE_DIR=/run/nix/store NIX_LOG_DIR=/run/nix/var/log/nix NIX_STATE_DIR=/run/nix/var/nix HYDRA_DATA=/var/lib/hydra HYDRA_DBI='dbi:Pg:dbname=hydra;user=root;' hydra-evaluator sample default"); my $evals = decode_json(request_json({ uri => '/jobset/sample/default/evals' })->content())->{evals}; -ok($evals->[0]->{jobsetevalinputs}->[0]->{revision} != $evals->[1]->{jobsetevalinputs}->[0]->{revision}, "Changing a jobset source changes its revision"); +ok($evals->[0]->{eval}->{jobsetevalinputs}->{"my-src"}->{revision} != $evals->[1]->{eval}->{jobsetevalinputs}->{"my-src"}->{revision}, "Changing a jobset source changes its revision"); + +=begin comment my $build = decode_json(request_json({ uri => "/build/" . $evals->[0]->{jobsetevalmembers}->[0]->{build} })->content()); ok($build->{job} eq "job", "The build's job name is job");