aacd01ea8b
Summary: This requires us to handle decryption each time we reboot in the upgrade process, so factor that little block out into the base class so we don't have to keep pasting it. It's also a bit tricky to integrate into the 'catch a boot loop' code we have to deal with #1349721, but I think this should work. There is a matching openqa_fedora_tools diff to generate the disk image. Test Plan: Run the tests, check that they work, run the other upgrade and encrypted install tests and check they still work properly too. Reviewers: garretraziel Reviewed By: garretraziel Subscribers: tflink Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D922
65 lines
2.1 KiB
Perl
65 lines
2.1 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
my $release = lc(get_var("VERSION"));
|
|
# NOTE: this doesn't actually work yet, it's a FIXME in fedorabase
|
|
my $milestone = $self->get_milestone;
|
|
my $args = "--releasever=${release}";
|
|
# This is excessive - after the Bodhi activation point we don't
|
|
# need --nogpgcheck for Branched. But that's hard to detect magically
|
|
if ($release eq 'rawhide' or $milestone eq 'branched') {
|
|
$args .= " --nogpgcheck";
|
|
}
|
|
# disable screen blanking (download can take a long time)
|
|
script_run "setterm -blank 0";
|
|
|
|
assert_script_run "dnf -y system-upgrade download ${args}", 6000;
|
|
|
|
upload_logs "/var/log/dnf.log";
|
|
upload_logs "/var/log/dnf.rpm.log";
|
|
|
|
script_run "dnf system-upgrade reboot";
|
|
# fail immediately if we see a DNF error message
|
|
die "DNF reported failure" if (check_screen "upgrade_fail", 15);
|
|
if (get_var("ENCRYPT_PASSWORD")) {
|
|
$self->boot_decrypt(60);
|
|
}
|
|
# try and catch if we hit RHBZ #1349721 and work around it
|
|
if (check_screen "bootloader") {
|
|
# wait some secs for the screen to clear
|
|
sleep 10;
|
|
if (get_var("ENCRYPT_PASSWORD")) {
|
|
$self->boot_decrypt(60);
|
|
}
|
|
if (check_screen "bootloader") {
|
|
record_soft_failure;
|
|
$self->do_bootloader(postinstall=>1, params=>"enforcing=0");
|
|
if (get_var("ENCRYPT_PASSWORD")) {
|
|
$self->boot_decrypt(60);
|
|
}
|
|
}
|
|
}
|
|
# in encrypted case we need to wait a bit so postinstall test
|
|
# doesn't bogus match on the encryption prompt we just completed
|
|
# before it disappears from view
|
|
if (get_var("ENCRYPT_PASSWORD")) {
|
|
sleep 5;
|
|
}
|
|
}
|
|
|
|
|
|
sub test_flags {
|
|
# without anything - rollback to 'lastgood' snapshot if failed
|
|
# 'fatal' - whole test suite is in danger if this fails
|
|
# 'milestone' - after this test succeeds, update 'lastgood'
|
|
# 'important' - if this fails, set the overall state to 'fail'
|
|
return { fatal => 1 };
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|