From 6251ab6bf60c0249a2a0419127ae49e21e28fb620d43acde2290c4ae572929e1 Mon Sep 17 00:00:00 2001 From: Oliver Kurz Date: Mon, 16 Aug 2021 05:47:43 +0000 Subject: [PATCH 1/3] OBS-URL: https://build.opensuse.org/package/show/devel:openQA:tested/openQA?expand=0&rev=675 --- _service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_service b/_service index 65b601f..6ae7936 100644 --- a/_service +++ b/_service @@ -12,7 +12,7 @@ %ct.%h git enable - coolo@suse.com + okurz@suse.com From 812eee7a03dafa3fe2cf3652cc9a55b474d24be48aed267de4c8fd6d68b34ea3 Mon Sep 17 00:00:00 2001 From: Oliver Kurz Date: Tue, 24 Aug 2021 16:03:07 +0000 Subject: [PATCH 2/3] Offline generation of 4.6.1629814422.9faec0365 4.6.1629814422.9faec0365 4.6.1629814422.9faec0365 4.6.1629814422.9faec0365 4.6.1629814422.9faec0365 OBS-URL: https://build.opensuse.org/package/show/devel:openQA:tested/openQA?expand=0&rev=676 --- openQA-4.6.1625814138.021a88a2a.obscpio | 3 - openQA-4.6.1629814422.9faec0365.obscpio | 3 + openQA-client-test.spec | 2 +- openQA-devel-test.spec | 2 +- openQA-test.spec | 8 +- openQA-worker-test.spec | 8 +- openQA.changes | 155 ++++++++++++++++++++++++ openQA.obsinfo | 6 +- openQA.spec | 34 ++++-- 9 files changed, 186 insertions(+), 35 deletions(-) delete mode 100644 openQA-4.6.1625814138.021a88a2a.obscpio create mode 100644 openQA-4.6.1629814422.9faec0365.obscpio diff --git a/openQA-4.6.1625814138.021a88a2a.obscpio b/openQA-4.6.1625814138.021a88a2a.obscpio deleted file mode 100644 index c541efc..0000000 --- a/openQA-4.6.1625814138.021a88a2a.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65eebd2ca3fbf7a30bf73c15b282a04cebc6e50b6863002e1ebfe96e3e80daf1 -size 13194765 diff --git a/openQA-4.6.1629814422.9faec0365.obscpio b/openQA-4.6.1629814422.9faec0365.obscpio new file mode 100644 index 0000000..e5221a4 --- /dev/null +++ b/openQA-4.6.1629814422.9faec0365.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44d5a1f0ed0d5bcce91a3d67d037f7f4d9612cb29fb30042a58ba2a3d030f1ac +size 13192205 diff --git a/openQA-client-test.spec b/openQA-client-test.spec index e8218b0..6ffad4a 100644 --- a/openQA-client-test.spec +++ b/openQA-client-test.spec @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 4.6.1625814138.021a88a2a +Version: 4.6.1629814422.9faec0365 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later diff --git a/openQA-devel-test.spec b/openQA-devel-test.spec index 8952ac4..7fd6ca9 100644 --- a/openQA-devel-test.spec +++ b/openQA-devel-test.spec @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 4.6.1625814138.021a88a2a +Version: 4.6.1629814422.9faec0365 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later diff --git a/openQA-test.spec b/openQA-test.spec index ace825d..3a7b88e 100644 --- a/openQA-test.spec +++ b/openQA-test.spec @@ -18,16 +18,12 @@ %define short_name openQA Name: %{short_name}-test -Version: 4.6.1625814138.021a88a2a +Version: 4.6.1629814422.9faec0365 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later BuildRequires: %{short_name} == %{version} BuildRequires: openQA-local-db -%if 0%{?suse_version} > 1500 -BuildRequires: group(geekotest) -BuildRequires: user(geekotest) -%endif ExcludeArch: i586 %description @@ -42,8 +38,6 @@ touch %{_sourcedir}/%{short_name} # call one of the components but not openqa itself which would need a valid # configuration /usr/share/openqa/script/initdb --help -getent passwd geekotest -getent group geekotest %install # disable debug packages in package test to prevent error about missing files diff --git a/openQA-worker-test.spec b/openQA-worker-test.spec index 80c118b..55deb1c 100644 --- a/openQA-worker-test.spec +++ b/openQA-worker-test.spec @@ -18,15 +18,11 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 4.6.1625814138.021a88a2a +Version: 4.6.1629814422.9faec0365 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later BuildRequires: %{short_name} == %{version} -%if 0%{?suse_version} > 1500 -BuildRequires: group(_openqa-worker) -BuildRequires: user(_openqa-worker) -%endif ExcludeArch: i586 %description @@ -39,8 +35,6 @@ touch %{_sourcedir}/%{short_name} %build /usr/share/openqa/script/worker --help -getent passwd _openqa-worker -getent group _openqa-worker %install # disable debug packages in package test to prevent error about missing files diff --git a/openQA.changes b/openQA.changes index 6775037..f8a740d 100644 --- a/openQA.changes +++ b/openQA.changes @@ -1,3 +1,158 @@ +------------------------------------------------------------------- +Tue Aug 24 16:02:51 UTC 2021 - okurz@suse.com + +- Update to version 4.6.1629814422.9faec0365: + * doc: Make the PRODUCTDIR overwrite docs less confusing + * Remove unused test mock and mark uncoverable line + * Optimize querying progress of running jobs by utilizing module columns + * fullstack: scale panel waits via TimeLimit + * Document that needles will not be loaded from a custom `CASEDIR` + * doc: Remove remark that asset caching overrides PRODUCTDIR + * Remove TODO-comment in worker code which is most likely obsolete + * Avoid uncovered lines in `t/24-worker-engine.t` + * Fix bug reporting link for SUSE 15 SP4 + * job: Record hook_cmd in minion job notes + * worker: Remove delay function as now proper callbacks are used + * Improve test coverage of `isotovideo.pm` + * worker: Use proper callback instead of `delay` function during setup + * Let workers declare themselves as broken if asset downloads pile up + * Print stacktrace when worker crashes due to unhandled exception + * workflows: Drop the body line length check + * worker: Workaround errors in web socket handling + * workflows: Allow 180 characters in commit body + * Improve worker's exception handling and related test + * Add an explicit unit test for the workers `exec` and `delay` functions + * Do not remove timer after delay + * Create `cache_tests` jobs with increased prio + * Dependency cron 2021-08-11 + * Bail out whenever the expected result was not found + * fullstack: Extended wait for result panel + * fullstack: Return early if stat fails to avoid file errors + * Allow users to change which group $dbuser belongs to + * ci: Improve hadolint check + * Log user data received during OAuth2 + * Add yaml file to enable commit message checks + * Dependency cron 2021-08-06 + * Fix "not last X" needle searches to include "never" results + * search: Search Python filenames and contents + * Ensure we end testing when bailing due to missing Selenium drivers + * Add perl(IO::Uncompress::UnXz) as an optional dependency + * Dependency cron 2021-08-04 + * spec: Exclude t/43-scheduling-and-worker-scalability.t from tests again + * Simplify loop over results in dump_templates + * Extract function for product_key from dump_templates + * t: Add complete statement coverage for dump_templates + * Extract functions in script/dump_templates + * t: Add one subtest for dump_templates options + * Use "url_from_host" in OpenQA::Script::CloneJob as well + * Extract method OpenQA::Client::url_from_host for load+dump_templates + * Slightly simplify script/load+dump_templates + * Use signatures in script/load+dump_templates + * Slightly simplify OpenQA::Script::CloneJob + * Use signatures completely in OpenQA::Script::CloneJob + * Use signatures in script/openqa-clone-job + * t: Fix 40-openqa-clone-job to not read personal config files + * Fix OPENQA_CONFIG in OpenQA::UserAgent to override, not add config search path + * Use signatures in OpenQA::Script::Client + * t: Clarify that 40-script_load_templates also calls dump_templates + * Simplify script/dump_templates a bit + * Add regex and tests for fragment identifier recognition + * Retry the assets package generation if a CDN fails + * Generalize path to "unstable tests" + * Simplify all test selection switches for all "fullstack" tests into one + * Remove unnecessary "SCALABILITY_TEST" variable + * Update dependencies + * Remove `collect_coverage_of_gru_jobs` where `run_gru_job` is used anyways + * Perform minion jobs in foreground in several tests using `perform_jobs` + * Remove unused imports of `collect_coverage_of_gru_jobs` + * Perform all Minion jobs consistently in foreground in `t/14-grutasks.t` + * Remove `collect_coverage_of_gru_jobs` from `t/api/02-iso-download.t` + * Fix stability of check for scroll-up button in `t/ui/14-dashboard.t` + * Enable all rules from eslint:recommended related to syntax and logic errors + * Makefile: Bump retries for fullstack-unstable after recent instabilities + * Make default test runs less noisy + * Makefile: Add optional "EXTRA_PROVE_ARGS" to add to prove calls + * Makefile: Fix comment alignment + * Make scalability test setup independent of test data from `os-autoinst` + * Remove more dead code from OpenQA::WebAPI::Plugin::Helpers + * Remove dead code from OpenQA::WebAPI::Plugin::Helpers + * Generalize CI base container path + * git subrepo pull (merge) --force external/os-autoinst-common + * t: Bump timeout for ui/14-dashboard.t + * Make message about clone error unique + * worker: Unify retry-behavior of artefact file uploads with regular API calls + * worker: Move error handling for API calls into a separate function + * worker: Pass error during final upload as `api failure: …` reason + * worker: Retry when sending an artefact fails + * Improve error handling of _upload_log_file to retry also on connection errors + * Run tools/tidy + * Adapt codecov target to current coverage + * OpenQA::Worker::Engines::isotovideo: Use consistent single-ticks where applicable + * OpenQA::Worker::Engines::isotovideo: Simplify using signatures + * docs: Add option to disable test timeout with env variable + * Dependency cron 2021-07-27 + * Mark most of the unstable worker test code as uncoverable + * t: Ensure `t/ui/14-dashboard.t` passes also when browser window is big + * t: Disable coverage report for forked processes in scalability test + * t: Fix check for `last_updated` column of needles + * Avoid perl warning in string concatenation + * Remove .jsbeautifyrc, since it is no longer needed + * Dependency cron 2021-07-22 + * Use the OPENQA_UPLOAD_DELAY environment variable to speed up 24-worker-jobs.t + * Replace wait_with_progress with a sleep call + * Cover wait_with_progress with basic tests + * Remove dead code from LiveViewHandler + * git subrepo commit (merge) external/os-autoinst-common + * Dependency cron 2021-07-20 + * containers: Install ruby and rubygem-sass + * Dependency cron 2021-07-17 + * Add minimal js-tidy script that will take care of Node.js dependencies + * cache service: Avoid logging back-traces when scanning + * docs: Add a test example written in Python + * t: Improve coding style in `t/21-needles.t` + * t: Fix check for `last_updated` column of needles + * t: Use `Time::Seconds` in `t/21-needles.t` + * t: Cover worker's log file upload + * .circleci: Be more gracious with timeouts due to random slowness + * t: Bump timeout for ui/06-operator_links.t + * t: Bump timeouts for 44-scripts.t + * Simplify script/modify_needle + * t: Add test for script/modify_needle + * Improve error message (report filename instead of test name) + * Avoid getting stuck syncing tests by adding timeout to `rsync` call + * Prefer "const" to "let" in JavaScript code if the value is never changed + * Fix all ESLint rule violations + * Add eslint and prettier support + * Show logs when docker compose up fails in the test_containers_compose + * Fix use of su by providing shell for geekotest + * Clean up param_hash helper code + * t: Cover worker's asset upload + * Remove debug logging for livelog viewers + * t: Cover worker's handling of failing asset upload + * openqa-bootstrap: Check that systemd is available + * Add basic unit test for image live streaming + * Use configurable constants instead of hard-coded intervals for streaming + * Fix error handling when asking worker to enable the live log + * Improve error handling when streaming images for live view + * Improve log messages of image streaming code + * doc: Document finding tests via the REST-API + * doc: Improve `openqa-cli` documentation + * doc: Improve introduction of REST-API + * doc: Improve references + * Distinguish comment types on /tests + * Fix 'This: command not found' errors + * t: Cover posting job setup status + * t: Cover handling job timeout + * t: Cover worker's image upload + * t: Cover case when worker accepts job but the ws connection has been lost + * Write code in `t/24-worker-jobs.t` in a more compact way + * Avoid forking in `t/24-worker-jobs.t` to collect coverage of upload code + * Split `_upload_results_step_2_upload_images` into multiple functions + * Revert "Reenable sysusers" + * Remove the link to /tests/overview in the parent group overview + * Revert "Distinguish comment types on /tests" + * openqa-bootstrap: Ensure to enforce expected error handling + ------------------------------------------------------------------- Fri Jul 09 08:24:15 UTC 2021 - coolo@suse.com diff --git a/openQA.obsinfo b/openQA.obsinfo index 209cafc..3b7e135 100644 --- a/openQA.obsinfo +++ b/openQA.obsinfo @@ -1,5 +1,5 @@ name: openQA -version: 4.6.1625814138.021a88a2a -mtime: 1625814138 -commit: 021a88a2a6a3f37b340a4f9d1d9d281acd050c96 +version: 4.6.1629814422.9faec0365 +mtime: 1629814422 +commit: 9faec0365a850a08b7bf99aea6765449b9e37d74 diff --git a/openQA.spec b/openQA.spec index 7270135..9d13984 100644 --- a/openQA.spec +++ b/openQA.spec @@ -49,14 +49,14 @@ # The following line is generated from dependencies.yaml %define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious::Plugin::AssetPack) >= 1.36 # The following line is generated from dependencies.yaml -%define common_requires perl >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Getopt::Long) perl(Minion) >= 10.22 perl(Mojolicious) >= 9.11 perl(Regexp::Common) perl(Storable) perl(Try::Tiny) +%define common_requires perl >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Carp::Always) perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Getopt::Long) perl(Minion) >= 10.22 perl(Mojolicious) >= 9.11 perl(Regexp::Common) perl(Storable) perl(Try::Tiny) # runtime requirements for the main package that are not required by other sub-packages # The following line is generated from dependencies.yaml -%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(Carp::Always) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(Filesys::Df) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings) +%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(Filesys::Df) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings) # The following line is generated from dependencies.yaml %define client_requires curl git-core jq perl(Getopt::Long::Descriptive) perl(IO::Socket::SSL) >= 2.009 perl(IPC::Run) perl(JSON::Validator) perl(LWP::Protocol::https) perl(LWP::UserAgent) perl(Test::More) perl(YAML::PP) >= 0.020 perl(YAML::XS) # The following line is generated from dependencies.yaml -%define worker_requires openQA-client optipng os-autoinst < 5 perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.1 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite3 >= 3.24.0 +%define worker_requires openQA-client optipng os-autoinst < 5 perl(Capture::Tiny) perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.1 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite3 >= 3.24.0 # The following line is generated from dependencies.yaml %define build_requires %assetpack_requires rubygem(sass) @@ -64,7 +64,7 @@ # Do not require on this in individual sub-packages except for the devel # package. # The following line is generated from dependencies.yaml -%define test_requires %common_requires %main_requires %python_scripts_requires %worker_requires ShellCheck curl jq os-autoinst-devel perl(App::cpanminus) perl(Mojolicious::Plugin::OAuth2) perl(Perl::Critic) perl(Perl::Critic::Freenode) perl(Selenium::Remote::Driver) >= 1.23 perl(Selenium::Remote::WDKeys) perl(Test::Exception) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 postgresql-server python3-jsbeautifier python3-setuptools python3-yamllint +%define test_requires %common_requires %main_requires %python_scripts_requires %worker_requires ShellCheck curl jq os-autoinst-devel perl(App::cpanminus) perl(Mojolicious::Plugin::OAuth2) perl(Perl::Critic) perl(Perl::Critic::Freenode) perl(Selenium::Remote::Driver) >= 1.23 perl(Selenium::Remote::WDKeys) perl(Test::Exception) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 postgresql-server python3-setuptools python3-yamllint %ifarch x86_64 %define qemu qemu qemu-kvm %else @@ -76,7 +76,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 4.6.1625814138.021a88a2a +Version: 4.6.1629814422.9faec0365 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later @@ -110,6 +110,8 @@ Recommends: apparmor-utils Recommends: logrotate # the plugin is needed if the auth method is set to "oauth2" Recommends: perl(Mojolicious::Plugin::OAuth2) +# required to decompress .tar.xz compressed disk images/isos +Recommends: perl(IO::Uncompress::UnXz) # server needs to run an rsync server if worker caching is used Recommends: rsync BuildArch: noarch @@ -121,8 +123,6 @@ BuildRequires: %{test_requires} %if 0%{?suse_version} >= 1330 Requires(pre): group(nogroup) %endif -BuildRequires: sysuser-tools -%sysusers_requires %description openQA is a testing framework that allows you to test GUI applications on one @@ -265,8 +265,6 @@ sed -e 's,/bin/env python,/bin/python,' -i script/openqa-label-all %build %make_build -%sysusers_generate_pre usr/lib/sysusers.d/%{name}-worker.conf %{name}-worker %{name}-worker.conf -%sysusers_generate_pre usr/lib/sysusers.d/geekotest.conf %{name} geekotest.conf %check #for double checking @@ -286,11 +284,13 @@ export LC_ALL=en_US.UTF-8 # 01-test-utilities.t: https://progress.opensuse.org/issues/73162 # 17-labels_carry_over.t: https://progress.opensuse.org/issues/60209 # api/14-plugin_obs_rsync_async.t: https://progress.opensuse.org/issues/68836 +# t/43-scheduling-and-worker-scalability.t: https://progress.opensuse.org/issues/96545 rm \ t/01-test-utilities.t \ t/17-labels_carry_over.t \ t/25-cache-service.t \ t/api/14-plugin_obs_rsync_async.t \ + t/43-scheduling-and-worker-scalability.t \ t/ui/*.t # "CI" set with longer timeouts as needed for higher performance variations @@ -348,7 +348,11 @@ mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui/cache # %fdupes %{buildroot}/%{_prefix} -%pre -f %{name}.pre +%pre +if ! getent passwd geekotest > /dev/null; then + %{_sbindir}/useradd -r -g nogroup -c "openQA user" \ + -d %{_localstatedir}/lib/openqa geekotest 2>/dev/null || : +fi %service_add_pre %{openqa_services} @@ -366,7 +370,13 @@ if [ "$1" = 1 ]; then fi fi -%pre worker -f openQA-worker.pre +%pre worker +if ! getent passwd _openqa-worker > /dev/null; then + %{_sbindir}/useradd -r -g nogroup -c "openQA worker" \ + -d %{_localstatedir}/lib/empty _openqa-worker 2>/dev/null || : + # might fail for non-kvm workers (qemu package owns the group) + %{_sbindir}/usermod _openqa-worker -a -G kvm || : +fi %service_add_pre %{openqa_worker_services} @@ -536,7 +546,6 @@ fi %dir %{_localstatedir}/lib/openqa/share/factory/repo %dir %{_localstatedir}/lib/openqa/share/factory/other %ghost %{_localstatedir}/log/openqa -%{_sysusersdir}/geekotest.conf %files devel @@ -601,7 +610,6 @@ fi %dir %{_localstatedir}/lib/openqa/cache # own one pool - to create the others is task of the admin %dir %{_localstatedir}/lib/openqa/pool/1 -%{_sysusersdir}/%{name}-worker.conf %files client %dir %{_datadir}/openqa From d2cfc70c035b9df2f2ec38e6da0e7367cac7c9420516db76f2987c536425ec01 Mon Sep 17 00:00:00 2001 From: Oliver Kurz Date: Fri, 27 Aug 2021 00:02:55 +0000 Subject: [PATCH 3/3] Offline generation of 4.6.1629997637.5c3f9e2dd 4.6.1629997637.5c3f9e2dd 4.6.1629997637.5c3f9e2dd 4.6.1629997637.5c3f9e2dd 4.6.1629997637.5c3f9e2dd OBS-URL: https://build.opensuse.org/package/show/devel:openQA:tested/openQA?expand=0&rev=677 --- openQA-4.6.1629814422.9faec0365.obscpio | 3 --- openQA-4.6.1629997637.5c3f9e2dd.obscpio | 3 +++ openQA-client-test.spec | 2 +- openQA-devel-test.spec | 2 +- openQA-test.spec | 6 ++++- openQA-worker-test.spec | 6 ++++- openQA.changes | 22 ++++++++++++++-- openQA.obsinfo | 6 ++--- openQA.spec | 35 ++++++++++++++++++++++--- 9 files changed, 70 insertions(+), 15 deletions(-) delete mode 100644 openQA-4.6.1629814422.9faec0365.obscpio create mode 100644 openQA-4.6.1629997637.5c3f9e2dd.obscpio diff --git a/openQA-4.6.1629814422.9faec0365.obscpio b/openQA-4.6.1629814422.9faec0365.obscpio deleted file mode 100644 index e5221a4..0000000 --- a/openQA-4.6.1629814422.9faec0365.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44d5a1f0ed0d5bcce91a3d67d037f7f4d9612cb29fb30042a58ba2a3d030f1ac -size 13192205 diff --git a/openQA-4.6.1629997637.5c3f9e2dd.obscpio b/openQA-4.6.1629997637.5c3f9e2dd.obscpio new file mode 100644 index 0000000..ed5d704 --- /dev/null +++ b/openQA-4.6.1629997637.5c3f9e2dd.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9328c59d1b7a88b983ad59669394be5cb51b0dd2a1c522853e05d9553f954e67 +size 13201933 diff --git a/openQA-client-test.spec b/openQA-client-test.spec index 6ffad4a..5f58973 100644 --- a/openQA-client-test.spec +++ b/openQA-client-test.spec @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 4.6.1629814422.9faec0365 +Version: 4.6.1629997637.5c3f9e2dd Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later diff --git a/openQA-devel-test.spec b/openQA-devel-test.spec index 7fd6ca9..3c48508 100644 --- a/openQA-devel-test.spec +++ b/openQA-devel-test.spec @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 4.6.1629814422.9faec0365 +Version: 4.6.1629997637.5c3f9e2dd Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later diff --git a/openQA-test.spec b/openQA-test.spec index 3a7b88e..317f38b 100644 --- a/openQA-test.spec +++ b/openQA-test.spec @@ -18,12 +18,15 @@ %define short_name openQA Name: %{short_name}-test -Version: 4.6.1629814422.9faec0365 +Version: 4.6.1629997637.5c3f9e2dd Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later BuildRequires: %{short_name} == %{version} BuildRequires: openQA-local-db +%if 0%{?suse_version} > 1500 +BuildRequires: user(geekotest) +%endif ExcludeArch: i586 %description @@ -38,6 +41,7 @@ touch %{_sourcedir}/%{short_name} # call one of the components but not openqa itself which would need a valid # configuration /usr/share/openqa/script/initdb --help +getent passwd geekotest %install # disable debug packages in package test to prevent error about missing files diff --git a/openQA-worker-test.spec b/openQA-worker-test.spec index 55deb1c..d625d3c 100644 --- a/openQA-worker-test.spec +++ b/openQA-worker-test.spec @@ -18,11 +18,14 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 4.6.1629814422.9faec0365 +Version: 4.6.1629997637.5c3f9e2dd Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later BuildRequires: %{short_name} == %{version} +%if 0%{?suse_version} > 1500 +BuildRequires: user(_openqa-worker) +%endif ExcludeArch: i586 %description @@ -35,6 +38,7 @@ touch %{_sourcedir}/%{short_name} %build /usr/share/openqa/script/worker --help +getent passwd _openqa-worker %install # disable debug packages in package test to prevent error about missing files diff --git a/openQA.changes b/openQA.changes index f8a740d..43a2b6c 100644 --- a/openQA.changes +++ b/openQA.changes @@ -1,10 +1,28 @@ ------------------------------------------------------------------- -Tue Aug 24 16:02:51 UTC 2021 - okurz@suse.com +Thu Aug 26 17:07:24 UTC 2021 - okurz@suse.com -- Update to version 4.6.1629814422.9faec0365: +- Update to version 4.6.1629997637.5c3f9e2dd: + * Fix flaky coverage in `t/05-scheduler-full.t` + * git subrepo pull (merge) --force external/os-autoinst-common + * Add `/usr/bin/tail` to apparmor profile to fix hook script on o3 + * Dependency cron 2021-08-26 + * fullstack: Wait for live view button + * Avoid printing stacktrace when cgroup configuration fails + * Move code for cgroups configuration into its own function + * Prevent private assets from being cleaned up too early + * Refactor function to determine a job's parent IDs + * Improve asset registration function + * Prevent public assets from being cleaned up too early + * Improve `t/15-assets.t` + * Reenable sysusers once again on Tumbleweed + * Dependency cron 2021-08-25 * doc: Make the PRODUCTDIR overwrite docs less confusing * Remove unused test mock and mark uncoverable line * Optimize querying progress of running jobs by utilizing module columns + * doc: Document new cache service setting `CACHE_MIN_FREE_PERCENTAGE` + * doc: Improve documentation of cache service + * doc: Fix typo in `Installing.asciidoc` + * Allow configuring worker cache to keep certain percentage of free space * fullstack: scale panel waits via TimeLimit * Document that needles will not be loaded from a custom `CASEDIR` * doc: Remove remark that asset caching overrides PRODUCTDIR diff --git a/openQA.obsinfo b/openQA.obsinfo index 3b7e135..6b3f7f3 100644 --- a/openQA.obsinfo +++ b/openQA.obsinfo @@ -1,5 +1,5 @@ name: openQA -version: 4.6.1629814422.9faec0365 -mtime: 1629814422 -commit: 9faec0365a850a08b7bf99aea6765449b9e37d74 +version: 4.6.1629997637.5c3f9e2dd +mtime: 1629997637 +commit: 5c3f9e2ddf0bb7813fdc335fa59d90025099b0ef diff --git a/openQA.spec b/openQA.spec index 9d13984..0d10c0d 100644 --- a/openQA.spec +++ b/openQA.spec @@ -49,10 +49,10 @@ # The following line is generated from dependencies.yaml %define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious::Plugin::AssetPack) >= 1.36 # The following line is generated from dependencies.yaml -%define common_requires perl >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Carp::Always) perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Getopt::Long) perl(Minion) >= 10.22 perl(Mojolicious) >= 9.11 perl(Regexp::Common) perl(Storable) perl(Try::Tiny) +%define common_requires perl >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Carp::Always) >= 0.14.02 perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Filesys::Df) perl(Getopt::Long) perl(Minion) >= 10.22 perl(Mojolicious) >= 9.11 perl(Regexp::Common) perl(Storable) perl(Try::Tiny) # runtime requirements for the main package that are not required by other sub-packages # The following line is generated from dependencies.yaml -%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(Filesys::Df) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings) +%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings) # The following line is generated from dependencies.yaml %define client_requires curl git-core jq perl(Getopt::Long::Descriptive) perl(IO::Socket::SSL) >= 2.009 perl(IPC::Run) perl(JSON::Validator) perl(LWP::Protocol::https) perl(LWP::UserAgent) perl(Test::More) perl(YAML::PP) >= 0.020 perl(YAML::XS) # The following line is generated from dependencies.yaml @@ -76,7 +76,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 4.6.1629814422.9faec0365 +Version: 4.6.1629997637.5c3f9e2dd Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later @@ -123,6 +123,10 @@ BuildRequires: %{test_requires} %if 0%{?suse_version} >= 1330 Requires(pre): group(nogroup) %endif +%if 0%{?suse_version} > 1500 +BuildRequires: sysuser-tools +%sysusers_requires +%endif %description openQA is a testing framework that allows you to test GUI applications on one @@ -265,6 +269,10 @@ sed -e 's,/bin/env python,/bin/python,' -i script/openqa-label-all %build %make_build +%if 0%{?suse_version} > 1500 +%sysusers_generate_pre usr/lib/sysusers.d/%{name}-worker.conf %{name}-worker %{name}-worker.conf +%sysusers_generate_pre usr/lib/sysusers.d/geekotest.conf %{name} geekotest.conf +%endif %check #for double checking @@ -313,6 +321,11 @@ export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 %make_install +%if 0%{?suse_version} <= 1500 +# we only use sysusers on Tumbleweed +rm -rf %{buildroot}/%{_sysusersdir} +%endif + mkdir -p %{buildroot}%{_datadir}/openqa%{_sysconfdir}/openqa ln -s %{_sysconfdir}/openqa/openqa.ini %{buildroot}%{_datadir}/openqa%{_sysconfdir}/openqa/openqa.ini ln -s %{_sysconfdir}/openqa/database.ini %{buildroot}%{_datadir}/openqa%{_sysconfdir}/openqa/database.ini @@ -348,11 +361,16 @@ mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui/cache # %fdupes %{buildroot}/%{_prefix} +%if 0%{?suse_version} > 1500 +%pre -f %{name}.pre +%else + %pre if ! getent passwd geekotest > /dev/null; then %{_sbindir}/useradd -r -g nogroup -c "openQA user" \ -d %{_localstatedir}/lib/openqa geekotest 2>/dev/null || : fi +%endif %service_add_pre %{openqa_services} @@ -370,6 +388,10 @@ if [ "$1" = 1 ]; then fi fi +%if 0%{?suse_version} > 1500 +%pre worker -f openQA-worker.pre +%else + %pre worker if ! getent passwd _openqa-worker > /dev/null; then %{_sbindir}/useradd -r -g nogroup -c "openQA worker" \ @@ -377,6 +399,7 @@ if ! getent passwd _openqa-worker > /dev/null; then # might fail for non-kvm workers (qemu package owns the group) %{_sbindir}/usermod _openqa-worker -a -G kvm || : fi +%endif %service_add_pre %{openqa_worker_services} @@ -546,6 +569,9 @@ fi %dir %{_localstatedir}/lib/openqa/share/factory/repo %dir %{_localstatedir}/lib/openqa/share/factory/other %ghost %{_localstatedir}/log/openqa +%if 0%{?suse_version} > 1500 +%{_sysusersdir}/geekotest.conf +%endif %files devel @@ -610,6 +636,9 @@ fi %dir %{_localstatedir}/lib/openqa/cache # own one pool - to create the others is task of the admin %dir %{_localstatedir}/lib/openqa/pool/1 +%if 0%{?suse_version} > 1500 +%{_sysusersdir}/%{name}-worker.conf +%endif %files client %dir %{_datadir}/openqa