From d6c0b62359f4924b22a207e7bbe6ff5fe4b54e7e Mon Sep 17 00:00:00 2001 From: Jozef Pupava Date: Mon, 27 Nov 2023 13:32:46 +0100 Subject: [PATCH] Wrapper for zypper_call and trup_call https://progress.opensuse.org/issues/117028 --- lib/wrapper.pm | 57 ++++++++++++++++++++++++++++ tests/console/year_2038_detection.pm | 9 +---- tests/kernel/update_kernel.pm | 7 +--- 3 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 lib/wrapper.pm diff --git a/lib/wrapper.pm b/lib/wrapper.pm new file mode 100644 index 000000000000..2576885d2abd --- /dev/null +++ b/lib/wrapper.pm @@ -0,0 +1,57 @@ +# SUSE's openQA tests +# +# Copyright 2023 SUSE LLC +# SPDX-License-Identifier: FSFAP +# +# Summary: Wrapper for package installation, zypper or transactional update +# Maintainer: QE Core + +package wrapper; +use Mojo::Base qw(Exporter); +use testapi; +use version_utils qw(is_transactional); +use transactional qw(trup_call); +use utils qw(zypper_call); + +our @EXPORT = "install_package"; + +=head1 DESCRIPTION + + Wrapper for zypper_call and trup_call + +=head2 install_package + + install_package(packages => 'kernel-devel' [, trup_packages => 'kernel-default-base] [, zypper_packages => 'kernel-devel']); + +C defines packages to install for both zypper and trup call, +different packages can be installaed on transactional system via C +or on standard system via C +After trup_call check_reboot_changes can be executed via C parameter + +=cut + +sub install_package { + my (%args) = @_; + my $trup_packages = $args{trup_packages} // $args{packages}; + my $zypper_packages = $args{zypper_packages} // $args{packages}; + die 'At least one of packages, trup_packages, zypper_packages arguments is required' unless defined($args{packages} || $args{trup_packages} || $args{zypper_packages}); + my $timeout = $args{timeout} // 500; + + if (is_transactional) { + if ($args{trup_info}) { + record_info('install_package', $args{trup_info}); + } + else { + trup_call('pkg in -l ' . $trup_packages, timeout => $args{timeout}); + check_reboot_changes if $args{trup_check_reboot}; + } + } + else { + if ($args{zypper_info}) { + record_info('install_package', $args{zypper_info}); + } + else { + zypper_call('in -l ' . $zypper_packages, timeout => $args{timeout}); + } + } +} diff --git a/tests/console/year_2038_detection.pm b/tests/console/year_2038_detection.pm index 75939d47a550..885c6278bd80 100644 --- a/tests/console/year_2038_detection.pm +++ b/tests/console/year_2038_detection.pm @@ -25,15 +25,10 @@ use version_utils qw(is_transactional is_sle is_sle_micro is_leap is_leap_micro) use Utils::Systemd 'disable_and_stop_service'; use power_action_utils 'power_action'; use Utils::Backends 'is_pvm'; +use wrapper; sub install_pkg { - if (is_transactional) { - trup_call('pkg install chrony'); - check_reboot_changes; - } - else { - zypper_call('in chrony'); - } + install_package(packages => 'chrony', trup_check_reboot => 1); } sub run { diff --git a/tests/kernel/update_kernel.pm b/tests/kernel/update_kernel.pm index 8f9f0aa1feaa..f1a9463a88b3 100644 --- a/tests/kernel/update_kernel.pm +++ b/tests/kernel/update_kernel.pm @@ -23,6 +23,7 @@ use repo_tools 'add_qa_head_repo'; use Utils::Backends; use LTP::utils; use transactional; +use wrapper; sub check_kernel_package { my $kernel_name = shift; @@ -86,11 +87,7 @@ sub update_kernel { fully_patch_system; if (check_var('SLE_PRODUCT', 'slert')) { - if (is_transactional) { - record_info("There is no kernel-devel-rt available on transactional system."); - } else { - zypper_call('in kernel-devel-rt'); - } + install_package(zypper_packages => 'kernel-devel-rt', trup_info => 'There is no kernel-devel-rt available on transactional system.'); } elsif (is_sle('12+')) { zypper_call('in kernel-devel');