incrementally ingest eval results nix-eval-jobs streams output, unlike hydra-eval-jobs. Now that we've migrated, we can use this to: 1. Use less RAM by avoiding buffering a whole eval's worth of metadata into a Perl string and an array of JSON objects. 2. Make evals latency a bit lower by allowing the queue runner to start ingesting builds faster. Also use the newly-restored constituents support in `nix-eval-jobs` Note, we pass --workers and --max-memory-size to n-e-j Lost in the h-e-j -> n-e-j migration, causing evaluation to always be single threaded and limited to 4GiB RAM. Follow the config settings like h-e-j used to do (via C++ code). `nix-eval-jobs` should check `hydraJobs` and then `checks` with flakes (cherry picked from commit 6d4ccff43c41adaf6e4b2b9bced7243bc2f6e97b) (cherry picked from commit b0e9b4b2f99f9d8f5c4e780e89f955c394b5ced4) (cherry picked from commit cdfc5c81e8037d3e4818a3e459d0804b2c157ea9) (cherry picked from commit 4b107e6ff36bd89958fba36e0fe0340903e7cd13) Co-Authored-By: Maximilian Bosch <maximilian@mbosch.me>
33 lines
930 B
Perl
33 lines
930 B
Perl
use strict;
|
||
use warnings;
|
||
use Setup;
|
||
use Test2::V0;
|
||
use Hydra::Helper::Exec;
|
||
|
||
my $ctx = test_context();
|
||
|
||
my $jobsetCtx = $ctx->makeJobset(
|
||
expression => 'constituents-broken.nix',
|
||
);
|
||
my $jobset = $jobsetCtx->{"jobset"};
|
||
|
||
my ($res, $stdout, $stderr) = captureStdoutStderr(60,
|
||
("hydra-eval-jobset", $jobsetCtx->{"project"}->name, $jobset->name)
|
||
);
|
||
isnt($res, 0, "hydra-eval-jobset exits non-zero");
|
||
ok(utf8::decode($stderr), "Stderr output is UTF8-clean");
|
||
like(
|
||
$stderr,
|
||
qr/aggregate job ‘mixed_aggregate’ failed with the error: "constituentA": does not exist/,
|
||
"The stderr record includes a relevant error message"
|
||
);
|
||
|
||
$jobset->discard_changes({ '+columns' => {'errormsg' => 'errormsg'} }); # refresh from DB
|
||
like(
|
||
$jobset->errormsg,
|
||
qr/aggregate job ‘mixed_aggregate’ failed with the error: "constituentA": does not exist/,
|
||
"The jobset records a relevant error message"
|
||
);
|
||
|
||
done_testing;
|