]> xenbits.xensource.com Git - people/iwj/osstest.git/commitdiff
sg-report-flight: findaflight can chase build job references as found in bisection...
authorIan Jackson <iwj@woking.cam.xci-test.com>
Mon, 4 Feb 2013 15:30:51 +0000 (15:30 +0000)
committerIan Jackson <iwj@woking.cam.xci-test.com>
Mon, 4 Feb 2013 15:30:51 +0000 (15:30 +0000)
sg-report-flight

index fe4039203b2e90857b521a1aa36dfea60266572a..c2f0db5b1a6972f8342b573a65c8ae6c3808593e 100755 (executable)
@@ -153,11 +153,17 @@ END
     $flightsq= $dbh_tests->prepare($flightsq);
     $flightsq->execute($branch, @blessings);
 
+    my $buildflightsq= $dbh_tests->prepare(<<END);
+        SELECT val FROM runvars
+        WHERE flight = ?
+           AND name LIKE '%buildjob'
+END
+
     my $revisionsq= <<END;
-            SELECT job, val FROM runvars
+            SELECT flight, job, val FROM runvars
                 WHERE flight=?
                  AND name=?
-               GROUP BY job, val
+               GROUP BY flight, job, val
 END
     #print DEBUG "===\n$mismatchq\n===\n";
     $revisionsq= $dbh_tests->prepare($revisionsq);
@@ -168,28 +174,41 @@ END
 END
 
     while (my ($tflight) = $flightsq->fetchrow_array) {
+       my @bflights;
+       push @bflights, $tflight;
+       $buildflightsq->execute($tflight);
+       while (my $bflightrow = $buildflightsq->fetchrow_hashref()) {
+           my $val = $bflightrow->{val};
+           next unless $val =~ m/\./; # same flight, already added
+           push @bflights, $`;
+       }
        my $whynot;
        foreach my $tree (keys %{ $specver{$thisthat} }) {
+           my @revisions;
            my $v= $specver{$thisthat}{$tree};
-            my $revisions;
-            if ($tree ne 'osstest') {
-                $revisionsq->execute($tflight, "built_revision_$tree");
-                $revisions= $revisionsq->fetchall_arrayref({});
-            } else {
-                $revisionsosstestq->execute($tflight);
-                $revisions= $revisionsosstestq->fetchall_arrayref({});
-            }
-            if (!@$revisions) {
+           foreach my $bflight (@bflights) {
+               my $revisions;
+               if ($tree ne 'osstest') {
+                   $revisionsq->execute($bflight, "built_revision_$tree");
+                   $revisions= $revisionsq->fetchall_arrayref({});
+               } else {
+                   $revisionsosstestq->execute($bflight);
+                   $revisions= $revisionsosstestq->fetchall_arrayref({});
+               }
+               push @revisions, @$revisions;
+           }
+            if (!@revisions) {
                 $whynot= "no built/used $tree";
                 last;
             }
             my ($wrong) = grep {
                 $_->{val} !~ m/^(?: .*: )? $v /x;
-            } @$revisions;
+            } @revisions;
 
             if (defined $wrong) {
                 $whynot= "mismatch $tree ".
-                    (defined $wrong->{job} ? $wrong->{job} : "(osstest)").
+                    (defined $wrong->{job} ?
+                    "$wrong->{flight}.$wrong->{job}" : "(osstest)").
                     " $wrong->{val} != $v";
                 last;
             }