Branch: refs/heads/master
  Home:   https://github.com/NixOS/hydra
  Commit: b9824ca422aa59e2b9da8ae75df12f390234a427
      
https://github.com/NixOS/hydra/commit/b9824ca422aa59e2b9da8ae75df12f390234a427
  Author: Eelco Dolstra <[email protected]>
  Date:   2012-04-15 (Sun, 15 Apr 2012)

  Changed paths:
    M src/lib/Hydra/Controller/Jobset.pm
    M src/root/jobset.tt

  Log Message:
  -----------
  Cleanup


diff --git a/src/lib/Hydra/Controller/Jobset.pm 
b/src/lib/Hydra/Controller/Jobset.pm
index ce230a1..961ac0e 100644
--- a/src/lib/Hydra/Controller/Jobset.pm
+++ b/src/lib/Hydra/Controller/Jobset.pm
@@ -49,19 +49,7 @@ sub jobsetIndex {
         }
     }
 
-    $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 => 6
-        }
-    ) ];
+    $c->stash->{evals} = getEvals($self, $c, 0, 6);
 
     $c->stash->{systems} = 
         [ $c->stash->{jobset}->builds->search({ iscurrent => 1 }, { select => 
["system"], distinct => 1, order_by => "system" }) ];
@@ -337,6 +325,25 @@ sub clone_submit : Chained('jobset') 
PathPart('clone/submit') Args(0) {
 }
 
 
+sub getEvals {
+    my ($self, $c, $offset, $rows) = @_;
+    return [ $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 => $rows
+        , offset => $offset
+        }
+    ) ];
+}
+
+
 sub evals : Chained('jobset') PathPart('evals') Args(0) {
     my ($self, $c) = @_;
 
@@ -350,20 +357,7 @@ sub evals : Chained('jobset') PathPart('evals') Args(0) {
     $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 + 1
-        , offset => ($page - 1) * $resultsPerPage
-        }
-    ) ];
+    $c->stash->{evals} = getEvals($self, $c, ($page - 1) * $resultsPerPage, 
$resultsPerPage + 1)
 }
 
 
diff --git a/src/root/jobset.tt b/src/root/jobset.tt
index 4b6faed..e832eb5 100644
--- a/src/root/jobset.tt
+++ b/src/root/jobset.tt
@@ -81,9 +81,9 @@
        </ul>
 <div id="generic-tabs" class="tab-content">
        <div id="tabs-information" class="tab-pane active">
-               [% IF !edit-%]
+               [% IF !edit && evals.size() > 0 -%]
                     <h2>Most recent evaluations</h2>
-                   [% INCLUDE renderEvals nrShown=5 
linkToAll=c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, 
jobset.name]) %]
+                   [% INCLUDE renderEvals nrShown=evals.size() - 1 
linkToAll=c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, 
jobset.name]) %]
                 [% END %]
                [% IF !edit && activeJobsStatus -%]
                    <h2>Status</h2>


================================================================
  Commit: 0daba6bb894746d7fc657c85b8512f66d60e6701
      
https://github.com/NixOS/hydra/commit/0daba6bb894746d7fc657c85b8512f66d60e6701
  Author: Eelco Dolstra <[email protected]>
  Date:   2012-04-15 (Sun, 15 Apr 2012)

  Changed paths:
    M src/lib/Hydra/Controller/Jobset.pm
    M src/root/common.tt
    M src/root/jobset-evals.tt
    M src/root/jobset.tt

  Log Message:
  -----------
  In the jobset evals lists, show what inputs changed between consecutive evals


diff --git a/src/lib/Hydra/Controller/Jobset.pm 
b/src/lib/Hydra/Controller/Jobset.pm
index 961ac0e..616fc5e 100644
--- a/src/lib/Hydra/Controller/Jobset.pm
+++ b/src/lib/Hydra/Controller/Jobset.pm
@@ -49,7 +49,7 @@ sub jobsetIndex {
         }
     }
 
