$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);
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;
}