1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2024-11-27 08:03:08 +00:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Adam Williamson
ffab8bce75 Don't load _advisory_update when START_AFTER_TEST is set
This should always be safe (in the four cases where it's set,
the previous test will have set up the advisory repo), and saves
us a reboot.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2022-12-12 08:53:02 -08:00
Adam Williamson
6e9213f4b7 Drop use of _ADVISORY_REPO_DONE, always use file tests
This is safer if the advisory stuff was done on a previous test
run. Hilariously, this exposed a dumb mistake I made years ago
in installedtest.pm and never noticed before: the calls to
advisory_* at the bottom of that file are meant to be in the
post_fail_hook, but they weren't, which meant they got called
by the scheduler. This didn't cause any failures because the
first line caused them to return immediately based on a get_var
call (which it's OK to do in the scheduler), but changing it
to a script_run call (which it's *not* OK to do in scheduling)
caused all the tests to blow up immediately and confused me
*a lot* until I spotted this!

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2022-12-12 08:53:02 -08:00
Adam Williamson
ffbb618d03 Simplify _graphical_wait_login welcome screen logic
This turns out to be overcomplicated. We don't need the special
handling for updates any more, because a few months after we
implemented it, we had to make sure the affected update tests had
an empty START_AFTER_TEST anyway, or else openQA would refuse to
schedule them. So we can just rely on the START_AFTER_TEST
condition for those now. We also don't need the additional
INSTALL_NO_USER condition; the only case where it's actually used
is for install_arm_image_deployment_upload on Workstation, and
that test does not have START_AFTER_TEST set, so the other
condition catches it for welcome screen handling purposes. There
is no need to nest the IMAGE_DEPLOY conditional inside a check
for the desktop and the INSTALL_NO_USER var either; we don't
test any other desktop on ARM, and the IMAGE_DEPLOY var is only
set for that one install_arm_image_deployment_upload test.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2022-12-12 08:48:53 -08:00
Adam Williamson
f915297475 Use buildroot repo for Rawhide image builds also
We recently started using the buildroot repo for Rawhide update
tests, but weren't including it in the image build tests. This
should include it in all the image build tests.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2022-12-12 08:42:18 -08:00
7 changed files with 61 additions and 46 deletions

View File

@ -158,12 +158,13 @@ sub post_fail_hook {
upload_logs "/var/tmp/imgbuild/lorax.log", failok => 1; upload_logs "/var/tmp/imgbuild/lorax.log", failok => 1;
upload_logs "/var/tmp/imgbuild/program.log", failok => 1; upload_logs "/var/tmp/imgbuild/program.log", failok => 1;
} }
}
# For update tests, let's do the update package info log stuff, # For update tests, let's do the update package info log stuff,
# it may be useful for diagnosing the cause of the failure # it may be useful for diagnosing the cause of the failure
advisory_get_installed_packages; advisory_get_installed_packages;
advisory_check_nonmatching_packages(fatal => 0); advisory_check_nonmatching_packages(fatal => 0);
}
1; 1;

View File

