Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2026-09-22 20:30:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Tue Sep 22 20:30:18 2026 rev:881 rq:1379697 version:5.1790071740.8a090f85 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-09-22 15:51:02.821821112 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.383539/openQA.changes 2026-09-22 20:30:31.766129023 +0200 @@ -1,0 +2,11 @@ +Tue Sep 22 10:09:15 UTC 2026 - [email protected] + +- Update to version 5.1790071740.8a090f85: + * chore(deps): Dependency cron 2026-09-22 + * fix(packaging): skip fixture test on SLE <= 1500 + * feat(workers): Add worker reservation system + * feat(dev): introduce mock test environment + * fix: Fix typo in NGINX config + * fix: Include missing `PATCH` in rate limiting config example + +------------------------------------------------------------------- Old: ---- openQA-5.1790003470.1faa32c9.obscpio New: ---- openQA-5.1790071740.8a090f85.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:35.732295311 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:35.735295437 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1790003470.1faa32c9 +Version: 5.1790071740.8a090f85 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:35.801298204 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:35.804298330 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1790003470.1faa32c9 +Version: 5.1790071740.8a090f85 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:35.874301265 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:35.876301348 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1790003470.1faa32c9 +Version: 5.1790071740.8a090f85 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:35.952304535 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:35.955304661 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1790003470.1faa32c9 +Version: 5.1790071740.8a090f85 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:36.020307386 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:36.025307596 +0200 @@ -104,7 +104,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1790003470.1faa32c9 +Version: 5.1790071740.8a090f85 Release: 0 Summary: Framework for automated system-level testing (web-frontend, scheduler and tools) Group: Development/Tools/Other @@ -406,6 +406,11 @@ t/43-scheduling-and-worker-scalability.t \ t/ui/*.t +%if 0%{?suse_version} <= 1500 +# Python 3.6 on older SLE versions does not support capture_output used by init-test-fixtures +rm t/44-init-test-fixtures.t +%endif + # "CI" set with longer timeouts as needed for higher performance variations # within CI systems, e.g. OBS. See t/lib/OpenQA/Test/TimeLimit.pm export CI=1 ++++++ openQA-5.1790003470.1faa32c9.obscpio -> openQA-5.1790071740.8a090f85.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/Makefile new/openQA-5.1790071740.8a090f85/Makefile --- old/openQA-5.1790003470.1faa32c9/Makefile 2026-09-21 17:11:10.000000000 +0200 +++ new/openQA-5.1790071740.8a090f85/Makefile 2026-09-22 12:09:00.000000000 +0200 @@ -329,6 +329,24 @@ $(call RUN_SERVICE_TEST_ENV,script/openqa-gru) & \ wait +.PHONY: load-test-fixtures +load-test-fixtures: setup-database ## Load standard mock fixtures into the test database + $(call RUN_SERVICE_TEST_ENV,tools/init-test-fixtures) + +.PHONY: run-webui-mock-env +run-webui-mock-env: load-test-fixtures ## Run a local web UI instance pre-loaded with mock fixtures + $(call RUN_SERVICE_TEST_ENV,script/openqa-webui-daemon) + +.PHONY: run-mock-env +run-mock-env: load-test-fixtures ## Run all local test services pre-loaded with mock fixtures + trap 'kill 0' SIGINT SIGTERM; \ + $(call RUN_SERVICE_TEST_ENV,script/openqa-webui-daemon) & \ + $(call RUN_SERVICE_TEST_ENV,script/openqa-websockets-daemon) & \ + $(call RUN_SERVICE_TEST_ENV,script/openqa-scheduler-daemon) & \ + $(call RUN_SERVICE_TEST_ENV,script/worker) & \ + $(call RUN_SERVICE_TEST_ENV,script/openqa-gru) & \ + wait + .PHONY: run-webui-test-env run-webui-test-env: setup-database ## Run a local web UI instance using a test environment $(call RUN_SERVICE_TEST_ENV,script/openqa-webui-daemon) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/dist/rpm/openQA.spec new/openQA-5.1790071740.8a090f85/dist/rpm/openQA.spec --- old/openQA-5.1790003470.1faa32c9/dist/rpm/openQA.spec 2026-09-21 17:11:10.000000000 +0200 +++ new/openQA-5.1790071740.8a090f85/dist/rpm/openQA.spec 2026-09-22 12:09:00.000000000 +0200 @@ -407,6 +407,11 @@ t/43-scheduling-and-worker-scalability.t \ t/ui/*.t +%if 0%{?suse_version} <= 1500 +# Python 3.6 on older SLE versions does not support capture_output used by init-test-fixtures +rm t/44-init-test-fixtures.t +%endif + # "CI" set with longer timeouts as needed for higher performance variations # within CI systems, e.g. OBS. See t/lib/OpenQA/Test/TimeLimit.pm export CI=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/t/44-init-test-fixtures.t new/openQA-5.1790071740.8a090f85/t/44-init-test-fixtures.t --- old/openQA-5.1790003470.1faa32c9/t/44-init-test-fixtures.t 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1790071740.8a090f85/t/44-init-test-fixtures.t 2026-09-22 12:09:00.000000000 +0200 @@ -0,0 +1,54 @@ +#!/usr/bin/env perl +# Copyright SUSE LLC +# SPDX-License-Identifier: GPL-2.0-or-later + +use Test::Most; +use Mojo::Base -signatures; +use Test::Warnings ':report_warnings'; +use List::Util qw(uniq); + +use FindBin '$Bin'; +use lib "$FindBin::Bin/lib", "$FindBin::Bin/../external/os-autoinst-common/lib"; +use OpenQA::Test::TimeLimit '20'; +use OpenQA::Test::Database; + +my $schema_name = OpenQA::Test::Database::generate_schema_name; +$ENV{OPENQA_DATABASE} = 'test'; +$ENV{OPENQA_DATABASE_SEARCH_PATH} = $schema_name; + +my $schema = OpenQA::Schema::connect_db(deploy => 0, silent => $ENV{HARNESS_IS_VERBOSE} ? 0 : 1, from_script => 1); +$schema->storage->dbh->do(qq{create schema "$schema_name"}); + +my $cmd = "$Bin/../tools/init-test-fixtures"; + +subtest 'run with default fixtures and verify database population' => sub { + my $output = qx{"$cmd" 2>&1}; + is $?, 0, 'command exited with zero return code'; + like $output, qr/openQA interactive test environment has been initialized/i, 'success header printed'; + like $output, qr/Database resets and schema deployed onto '$schema_name'/i, 'correct schema reported'; + + ok $schema->resultset('Users')->find({username => 'Demo'}), 'Demo user from 03-users.pl exists in database'; + ok $schema->resultset('Jobs')->find({id => 80000}), 'Standard jobs from 01-jobs.pl are populated'; + + my $assets = $schema->resultset('Assets'); + ok $assets->count > 0, 'Assets table is populated'; + is_deeply [uniq map { $_->size } $assets->all], [0], 'assume_all_assets_exist sets all asset sizes to 0'; +}; + +subtest 'run with custom fixtures subset' => sub { + my $output = qx{"$cmd" --fixtures="03-users.pl" 2>&1}; + is $?, 0, 'command exited with zero return code'; + like $output, qr/Loaded fixtures matching: 03-users\.pl/i, 'custom fixture glob reported'; +}; + +subtest 'run with help option' => sub { + my $output = qx{"$cmd" --help 2>&1}; + is $?, 0, 'command exited with zero return code'; + like $output, qr/Usage:/i, 'usage information displayed'; + like $output, qr/--fixtures/i, 'fixtures option documented'; +}; + +$schema->storage->dbh->do('SET client_min_messages TO WARNING'); +$schema->storage->dbh->do(qq{drop schema "$schema_name" cascade}); + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/t/lib/init-test-fixtures.pl new/openQA-5.1790071740.8a090f85/t/lib/init-test-fixtures.pl --- old/openQA-5.1790003470.1faa32c9/t/lib/init-test-fixtures.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1790071740.8a090f85/t/lib/init-test-fixtures.pl 2026-09-22 12:09:00.000000000 +0200 @@ -0,0 +1,29 @@ +#!/usr/bin/env perl + +# Copyright SUSE LLC +# SPDX-License-Identifier: GPL-2.0-or-later + +use Mojo::Base -signatures; +use lib 'lib', 't/lib', 'external/os-autoinst-common/lib'; +use OpenQA::Schema; +use OpenQA::Test::Database; +use OpenQA::Test::Utils qw(assume_all_assets_exist); + +my $schema = OpenQA::Schema::connect_db(mode => 'test', deploy => 0); +my $schema_name = $ENV{OPENQA_DATABASE_SEARCH_PATH} // 'public'; + +if ($ENV{RESET_SCHEMA}) { + my $dbh = $schema->storage->dbh; + $dbh->do('SET client_min_messages TO WARNING'); + $dbh->do("DROP SCHEMA IF EXISTS \"$schema_name\" CASCADE"); + $dbh->do("CREATE SCHEMA \"$schema_name\""); +} + +# Deploy schema and insert fixtures +OpenQA::Test::Database->new->create( + skip_schema => 1, + fixtures_glob => $ENV{FIXTURES_GLOB} // '*.pl', +); + +# Configure mock assets to avoid 404s/warnings +assume_all_assets_exist(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/tools/ci/autoinst.sha new/openQA-5.1790071740.8a090f85/tools/ci/autoinst.sha --- old/openQA-5.1790003470.1faa32c9/tools/ci/autoinst.sha 2026-09-21 17:11:10.000000000 +0200 +++ new/openQA-5.1790071740.8a090f85/tools/ci/autoinst.sha 2026-09-22 12:09:00.000000000 +0200 @@ -1 +1 @@ -5.044000-93a96a0e188f2d021df61fad35f78b73ba9f0464 \ No newline at end of file +5.044000-465c975b2356744070591e7333d2950f28b8f49f \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1790003470.1faa32c9/tools/init-test-fixtures new/openQA-5.1790071740.8a090f85/tools/init-test-fixtures --- old/openQA-5.1790003470.1faa32c9/tools/init-test-fixtures 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1790071740.8a090f85/tools/init-test-fixtures 2026-09-22 12:09:00.000000000 +0200 @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 + +# Copyright SUSE LLC +# SPDX-License-Identifier: GPL-2.0-or-later + +# ruff: file-ignore[print] + +"""Helper tool to initialize the openQA developer test environment with fixtures.""" + +import argparse +import os +import subprocess # ruff: ignore[suspicious-subprocess-import] +import sys +from pathlib import Path + +try: + from argparse import BooleanOptionalAction +except ImportError: # pragma: no cover + BooleanOptionalAction = None + + +def init(*, fixtures: str = "*.pl", reset: bool = True, silent: bool = False) -> None: + """Initialize or reset the openQA test database with standard fixtures and mock assets.""" + # Ensure t/fixtures exists + fixtures_dir = Path("t/fixtures") + if not fixtures_dir.exists(): + print(f"Error: Fixtures directory {fixtures_dir} not found.", file=sys.stderr) + sys.exit(1) + + schema_name = os.environ.get("OPENQA_DATABASE_SEARCH_PATH", "public") + + if not silent: + if reset: + print(f"Resetting schema '{schema_name}'...") + print(f"Deploying schema and loading fixtures from '{fixtures}'...") + + # We use a Perl script invoked via subprocess. + # This ensures compatibility with openQA's DBIC schema, connections, and fixture files. + env = os.environ.copy() + env["FIXTURES_GLOB"] = fixtures + env["RESET_SCHEMA"] = "1" if reset else "0" + + try: + # Run Perl with the standalone backend script + subprocess.run( + ["/usr/bin/perl", "t/lib/init-test-fixtures.pl"], + env=env, + check=True, + capture_output=silent, + text=True, + ) + except subprocess.CalledProcessError as e: + print("Error: Failed to initialize test fixtures.", file=sys.stderr) + if e.stderr: + print(e.stderr, file=sys.stderr) + sys.exit(e.returncode) + + if not silent: + print("\n========================================================================") + print(" openQA interactive test environment has been initialized") + print("========================================================================\n") + print(f" Database resets and schema deployed onto '{schema_name}'.") + print(f" Loaded fixtures matching: {fixtures}") + print(" Mock assets activated.\n") + print(" You can interact with the local Web UI using the following links:") + print(" - Home/Overview: http://localhost:9526/") + print(" - Test Results: http://localhost:9526/tests/overview") + print(" - Sample Details: http://localhost:9526/tests/99981") + print(" - Admin Workers: http://localhost:9526/admin/workers\n") + print(" Authentication Info:") + print(" - Click 'Login' in the top-right corner to log in automatically") + print(" as the 'Demo' user (who has administrator/operator rights).\n") + print("========================================================================\n") + + +def main() -> None: + """Parse command-line arguments and run fixture initialization.""" + parser = argparse.ArgumentParser(description="Initialize the openQA developer test environment with fixtures.") + parser.add_argument( + "--fixtures", + "-f", + default="*.pl", + help="Specify fixture files to load (default: '*.pl')", + ) + if BooleanOptionalAction: + parser.add_argument( + "--reset", + action=BooleanOptionalAction, + default=True, + help="Drop and recreate the schema before populating (default: True)", + ) + else: + parser.add_argument( + "--reset", + dest="reset", + action="store_true", + default=True, + help="Drop and recreate the schema before populating (default: True)", + ) + parser.add_argument( + "--no-reset", + dest="reset", + action="store_false", + help="Do not drop and recreate the schema before populating", + ) + parser.add_argument( + "--silent", + "-s", + action="store_true", + default=False, + help="Suppress summary and status output", + ) + args = parser.parse_args() + init(fixtures=args.fixtures, reset=args.reset, silent=args.silent) + + +if __name__ == "__main__": + main() ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.c9BlNX/_old 2026-09-22 20:30:47.912805997 +0200 +++ /var/tmp/diff_new_pack.c9BlNX/_new 2026-09-22 20:30:47.916806165 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1790003470.1faa32c9 -mtime: 1790003470 -commit: 1faa32c95ab561016361f929f75cbf595f8f2659 +version: 5.1790071740.8a090f85 +mtime: 1790071740 +commit: 8a090f85ada2a17a6c9a043e71f9d1fb3a20a268
