Ensure that each eval is compared to the previous one from the same jobset

[?]
Feb 26, 2013, 6:08 PM
U5ZWDBW3XRWDWMMPSSXEZ3DT47FPX5WH74AZ4URVQHHAD7ZOB46AC

Dependencies

  • [2] VH5ZABDR Add a page to show the latest evaluations for the entire server
  • [3] PMNWRTGJ Add multiple output support
  • [*] 2GK5DOU7 * Downloading closures.

Change contents

  • edit in src/lib/Hydra/Helper/Nix.pm at line 288
    [3.9702]
    [2.878]
    }
    sub getEvalInputs {
    my ($c, $eval) = @_;
    my @inputs = $eval->jobsetevalinputs->search(
    { -or => [ -and => [ uri => { '!=' => undef }, revision => { '!=' => undef }], dependency => { '!=' => undef }], altNr => 0 },
    { order_by => "name" });
    }
    sub getEvalInfo {
    my ($cache, $eval) = @_;
    my $res = $cache->{$eval->id}; return $res if defined $res;
    # Get stats for this eval.
    my $nrScheduled;
    my $nrSucceeded = $eval->nrsucceeded;
    if (defined $nrSucceeded) {
    $nrScheduled = 0;
    } else {
    $nrScheduled = $eval->builds->search({finished => 0})->count;
    $nrSucceeded = $eval->builds->search({finished => 1, buildStatus => 0})->count;
    if ($nrScheduled == 0) {
    $eval->update({nrsucceeded => $nrSucceeded});
    }
    }
    # Get the inputs.
    my @inputsList = $eval->jobsetevalinputs->search(
    { -or => [ -and => [ uri => { '!=' => undef }, revision => { '!=' => undef }], dependency => { '!=' => undef }], altNr => 0 },
    { order_by => "name" });
    my $inputs;
    $inputs->{$_->name} = $_ foreach @inputsList;
    return $cache->{$eval->id} =
    { nrScheduled => $nrScheduled
    , nrSucceeded => $nrSucceeded
    , inputs => $inputs
    };
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 336
    [2.1010][2.1010:1084]()
    { order_by => "id DESC", rows => $rows + 1, offset => $offset });
    [2.1010]
    [2.1084]
    { order_by => "id DESC", rows => $rows, offset => $offset });
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 339
    [2.1103][2.1103:1225]()
    my $prevInputs = [];
    my $prev;
    for (my $n = scalar @evals - 1; $n >= 0; $n--) {
    my $cur = $evals[$n];
    [2.1103]
    [2.1225]
    my $cache = {};
    foreach my $curEval (@evals) {
    my ($prevEval) = $c->model('DB::JobsetEvals')->search(
    { project => $curEval->get_column('project'), jobset => $curEval->get_column('jobset')
    , hasnewbuilds => 1, id => { '<', $curEval->id } },
    { order_by => "id DESC", rows => 1 });
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 348
    [2.1226][2.1226:1700]()
    # Get stats for this eval.
    my $nrScheduled;
    my $nrSucceeded = $cur->nrsucceeded;
    if (defined $nrSucceeded) {
    $nrScheduled = 0;
    } else {
    $nrScheduled = $cur->builds->search({finished => 0})->count;
    $nrSucceeded = $cur->builds->search({finished => 1, buildStatus => 0})->count;
    if ($nrScheduled == 0) {
    $cur->update({nrsucceeded => $nrSucceeded});
    }
    }
    [2.1226]
    [2.1700]
    my $curInfo = getEvalInfo($cache, $curEval);
    my $prevInfo = getEvalInfo($cache, $prevEval) if defined $prevEval;
  • edit in src/lib/Hydra/Helper/Nix.pm at line 352
    [2.1758][2.1758:1994]()
    my $curInputs = [ $cur->jobsetevalinputs->search(
    { -or => [ -and => [ uri => { '!=' => undef }, revision => { '!=' => undef }], dependency => { '!=' => undef }], altNr => 0 },
    { order_by => "name" }) ];
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 353
    [2.2021][2.2021:2527]()
    my %prevInputsHash;
    $prevInputsHash{$_->name} = $_ foreach @{$prevInputs};
    foreach my $input (@{$curInputs}) {
    my $p = $prevInputsHash{$input->name};
    push @changedInputs, $input
    if !defined $p || ($input->revision || "") ne ($p->revision || "") || $input->type ne $p->type || ($input->uri || "") ne ($p->uri || "") ||
    ( defined $input->dependency && defined $p->dependency && $input->dependency->id ne $p->dependency->id);
    [2.2021]
    [2.2527]
    foreach my $input (values %{$curInfo->{inputs}}) {
    my $p = $prevInfo->{inputs}->{$input->name};
    push @changedInputs, $input if
    !defined $p
    || ($input->revision || "") ne ($p->revision || "")
    || $input->type ne $p->type
    || ($input->uri || "") ne ($p->uri || "")
    || ($input->get_column('dependency') || "") ne ($p->get_column('dependency') || "");
  • edit in src/lib/Hydra/Helper/Nix.pm at line 362
    [2.2537][2.2537:2571]()
    $prevInputs = $curInputs;
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 363
    [2.2572][2.2572:2848]()
    my $e =
    { eval => $cur
    , nrScheduled => $nrScheduled
    , nrSucceeded => $nrSucceeded
    , nrFailed => $cur->nrbuilds - $nrSucceeded - $nrScheduled
    , diff => defined $prev ? $nrSucceeded - $prev->{nrSucceeded} : 0
    [2.2572]
    [2.2848]
    push @res,
    { eval => $curEval
    , nrScheduled => $curInfo->{nrScheduled}
    , nrSucceeded => $curInfo->{nrSucceeded}
    , nrFailed => $curEval->nrbuilds - $curInfo->{nrSucceeded} - $curInfo->{nrScheduled}
    , diff => defined $prevEval ? $curInfo->{nrSucceeded} - $prevInfo->{nrSucceeded} : 0
  • edit in src/lib/Hydra/Helper/Nix.pm at line 371
    [2.2913][2.2913:2970]()
    push @res, $e if $n < $rows;
    $prev = $e;
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 373
    [2.2977][2.2977:3004]()
    return [reverse @res];
    [2.2977]
    [3.9702]
    return [@res];