@ -553,7 +553,7 @@ sub _repo_setup_compose {
sub _repo_setup_updates { sub _repo_setup_updates {
# Appropriate repo setup steps for testing a Bodhi update # Appropriate repo setup steps for testing a Bodhi update
# Check if we already ran, bail if so # Check if we already ran, bail if so
return if (get_var("_ADVISORY_REPO_DONE")); return unless script_run "test -f /mnt/updatepkgs.txt";
my $version = get_var("VERSION"); my $version = get_var("VERSION");
my $currrel = get_var("CURRREL", "0"); my $currrel = get_var("CURRREL", "0");
my $arch = get_var("ARCH"); my $arch = get_var("ARCH");
@ -677,9 +677,6 @@ sub _repo_setup_updates {
type_string "exit\n"; type_string "exit\n";
wait_still_screen 5; wait_still_screen 5;
} }
# mark via a variable that we've set up the update/task repo and done
# all the logging stuff above
set_var('_ADVISORY_REPO_DONE', '1');
} }
sub repo_setup { sub repo_setup {
@ -1106,12 +1103,14 @@ sub quit_with_shortcut {
} }
# For update tests (this only works if we've been through
# _repo_setup_updates), figure out which packages from the update
# are currently installed. This is here so we can do it both in
# _advisory_post and post_fail_hook.
sub advisory_get_installed_packages { sub advisory_get_installed_packages {
# For update tests (this only works if we've been through # bail out if the file doesn't exist: this is in case we get
# _repo_setup_updates), figure out which packages from the update # here in the post-fail hook but we failed before creating it
# are currently installed. This is here so we can do it both in return if script_run "test -f /mnt/updatepkgs.txt";
# _advisory_post and post_fail_hook.
return unless (get_var("_ADVISORY_REPO_DONE"));
assert_script_run 'rpm -qa --qf "%{SOURCERPM} %{EPOCH} %{NAME}-%{VERSION}-%{RELEASE}\n" | sort -u > /tmp/allpkgs.txt', timeout => 90; assert_script_run 'rpm -qa --qf "%{SOURCERPM} %{EPOCH} %{NAME}-%{VERSION}-%{RELEASE}\n" | sort -u > /tmp/allpkgs.txt', timeout => 90;
# this finds lines which appear in both files # this finds lines which appear in both files
# http://www.unix.com/unix-for-dummies-questions-and-answers/34549-find-matching-lines-between-2-files.html # http://www.unix.com/unix-for-dummies-questions-and-answers/34549-find-matching-lines-between-2-files.html
@ -1137,7 +1136,9 @@ sub advisory_check_nonmatching_packages {
fatal => 1, fatal => 1,
@_ @_
); );
return unless (get_var("_ADVISORY_REPO_DONE")); # bail out if the file doesn't exist: this is in case we get
# here in the post-fail hook but we failed before creating it
return if script_run "test -f /mnt/updatepkgnames.txt";
# if this fails in advisory_post, we don't want to do it *again* # if this fails in advisory_post, we don't want to do it *again*
# unnecessarily in post_fail_hook # unnecessarily in post_fail_hook
return if (get_var("_ACNMP_DONE")); return if (get_var("_ACNMP_DONE"));

View File

@ -295,9 +295,11 @@ sub load_postinstall_tests() {
# install the updates to be tested). Don't do this for UPGRADE tests, as # install the updates to be tested). Don't do this for UPGRADE tests, as
# the update gets installed as part of the upgrade in that case and we # the update gets installed as part of the upgrade in that case and we
# don't need the extra reboot. Don't do this for INSTALL test(s); these # don't need the extra reboot. Don't do this for INSTALL test(s); these
# are checking that an installer image built from the update works and do # are checking that an installer image built from the update works, and
# not install the update themselves in this manner # packages from the update should have been installed as part of the
if (get_var("ADVISORY_OR_TASK") && !get_var("UPGRADE") && !get_var("INSTALL")) { # install process. Don't do this for START_AFTER_TEST tests, as there we
# presume the previous test already did this, and it saves a reboot.
if (get_var("ADVISORY_OR_TASK") && !get_var("UPGRADE") && !get_var("INSTALL") && !get_var("START_AFTER_TEST")) {
autotest::loadtest "tests/_advisory_update.pm"; autotest::loadtest "tests/_advisory_update.pm";
# now load the early boot tests again, as _advisory_update reboots # now load the early boot tests again, as _advisory_update reboots
_load_early_postinstall_tests(2); _load_early_postinstall_tests(2);

View File

@ -87,31 +87,27 @@ sub run {
} }
} }
# For GNOME, handle initial-setup or welcome tour, unless START_AFTER_TEST # For GNOME, handle initial-setup or welcome tour, unless _WELCOME_DONE
# is set in which case it will have been done already. Always # is set (indicating it's been done previously within this test run,
# do it if ADVISORY_OR_TASK is set, as for the update testing flow, # e.g. the second time this module runs on the update flow, or earlier
# START_AFTER_TEST is set but a no-op and this hasn't happened # in the boot process on the INSTALL_NO_USER flow), or START_AFTER_TEST
if ($desktop eq 'gnome' && (get_var("ADVISORY_OR_TASK") || !get_var("START_AFTER_TEST"))) { # is set to the same value as DEPLOY_UPLOAD_TEST (in which case it will
# as this test gets loaded twice on the ADVISORY_OR_TASK flow, and # have been done by the previous test run)
# we might be on the INSTALL_NO_USER flow, check whether # the point of the default values here is to make the check fail if
# this happened already # neither var is set, without needing an extra condition
handle_welcome_screen unless (get_var("_WELCOME_DONE")); my $sat = get_var("START_AFTER_TEST", "1");
} my $dut = get_var("DEPLOY_UPLOAD_TEST", "2");
if ($desktop eq 'gnome' && get_var("INSTALL_NO_USER")) { handle_welcome_screen if ($desktop eq 'gnome' && $sat ne $dut && !get_var("_WELCOME_DONE"));
# handle welcome screen if we didn't do it above (holy flow if (get_var("IMAGE_DEPLOY")) {
# control, Batman!)
handle_welcome_screen unless (get_var("_WELCOME_DONE"));
# if this was an image deployment, we also need to create # if this was an image deployment, we also need to create
# root user now, for subsequent tests to work # root user now, for subsequent tests to work
if (get_var("IMAGE_DEPLOY")) { send_key "ctrl-alt-f3";
send_key "ctrl-alt-f3"; console_login(user => get_var("USER_LOGIN", "test"), password => get_var("USER_PASSWORD", "weakpassword"));
console_login(user => get_var("USER_LOGIN", "test"), password => get_var("USER_PASSWORD", "weakpassword")); type_string "sudo su\n";
type_string "sudo su\n"; type_string "$password\n";
type_string "$password\n"; my $root_password = get_var("ROOT_PASSWORD") || "weakpassword";
my $root_password = get_var("ROOT_PASSWORD") || "weakpassword"; assert_script_run "echo 'root:$root_password' | chpasswd";
assert_script_run "echo 'root:$root_password' | chpasswd"; desktop_vt;
desktop_vt;
}
} }
# Move the mouse somewhere it won't highlight the match areas # Move the mouse somewhere it won't highlight the match areas

View File

@ -23,7 +23,9 @@ sub run {
unless ($version > $currrel) { unless ($version > $currrel) {
$cmd .= " --isfinal --repo=/etc/yum.repos.d/fedora-updates.repo"; $cmd .= " --isfinal --repo=/etc/yum.repos.d/fedora-updates.repo";
} }
$cmd .= " --repo=/etc/yum.repos.d/advisory.repo --repo=/etc/yum.repos.d/workarounds.repo ./results"; $cmd .= " --repo=/etc/yum.repos.d/advisory.repo --repo=/etc/yum.repos.d/workarounds.repo";
$cmd .= " --repo=/etc/yum.repos.d/koji-rawhide.repo" if ($version eq $rawrel);
$cmd .= " ./results";
assert_script_run $cmd, 2400; assert_script_run $cmd, 2400;
# good to have the log around for checks # good to have the log around for checks
upload_logs "pylorax.log", failok => 1; upload_logs "pylorax.log", failok => 1;

View File

@ -44,9 +44,15 @@ sub run {
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg'; assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/mnt/workarounds_repo\', \'/mnt/workarounds_repo\'))" >> /etc/mock/openqa.cfg';
assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg'; assert_script_run 'echo "config_opts[\'plugin_conf\'][\'bind_mount_opts\'][\'dirs\'].append((\'/dev/' . $serialdev . '\', \'/dev/' . $serialdev . '\'))" >> /etc/mock/openqa.cfg';
# add the side repo and workarounds to the config # add the side repo and workarounds to the config
assert_script_run 'printf "config_opts[\'dnf.conf\'] += \"\"\"\n[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n\"\"\"" >> /etc/mock/openqa.cfg'; my $repos = 'config_opts[\'dnf.conf\'] += \"\"\"\n[advisory]\nname=Advisory repo\nbaseurl=file:///mnt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n\n[workarounds]\nname=Workarounds repo\nbaseurl=file:///mnt/workarounds_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n';
# also the buildroot repo, for Rawhide
if ($version eq $rawrel) {
$repos .= '\n[koji-rawhide]\nname=Buildroot repo\nbaseurl=https://kojipkgs.fedoraproject.org/repos/rawhide/latest/\$basearch/\nenabled=1\nmetadata_expire=3600\ngpgcheck=0\n';
}
$repos .= '\"\"\"';
assert_script_run 'printf "' . $repos . '" >> /etc/mock/openqa.cfg';
# replace metalink with mirrorlist so we don't get slow mirrors # replace metalink with mirrorlist so we don't get slow mirrors
repos_mirrorlist("/etc/mock/openqa.cfg"); repos_mirrorlist("/etc/mock/templates/*.tpl");
# upload the config so we can check it's OK # upload the config so we can check it's OK
upload_logs "/etc/mock/openqa.cfg"; upload_logs "/etc/mock/openqa.cfg";
# now check out the kickstarts # now check out the kickstarts
@ -57,6 +63,10 @@ sub run {
assert_script_run 'echo "repo --name=advisory --baseurl=file:///mnt/update_repo" >> ' . $repoks; assert_script_run 'echo "repo --name=advisory --baseurl=file:///mnt/update_repo" >> ' . $repoks;
# and the workarounds repo # and the workarounds repo
assert_script_run 'echo "repo --name=workarounds --baseurl=file:///mnt/workarounds_repo" >> ' . $repoks; assert_script_run 'echo "repo --name=workarounds --baseurl=file:///mnt/workarounds_repo" >> ' . $repoks;
# and the buildroot repo, for Rawhide
if ($version eq $rawrel) {
assert_script_run 'echo "repo --name=koji-rawhide --baseurl=https://kojipkgs.fedoraproject.org/repos/rawhide/latest/\$basearch/" >> ' . $repoks;
}
# FIXME: this is a workaround for #2119518, disabling oomd so it # FIXME: this is a workaround for #2119518, disabling oomd so it
# doesn't go crazy killing things # doesn't go crazy killing things
my $relnum = get_release_number; my $relnum = get_release_number;

View File

@ -38,11 +38,14 @@ sub run {
assert_script_run 'git clone https://pagure.io/workstation-ostree-config.git'; assert_script_run 'git clone https://pagure.io/workstation-ostree-config.git';
assert_script_run 'pushd workstation-ostree-config'; assert_script_run 'pushd workstation-ostree-config';
assert_script_run "git checkout ${branch}"; assert_script_run "git checkout ${branch}";
# now copy the advisory and workaround repo config files in # now copy the advisory, workaround repo and koji-rawhide config files
assert_script_run 'cp /etc/yum.repos.d/advisory.repo .'; assert_script_run 'cp /etc/yum.repos.d/advisory.repo .';
assert_script_run 'cp /etc/yum.repos.d/workarounds.repo .'; assert_script_run 'cp /etc/yum.repos.d/workarounds.repo .';
assert_script_run 'cp /etc/yum.repos.d/koji-rawhide.repo .' if ($version eq $rawrel);
# and add them to the config file # and add them to the config file
assert_script_run 'sed -i -e "s,repos:,repos:\n - advisory\n - workarounds,g" fedora-' . $lcsubv . '.yaml'; my $repl = 'repos:\n - advisory\n - workarounds';
$repl .= '\n - koji-rawhide' if ($version eq $rawrel);
assert_script_run 'sed -i -e "s,repos:,' . $repl . ',g" fedora-' . $lcsubv . '.yaml';
# upload the config so we can check it # upload the config so we can check it
upload_logs "fedora-$lcsubv.yaml"; upload_logs "fedora-$lcsubv.yaml";
assert_script_run 'popd'; assert_script_run 'popd';