-    $c->stash->{evals} = getEvals($self, $c, 0, 6);
+    $c->stash->{evals} = getEvals($self, $c, 0, 5);
 
     $c->stash->{systems} = 
         [ $c->stash->{jobset}->builds->search({ iscurrent => 1 }, { select => 
["system"], distinct => 1, order_by => "system" }) ];
@@ -327,7 +327,8 @@ sub clone_submit : Chained('jobset') 
PathPart('clone/submit') Args(0) {
 
 sub getEvals {
     my ($self, $c, $offset, $rows) = @_;
-    return [ $c->stash->{jobset}->jobsetevals->search(
+    
+    my @evals = $c->stash->{jobset}->jobsetevals->search(
         { hasnewbuilds => 1 }, 
         { order_by => "id DESC"
         , '+select' => # !!! Slow - should precompute this.
@@ -337,10 +338,42 @@ sub getEvals {
            , "(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 => $rows
+        , rows => $rows + 1
         , offset => $offset
+        });
+
+    my @res = ();
+    my $curInputs;
+    for (my $n = 0; $n < $rows && $n < scalar @evals; $n++) {
+        my $cur = $evals[$n];
+        my $prev = $evals[$n + 1];
+
+        # Compute what inputs changed between each eval.
+        my $diff = 0;
+        my $prevInputs = [];
+        $curInputs = [ $cur->jobsetevalinputs->search(
+            { uri => { '!=' => undef }, revision => { '!=' => undef }, altNr 
=> 0 },
+            { order_by => "name" }) ] unless defined $curInputs;
+        if (defined $prev) {
+            $diff = $cur->get_column("nrSucceeded") - 
$prev->get_column("nrSucceeded");
+            $prevInputs = [ $prev->jobsetevalinputs->search(
+                { uri => { '!=' => undef }, revision => { '!=' => undef }, 
altNr => 0 },
+                { order_by => "name" }) ];
         }
-    ) ];
+        my @changedInputs;
+        my %prevInputsHash;
+        $prevInputsHash{$_->name} = $_ foreach @{$prevInputs};
+        foreach my $input (@{$curInputs}) {
+            my $p = $prevInputsHash{$input->name};
+            push @changedInputs, $input
+                if !defined $p || $input->revision != $p->revision || 
$input->type != $p->type || $input->uri != $p->uri;
+        }
+        $curInputs = $prevInputs;
+        
+        push @res, { eval => $cur, diff => $diff, changedInputs => [ 
@changedInputs ] };
+    }
+    
+    return [@res];
 }
 
 
@@ -357,7 +390,7 @@ sub evals : Chained('jobset') PathPart('evals') Args(0) {
     $c->stash->{resultsPerPage} = $resultsPerPage;
     $c->stash->{total} = 
$c->stash->{jobset}->jobsetevals->search({hasnewbuilds => 1})->count;
 
-    $c->stash->{evals} = getEvals($self, $c, ($page - 1) * $resultsPerPage, 
$resultsPerPage + 1)
+    $c->stash->{evals} = getEvals($self, $c, ($page - 1) * $resultsPerPage, 
$resultsPerPage)
 }
 
 
diff --git a/src/root/common.tt b/src/root/common.tt
index 24cb323..9345c4d 100644
--- a/src/root/common.tt
+++ b/src/root/common.tt
@@ -402,22 +402,42 @@
 [% END %]
 
 
-[% BLOCK renderEvals %]
+[% BLOCK renderShortRev -%]
+  [%- IF type == "svn" || type == "svn-checkout" || type == "bzr" || type == 
"bzr-checkout" -%]
+    r[%- revision -%]
+  [%- ELSIF type == "git" -%]
+    <tt>[% revision.substr(0, 7) %]</tt>
+  [%- ELSE -%]
+    <tt>[%- revision -%]</tt>
+  [%- END -%]
+[%- END %]
+
 
+[% BLOCK renderEvals %]
 <table class="tablesorter table table-condensed table-striped">
   <thead>
     <tr>
       <th>#</th>
       <th>Date</th>
+      <th>Input changes</th>
       <th colspan='2'>Success</th>
     </tr>
   </thead>
   <tbody>
-    [% last = nrShown - 1; FOREACH n IN [0..last]; eval = evals.$n; m = n + 1; 
next = evals.$m;
-       link = c.uri_for(c.controller('JobsetEval').action_for('view'), 
[eval.id]) %]
+    [%- FOREACH e IN evals; eval = e.eval; 
+        link = c.uri_for(c.controller('JobsetEval').action_for('view'), 
[eval.id]) -%]
      <tr class="clickable" onclick="window.location = '[% link %]'">
        <td><a href="[% link %]">[% eval.id %]</a>&nbsp;</td>
        <td>[% INCLUDE renderDateTime timestamp = eval.timestamp %]&nbsp;</td>
+       <td>
+         [%- IF e.changedInputs.size > 0 -%]
+           [%- sep=''; FOREACH input IN e.changedInputs -%]
+             [%- sep %] [% input.name %] → [% INCLUDE renderShortRev 
type=input.type revision=input.revision %]
+           [%- sep=','; END -%]
+         [%- ELSE -%]
+           -
+         [%- END -%]
+       </td>
        <td align='right'>
          <span class="label label-success">[% eval.get_column('nrSucceeded') 
%]</span>
          <span class="label label-important">[% eval.get_column('nrBuilds') - 
eval.get_column('nrSucceeded') - eval.get_column('nrScheduled') %]</span>
@@ -426,20 +446,17 @@
         [% END %]
        </td>
        <td align='right'>
-        [% diff = eval.get_column('nrSucceeded') - 
next.get_column('nrSucceeded');
-           IF diff > 0 %]
-           <span class='label label-success'><strong>+[% diff 
%]</strong></span>
-        [% ELSIF diff < 0 && eval.get_column('nrScheduled') == 0 %]
-           <span class='label label-important'><strong>[% diff 
%]</strong></span>
-        [% END %]
+        [%- IF e.diff > 0 -%]
+           <span class='label label-success'><strong>+[% e.diff 
%]</strong></span>
+        [%- ELSIF e.diff < 0 && eval.get_column('nrScheduled') == 0 -%]
+           <span class='label label-important'><strong>[% e.diff 
%]</strong></span>
+        [%- END -%]
        </td>
      </tr>
     [%- END -%]
     [%- IF linkToAll -%]
-      <tr><td class="centered" colspan="4"><a href="[% linkToAll 
%]"><em>More...</em></a></td></tr>
+      <tr><td class="centered" colspan=54"><a href="[% linkToAll 
%]"><em>More...</em></a></td></tr>
     [%- END -%]
   </tbody>
 </table>
-
-
 [% END %]
diff --git a/src/root/jobset-evals.tt b/src/root/jobset-evals.tt
index 640bff1..c8bfab1 100644
--- a/src/root/jobset-evals.tt
+++ b/src/root/jobset-evals.tt
@@ -5,10 +5,8 @@
   uri = c.uri_for(c.controller('Project').action_for('view'), [project.name])
   title = project.name %]:[% jobset.name %]</tt></h2>
 
