os-autoinst-distri-rocky/tests/upgrade_run.pm
Adam Williamson aacd01ea8b add encrypted workstation upgrade tests (current and previous)
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
2016-07-08 08:56:57 -07:00

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: