Detail on the per-animal history page
[buildfarm-server.git] / cgi-bin / show_history.pl
index c57a61793d4744f6ac4a09281f523d483e770489..49ce76792c40855695f976668555a4a413d482f1 100755 (executable)
@@ -51,17 +51,19 @@ my $systemdata = q{
 };
 
 my $statement = qq{
-   with x as 
+   WITH x AS 
    (  select * 
       from build_status_recent_500
       where sysname = ? 
          and branch = ?
-   ) 
-   select (now() at time zone 'GMT')::timestamp(0) - snapshot as when_ago, 
-            sysname, snapshot, status, stage 
-   from x 
-   order by snapshot desc  
-   limit $hm
+   )
+   SELECT (now() at time zone 'GMT')::timestamp(0) - x.snapshot as when_ago, 
+            x.sysname, x.snapshot, x.status, x.stage, s.log_text
+   FROM x 
+   LEFT JOIN build_status_log s
+   ON x.snapshot = s.snapshot AND s.log_stage = 'test-results.log'
+   ORDER BY x.snapshot desc  
+   LIMIT $hm
 }
 ;
 
@@ -81,6 +83,42 @@ while (my $row = $sth->fetchrow_hashref)
        $row->{os_version} = $latest_personality->[0];
        $row->{compiler_version} = $latest_personality->[1];
     }
+    if (defined($row->{log_text}))
+      {         # convert to a hash, find ranges, output list of ranges
+      my $h = { split /\s+/, $row->{log_text} };
+      my $i;
+      my $start;
+      my @ranges;
+
+      foreach my $k (sort {$a<=>$b} keys %$h)
+        {
+        if (defined $start)
+          {
+          if ($h->{$k} ne $h->{$start})
+            {
+            push @ranges, sprintf("%s %s %s", $h->{$start},  $start,  $i);
+            $start = $k;
+            $i = 1;
+            }
+          else
+            {
+            $i++;
+            }
+          }
+        else
+          {
+          $start = $k;
+          $i = 1;
+          }
+        }
+      if (defined $start)
+        {
+        push @ranges, sprintf("%s %s %s", $h->{$start},  $start,  $i);
+        }
+
+      $row->{log_text} = \@ranges;
+      }
+
     push(@$statrows,$row);
 }