-[% nrShown = evals.size > resultsPerPage ? resultsPerPage : evals.size %]
-  
 <p>Showing evaluations [% (page - 1) * resultsPerPage + 1 %] - [%
-(page - 1) * resultsPerPage + nrShown %] out of [% total %].</p>
+(page - 1) * resultsPerPage + evals.size %] out of [% total %].</p>
 
 [% INCLUDE renderPager %]
 
diff --git a/src/root/jobset.tt b/src/root/jobset.tt
index e832eb5..66f2bad 100644
--- a/src/root/jobset.tt
+++ b/src/root/jobset.tt
@@ -83,7 +83,7 @@
        <div id="tabs-information" class="tab-pane active">
                [% IF !edit && evals.size() > 0 -%]
                     <h2>Most recent evaluations</h2>
-                   [% INCLUDE renderEvals nrShown=evals.size() - 1 
linkToAll=c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, 
jobset.name]) %]
+                   [% INCLUDE renderEvals 
linkToAll=c.uri_for(c.controller('Jobset').action_for('evals'), [project.name, 
jobset.name]) %]
                 [% END %]
                [% IF !edit && activeJobsStatus -%]
                    <h2>Status</h2>


================================================================
Compare: https://github.com/NixOS/hydra/compare/fd50ac1...0daba6b
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to