BuildDiff: split out from JobsetEval GET impl
[?]
Jan 10, 2022, 7:40 PM
NYIIFA32IHFJIHC5IEAJKOCHXQ7QNR4SN3DDUUPM2GYL3SZNWFDACDependencies
- [2]
HCZ4B6VVPerlCritic: MoreUtils -> SomeUtils - [3]
LOFYJAHGJobsetEval: allow restarting failed builds even with no eval to compare to - [4]
EAN5HLLRJobset eval page: Show all aborted builds under the "aborted jobs" tab - [5]
WZZOOYCHShow queued builds in jobset evaluation pages - [6]
K7V2CCD7Fix an uninitialized value warning - [7]
U4TD3AIQAdd support for viewing jobset evaluations - [8]
DE2DNCOIAllow comparing an evaluation with an arbitrary other evaluation - [9]
JWFZGHKPJobset eval page: Fix handling of aborted/cancelled builds - [10]
L7NUCXKSShow new and removed jobs - [11]
X46KWQFNFix incorrect removed jobs in eval pages - [12]
3PNG7NIBRemove trailing whitespace - [13]
2S7UHICMAllow filtering jobs in eval pages - [14]
RHUAFTJAShow aborted/cancelled builds separately in jobset eval pages - [*]
D5QIOJGP* Move everything up one directory.
Change contents
- edit in src/lib/Hydra/Controller/JobsetEval.pm at line 9
use Hydra::Helper::BuildDiff; - replacement in src/lib/Hydra/Controller/JobsetEval.pm at line 79[4.474]→[4.2476:2610](∅→∅),[4.2476]→[4.2476:2610](∅→∅),[4.2610]→[4.0:58](∅→∅),[4.58]→[4.0:34](∅→∅),[4.34]→[4.218:249](∅→∅),[4.249]→[3.0:30](∅→∅)
$c->stash->{stillSucceed} = [];$c->stash->{stillFail} = [];$c->stash->{nowSucceed} = [];$c->stash->{nowFail} = [];$c->stash->{new} = [];$c->stash->{removed} = [];$c->stash->{unfinished} = [];$c->stash->{aborted} = [];$c->stash->{failed} = [];buildDiff(@builds, @builds2); - edit in src/lib/Hydra/Controller/JobsetEval.pm at line 81[4.2611]→[4.2611:2660](∅→∅),[4.2660]→[4.0:103](∅→∅),[4.103]→[4.2660:2675](∅→∅),[4.173]→[4.2660:2675](∅→∅),[4.2660]→[4.2660:2675](∅→∅),[4.2675]→[4.1475:1498](∅→∅),[4.1498]→[4.2675:2754](∅→∅),[4.2675]→[4.2675:2754](∅→∅),[4.2754]→[4.475:523](∅→∅),[4.523]→[4.1499:1529](∅→∅),[4.2914]→[4.1499:1529](∅→∅),[4.1529]→[4.3051:3078](∅→∅),[4.3051]→[4.3051:3078](∅→∅),[4.3078]→[4.59:81](∅→∅),[4.81]→[4.1530:1558](∅→∅),[4.1558]→[4.104:245](∅→∅),[4.245]→[4.106:249](∅→∅),[4.245]→[4.106:249](∅→∅),[4.460]→[4.106:249](∅→∅),[4.106]→[4.106:249](∅→∅),[4.249]→[4.3270:3758](∅→∅),[4.3270]→[4.3270:3758](∅→∅),[4.3758]→[4.82:136](∅→∅),[4.3798]→[4.3798:3812](∅→∅),[4.3812]→[4.220:342](∅→∅),[4.342]→[4.3812:3840](∅→∅),[4.3812]→[4.3812:3840](∅→∅),[4.3840]→[4.246:394](∅→∅),[4.394]→[3.31:130](∅→∅),[3.130]→[4.394:404](∅→∅),[4.394]→[4.394:404](∅→∅),[4.404]→[4.3840:3846](∅→∅),[4.1612]→[4.3840:3846](∅→∅),[4.3840]→[4.3840:3846](∅→∅),[4.3846]→[4.2210:2211](∅→∅)
my $n = 0;foreach my $build (@builds) {my $aborted = $build->finished != 0 && ($build->buildstatus == 3 || $build->buildstatus == 4);my $d;my $found = 0;while ($n < scalar(@builds2)) {my $build2 = $builds2[$n];my $d = cmpBuilds($build, $build2);last if $d == -1;if ($d == 0) {$n++;$found = 1;if ($aborted) {# do nothing} elsif ($build->finished == 0 || $build2->finished == 0) {push @{$c->stash->{unfinished}}, $build;} elsif ($build->buildstatus == 0 && $build2->buildstatus == 0) {push @{$c->stash->{stillSucceed}}, $build;} elsif ($build->buildstatus != 0 && $build2->buildstatus != 0) {push @{$c->stash->{stillFail}}, $build;} elsif ($build->buildstatus == 0 && $build2->buildstatus != 0) {push @{$c->stash->{nowSucceed}}, $build;} elsif ($build->buildstatus != 0 && $build2->buildstatus == 0) {push @{$c->stash->{nowFail}}, $build;} else { die; }last;}push @{$c->stash->{removed}}, { job => $build2->get_column('job'), system => $build2->get_column('system') };$n++;}if ($aborted) {push @{$c->stash->{aborted}}, $build;} else {push @{$c->stash->{new}}, $build if !$found;}if ($build->buildstatus != 0) {push @{$c->stash->{failed}}, $build;}} - file addition: BuildDiff.pm[16.339]
package Hydra::Helper::BuildDiff;use utf8;use strict;use warnings;use base 'Hydra::Base::Controller::NixChannel';use Hydra::Helper::Nix;use Hydra::Helper::CatalystUtils;use List::SomeUtils qw(uniq);our @ISA = qw(Exporter);our @EXPORT = qw(buildDiff);use Data::Dumper;sub buildDiff {my ($builds, $builds2) = @_;my $ret = [stillSucceed => [],stillFail => [],nowSucceed => [],nowFail => [],new => [],removed => [],unfinished => [],aborted => [],failed => [],];my $n = 0;foreach my $build (@{$builds}) {my $aborted = $build->finished != 0 && ($build->buildstatus == 3 || $build->buildstatus == 4);my $d;my $found = 0;while ($n < scalar($builds2)) {my $build2 = @{$builds2}[$n];my $d = cmpBuilds($build, $build2);last if $d == -1;if ($d == 0) {$n++;$found = 1;if ($aborted) {# do nothing} elsif ($build->finished == 0 || $build2->finished == 0) {push @{$ret->{unfinished}}, $build;} elsif ($build->buildstatus == 0 && $build2->buildstatus == 0) {push @{$ret->{stillSucceed}}, $build;} elsif ($build->buildstatus != 0 && $build2->buildstatus != 0) {push @{$ret->{stillFail}}, $build;} elsif ($build->buildstatus == 0 && $build2->buildstatus != 0) {push @{$ret->{nowSucceed}}, $build;} elsif ($build->buildstatus != 0 && $build2->buildstatus == 0) {push @{$ret->{nowFail}}, $build;} else { die; }last;}push @{$ret->{removed}}, { job => $build2->get_column('job'), system => $build2->get_column('system') };$n++;}if ($aborted) {push @{$ret->{aborted}}, $build;} else {push @{$ret->{new}}, $build if !$found;}if ($build->buildstatus != 0) {push @{$ret->{failed}}, $build;}}return $ret;}1;