Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-01-28 14:58:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.2316 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Tue Jan 28 14:58:59 2025 rev:663 rq:1240636 version:4.6.1737988986.b7aa7737 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-01-23 18:03:15.658804799 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.2316/openQA.changes 2025-01-28 14:59:46.819549487 +0100 @@ -1,0 +2,12 @@ +Mon Jan 27 19:11:06 UTC 2025 - ok...@suse.com + +- Update to version 4.6.1737988986.b7aa7737: + * Report actual server errors in via JS + * Bump eslint from 9.18.0 to 9.19.0 + * Precede unavailability error with "Unavailable: " to ease log grepping + * Dependency cron 2025-01-25 + * Allow openQA worker to execute check_qemu_oom script in apparmor + * Track the relevant scheduled product when a job is obsoleted + * Replace Perl::Critic::Freenode with Perl::Critic::Community + +------------------------------------------------------------------- Old: ---- openQA-4.6.1737550093.3fc00710.obscpio New: ---- openQA-4.6.1737988986.b7aa7737.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:47.623582790 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:47.623582790 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 4.6.1737550093.3fc00710 +Version: 4.6.1737988986.b7aa7737 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:47.659584282 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:47.659584282 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 4.6.1737550093.3fc00710 +Version: 4.6.1737988986.b7aa7737 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:47.683585275 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:47.683585275 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 4.6.1737550093.3fc00710 +Version: 4.6.1737988986.b7aa7737 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:47.707586270 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:47.707586270 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 4.6.1737550093.3fc00710 +Version: 4.6.1737988986.b7aa7737 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:47.735587430 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:47.739587595 +0100 @@ -81,7 +81,7 @@ %define qemu qemu %endif # The following line is generated from dependencies.yaml -%define style_check_requires ShellCheck perl(Code::TidyAll) perl(Perl::Critic) perl(Perl::Critic::Freenode) python3-yamllint shfmt +%define style_check_requires ShellCheck perl(Code::TidyAll) perl(Perl::Critic) perl(Perl::Critic::Community) python3-yamllint shfmt # The following line is generated from dependencies.yaml %define cover_requires perl(Devel::Cover) perl(Devel::Cover::Report::Codecovbash) # The following line is generated from dependencies.yaml @@ -90,7 +90,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 4.6.1737550093.3fc00710 +Version: 4.6.1737988986.b7aa7737 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ node_modules.obscpio ++++++ Binary files old/@eslint-js-9.18.0.tgz and new/@eslint-js-9.18.0.tgz differ Binary files old/@eslint-js-9.19.0.tgz and new/@eslint-js-9.19.0.tgz differ Binary files old/eslint-9.18.0.tgz and new/eslint-9.18.0.tgz differ Binary files old/eslint-9.19.0.tgz and new/eslint-9.19.0.tgz differ ++++++ node_modules.spec.inc ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 14:59:48.315611455 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 14:59:48.319611620 +0100 @@ -3,7 +3,7 @@ Source1002: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz#/@eslint-config-array-0.19.1.tgz Source1003: https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz#/@eslint-core-0.10.0.tgz Source1004: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#/@eslint-eslintrc-3.2.0.tgz -Source1005: https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz#/@eslint-js-9.18.0.tgz +Source1005: https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz#/@eslint-js-9.19.0.tgz Source1006: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz#/@eslint-object-schema-2.1.5.tgz Source1007: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#/@eslint-plugin-kit-0.2.5.tgz Source1008: https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz#/@humanfs-core-0.19.1.tgz @@ -72,7 +72,7 @@ Source1071: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz Source1072: https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz#/delaunator-5.0.1.tgz Source1073: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz -Source1074: https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz#/eslint-9.18.0.tgz +Source1074: https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz#/eslint-9.19.0.tgz Source1075: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz#/eslint-config-prettier-10.0.1.tgz Source1076: https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz#/eslint-plugin-prettier-5.2.3.tgz Source1077: https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz#/eslint-scope-8.2.0.tgz ++++++ openQA-4.6.1737550093.3fc00710.obscpio -> openQA-4.6.1737988986.b7aa7737.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/assets/javascripts/needleeditor.js new/openQA-4.6.1737988986.b7aa7737/assets/javascripts/needleeditor.js --- old/openQA-4.6.1737550093.3fc00710/assets/javascripts/needleeditor.js 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/assets/javascripts/needleeditor.js 2025-01-27 15:43:06.000000000 +0100 @@ -502,11 +502,23 @@ fetchWithCSRF(form.action, {method: 'POST', body: new FormData(form)}) .then(response => { - if (!response.ok) throw `Server returned ${response.status}: ${response.statusText}`; - return response.json(); + return response + .json() + .then(json => { + // Attach the parsed JSON to the response object for further use + return {response, json}; + }) + .catch(() => { + // If parsing fails, handle it as a non-JSON response + throw `Server returned ${response.status}: ${response.statusText}`; + }); + }) + .then(({response, json}) => { + if (!response.ok) throw `Server returned ${response.status}: ${response.statusText}<br>${json.error || ''}`; + if (json.error) throw json.error; + return json; }) .then(response => { - if (response.error) throw response.error; if (response.requires_overwrite) { delete response.requires_overwrite; const modalElement = document.getElementById('modal-overwrite'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/cpanfile new/openQA-4.6.1737988986.b7aa7737/cpanfile --- old/openQA-4.6.1737550093.3fc00710/cpanfile 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/cpanfile 2025-01-27 15:43:06.000000000 +0100 @@ -116,7 +116,7 @@ on 'develop' => sub { requires 'Code::TidyAll'; requires 'Perl::Critic'; - requires 'Perl::Critic::Freenode'; + requires 'Perl::Critic::Community'; requires 'Perl::Tidy', '== 20250105.0.0'; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/dependencies.yaml new/openQA-4.6.1737988986.b7aa7737/dependencies.yaml --- old/openQA-4.6.1737550093.3fc00710/dependencies.yaml 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/dependencies.yaml 2025-01-27 15:43:06.000000000 +0100 @@ -204,7 +204,7 @@ style_check_requires: python3-yamllint: perl(Perl::Critic): - perl(Perl::Critic::Freenode): + perl(Perl::Critic::Community): perl(Code::TidyAll): ShellCheck: shfmt: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/dist/rpm/openQA.spec new/openQA-4.6.1737988986.b7aa7737/dist/rpm/openQA.spec --- old/openQA-4.6.1737550093.3fc00710/dist/rpm/openQA.spec 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/dist/rpm/openQA.spec 2025-01-27 15:43:06.000000000 +0100 @@ -81,7 +81,7 @@ %define qemu qemu %endif # The following line is generated from dependencies.yaml -%define style_check_requires ShellCheck perl(Code::TidyAll) perl(Perl::Critic) perl(Perl::Critic::Freenode) python3-yamllint shfmt +%define style_check_requires ShellCheck perl(Code::TidyAll) perl(Perl::Critic) perl(Perl::Critic::Community) python3-yamllint shfmt # The following line is generated from dependencies.yaml %define cover_requires perl(Devel::Cover) perl(Devel::Cover::Report::Codecovbash) # The following line is generated from dependencies.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Schema/Result/ScheduledProducts.pm new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Schema/Result/ScheduledProducts.pm --- old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2025-01-27 15:43:06.000000000 +0100 @@ -380,7 +380,7 @@ data => {scheduled_product_id => $self->id}, user_id => $user_id ); - $schema->resultset('Jobs')->cancel_by_settings(\%cond, 1, $deprioritize, $deprioritize_limit); + $schema->resultset('Jobs')->cancel_by_settings(\%cond, 1, $deprioritize, $deprioritize_limit, $self); } catch { my $error = shift; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Schema/ResultSet/Jobs.pm new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Schema/ResultSet/Jobs.pm --- old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Schema/ResultSet/Jobs.pm 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Schema/ResultSet/Jobs.pm 2025-01-27 15:43:06.000000000 +0100 @@ -10,6 +10,7 @@ use File::Basename 'basename'; use IPC::Run; use OpenQA::App; +use OpenQA::Jobs::Constants; use OpenQA::Log qw(log_trace log_debug log_info); use OpenQA::Schema::Result::Jobs; use OpenQA::Schema::Result::JobDependencies; @@ -351,10 +352,7 @@ return $jobs; } -sub cancel_by_settings { - my ($self, $settings, $newbuild, $deprioritize, $deprio_limit) = @_; - $newbuild //= 0; - $deprioritize //= 0; +sub cancel_by_settings ($self, $settings, $newbuild = undef, $deprioritize = undef, $deprio_limit = undef, $related_scheduled_product = undef) { $deprio_limit //= 100; my $rsource = $self->result_source; my $schema = $rsource->schema; @@ -397,34 +395,31 @@ $jobs_to_cancel = $jobs; } my $cancelled_jobs = 0; + my $priority_increment = 10; + my $job_result = $newbuild ? OBSOLETED : USER_CANCELLED; + my $reason = $related_scheduled_product + ? 'cancelled by scheduled product ' . $related_scheduled_product->id + : 'cancelled based on job settings'; + my $cancel_or_deprioritize = sub ($job) { + if ($deprioritize) { + my $prio = $job->priority + $priority_increment; + if ($prio < $deprio_limit) { + $job->set_prio($prio); + return 0; + } + } + return $job->cancel($job_result, $reason) // 0; + }; # first scheduled to avoid worker grab - my $scheduled = $jobs_to_cancel->search({state => OpenQA::Jobs::Constants::SCHEDULED}); - while (my $j = $scheduled->next) { - $cancelled_jobs += _cancel_or_deprioritize($j, $newbuild, $deprioritize, $deprio_limit); - } + my $scheduled = $jobs_to_cancel->search({state => SCHEDULED}); + $cancelled_jobs += $cancel_or_deprioritize->($_) for $scheduled->all; # then the rest my $executing = $jobs_to_cancel->search({state => [OpenQA::Jobs::Constants::EXECUTION_STATES]}); - while (my $j = $executing->next) { - $cancelled_jobs += _cancel_or_deprioritize($j, $newbuild, $deprioritize, $deprio_limit); - } - OpenQA::App->singleton->emit_event(openqa_job_cancel_by_settings => $settings) if ($cancelled_jobs); + $cancelled_jobs += $cancel_or_deprioritize->($_) for $executing->all; + OpenQA::App->singleton->emit_event(openqa_job_cancel_by_settings => $settings) if $cancelled_jobs; return $cancelled_jobs; } -sub _cancel_or_deprioritize { - my ($job, $newbuild, $deprioritize, $limit, $step) = @_; - $step //= 10; - if ($deprioritize) { - my $prio = $job->priority + $step; - if ($prio < $limit) { - $job->set_prio($prio); - return 0; - } - } - return $job->cancel($newbuild ? OpenQA::Jobs::Constants::OBSOLETED : OpenQA::Jobs::Constants::USER_CANCELLED, - 'cancelled based on job settings') // 0; -} - sub next_previous_jobs_query { my ($self, $job, $jobid, %args) = @_; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Worker.pm new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Worker.pm --- old/openQA-4.6.1737550093.3fc00710/lib/OpenQA/Worker.pm 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/lib/OpenQA/Worker.pm 2025-01-27 15:43:06.000000000 +0100 @@ -281,7 +281,7 @@ # a job while broken. The error is propagated to the web UIs. $self->configure_cache_client; $self->current_error($self->check_availability); - log_error $self->current_error if $self->current_error; + log_error 'Unavailable: ' . $self->current_error if $self->current_error; # register error handler to stop the current job when a critical/unhandled error occurs Mojo::IOLoop->singleton->reactor->on( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/package-lock.json new/openQA-4.6.1737988986.b7aa7737/package-lock.json --- old/openQA-4.6.1737550093.3fc00710/package-lock.json 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/package-lock.json 2025-01-27 15:43:06.000000000 +0100 @@ -22,7 +22,7 @@ "timeago": "^1.6.7" }, "devDependencies": { - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "^5.2.3", "prettier": "3.4.2" @@ -106,10 +106,11 @@ } }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -870,17 +871,18 @@ } }, "node_modules/eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/package.json new/openQA-4.6.1737988986.b7aa7737/package.json --- old/openQA-4.6.1737550093.3fc00710/package.json 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/package.json 2025-01-27 15:43:06.000000000 +0100 @@ -12,7 +12,7 @@ }, "homepage": "https://github.com/os-autoinst/openQA#readme", "devDependencies": { - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "^5.2.3", "prettier": "3.4.2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/profiles/apparmor.d/usr.share.openqa.script.worker new/openQA-4.6.1737988986.b7aa7737/profiles/apparmor.d/usr.share.openqa.script.worker --- old/openQA-4.6.1737550093.3fc00710/profiles/apparmor.d/usr.share.openqa.script.worker 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/profiles/apparmor.d/usr.share.openqa.script.worker 2025-01-27 15:43:06.000000000 +0100 @@ -132,7 +132,7 @@ /usr/lib{,exec}/git{,-core}/git-remote-https rix, /usr/lib{,exec}/git{,-core}/git-write-tree rix, /usr/lib/os-autoinst/videoencoder rix, - /usr/lib/os-autoinst/check_qemu_oom arCx, + /usr/lib/os-autoinst/script/check_qemu_oom arCx, /usr/bin/ffmpeg rix, /usr/lib/utempter/utempter rix, /usr/sbin/smbd rix, @@ -182,7 +182,7 @@ } - profile /usr/lib/os-autoinst/check_qemu_oom { + profile /usr/lib/os-autoinst/script/check_qemu_oom { #include <abstractions/base> #include <abstractions/perl> /usr/bin/dmesg rix, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/t/05-scheduler-cancel.t new/openQA-4.6.1737988986.b7aa7737/t/05-scheduler-cancel.t --- old/openQA-4.6.1737550093.3fc00710/t/05-scheduler-cancel.t 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/t/05-scheduler-cancel.t 2025-01-27 15:43:06.000000000 +0100 @@ -15,6 +15,7 @@ require OpenQA::Test::Database; use OpenQA::Test::Utils 'embed_server_for_testing'; use Test::MockModule; +use Test::MockObject; use Test::Mojo; use DBIx::Class::Timestamps 'now'; use Test::Warnings ':report_warnings'; @@ -112,15 +113,20 @@ lj; my $form = {DISTRI => 'opensuse', VERSION => '13.1', FLAVOR => 'DVD', ARCH => 'x86_64'}; -my $ret = $schema->resultset('Jobs')->cancel_by_settings($form); -# 99963 and the new cluster of 2 -is($ret, 3, "two jobs cancelled by hash"); +my $jobs = $schema->resultset('Jobs'); +$schema->txn_begin; +my $ret = $jobs->cancel_by_settings($form); +is $ret, 3, 'three jobs cancelled by settings (99963 and the new cluster of 2)'; $job = job_get(99963); -is($job->reason, 'cancelled based on job settings', "jobs reason points to settings"); -is_deeply(OpenQA::Test::Case::find_most_recent_event($schema, 'job_cancel_by_settings'), - $form, 'Cancellation was logged with settings'); - -$job = $new_job; +is $job->reason, 'cancelled based on job settings', 'jobs reason points to settings'; +my $event = OpenQA::Test::Case::find_most_recent_event($schema, 'job_cancel_by_settings'); +is_deeply $event, $form, 'recent event about cancelled job by settings created'; +$schema->txn_rollback; +my $scheduled_product = Test::MockObject->new->set_always(id => 42); +$ret = $jobs->cancel_by_settings($form, undef, undef, undef, $scheduled_product); +$job = job_get(99963); +is $ret, 3, 'three jobs cancelled again'; +is $job->reason, 'cancelled by scheduled product 42', 'jobs cancellation reason points to product'; lj; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/tools/ci/autoinst.sha new/openQA-4.6.1737988986.b7aa7737/tools/ci/autoinst.sha --- old/openQA-4.6.1737550093.3fc00710/tools/ci/autoinst.sha 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/tools/ci/autoinst.sha 2025-01-27 15:43:06.000000000 +0100 @@ -1 +1 @@ -3d40ba7256ef2790ff399753b69bf482a0e88329 +2512bf5678747276551cc4409dd463140435c65a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1737550093.3fc00710/tools/ci/ci-packages.txt new/openQA-4.6.1737988986.b7aa7737/tools/ci/ci-packages.txt --- old/openQA-4.6.1737550093.3fc00710/tools/ci/ci-packages.txt 2025-01-22 13:48:13.000000000 +0100 +++ new/openQA-4.6.1737988986.b7aa7737/tools/ci/ci-packages.txt 2025-01-27 15:43:06.000000000 +0100 @@ -63,7 +63,7 @@ perl-DateTime-TimeZone-2.60 perl-DBD-Pg-3.18.0 perl-DBD-SQLite-1.760.0 -perl-DBI-1.646.0 +perl-DBI-1.647.0 perl-DBIx-Class-0.082843 perl-DBIx-Class-DeploymentHandler-0.002233 perl-DBIx-Class-DynamicDefault-0.04 ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.S5GKyV/_old 2025-01-28 15:00:06.364358570 +0100 +++ /var/tmp/diff_new_pack.S5GKyV/_new 2025-01-28 15:00:06.368358736 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 4.6.1737550093.3fc00710 -mtime: 1737550093 -commit: 3fc00710fe6d649c2510ca84e552ea2df9b8adba +version: 4.6.1737988986.b7aa7737 +mtime: 1737988986 +commit: b7aa7737679280d3375a094ad63365725caeaacd