1
0
mirror of https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git synced 2025-02-16 12:34:32 +00:00
os-autoinst-distri-fedora/lib/anacondalog.pm
Adam Williamson 248b7a9536 revise storage: better test loading, shared disk selection
Summary:
This contains several tweaks to storage handling. It adds a
method for disk selection which all the storage tests can
share. It sets up a more extensible approach for main.pm to
run the storage tests, instead of an ever-growing forest of
'else' clauses. Finally it sets up a couple of methods for
changing partitioning schemes on the custom part screen and
uses one of them in the software RAID test; the other will
be used for other custom storage tests.

This kills the two_disks needle. I could keep it and work
it into select_disks, but it doesn't fit naturally and I
really just don't see the point of the needle. The only thing
we lose is we don't check that anaconda actually sees two
disks in the 'attach two disks, only install to one' test
(that's server_sata_multi), but the other multi-disk tests
will serve to catch that case failing for some reason.

What I actually intended to do was add some more tests for
different custom part storage types, but it seemed a good
idea to do some of this cleanup so that can be implemented
efficiently. I'll have followups for that.

Test Plan:
Run all tests and ensure they work exactly as
before (not just that they still pass, but that the correct
test steps are actually scheduled in each case.)

Reviewers: garretraziel, jskladan

Reviewed By: garretraziel, jskladan

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D475
2015-07-31 01:31:27 -07:00

111 lines
2.9 KiB
Perl

package anacondalog;
use base 'fedorabase';
use testapi;
sub post_fail_hook {
my $self = shift;
my $has_traceback = 0;
if (check_screen "anaconda_error", 10) {
assert_and_click "anaconda_report_btn"; # Generage Anaconda ABRT logs
$has_traceback = 1;
}
$self->root_console(check=>0);
if (check_screen "root_console", 10) {
upload_logs "/tmp/X.log";
upload_logs "/tmp/anaconda.log";
upload_logs "/tmp/packaging.log";
upload_logs "/tmp/storage.log";
upload_logs "/tmp/syslog";
upload_logs "/tmp/program.log";
upload_logs "/tmp/dnf.log";
# Upload all ABRT logs
if ($has_traceback) {
type_string "cd /var/tmp && tar czvf var_tmp.tar.gz *";
send_key "ret";
upload_logs "/var/tmp/var_tmp.tar.gz";
}
# Upload Anaconda logs
type_string "tar czvf /tmp/anaconda_tb.tar.gz /tmp/anaconda-tb-*";
send_key "ret";
upload_logs "/tmp/anaconda_tb.tar.gz";
}
else {
save_screenshot;
}
}
sub root_console {
my $self = shift;
my %args = (
check => 1,
@_);
if (get_var("LIVE")) {
send_key "ctrl-alt-f2";
}
else {
# Working around RHBZ 1222413, no console on tty2
send_key "ctrl-alt-f1";
send_key "ctrl-b";
send_key "2";
}
$self->console_login(user=>"root",check=>$args{check});
}
sub select_disks {
my ($self, $disks) = @_;
$disks ||= 1;
# Anaconda hub
assert_screen "anaconda_main_hub", 300; #
# Damn animation delay can cause bad clicks here too - wait for it
sleep 1;
assert_and_click "anaconda_main_hub_install_destination";
if (get_var('NUMDISKS') > 1) {
# Multi-disk case. Select however many disks the test needs. If
# $disks is 0, this will do nothing, and 0 disks will be selected.
for my $n (1 .. $disks) {
assert_and_click "anaconda_install_destination_select_disk_$n";
}
}
else {
# Single disk case.
if ($disks == 0) {
# Clicking will *de*-select.
assert_and_click "anaconda_install_destination_select_disk_1";
}
elsif ($disks > 1) {
die "Only one disk is connected! Cannot select $disks disks.";
}
# For exactly 1 disk, we don't need to do anything.
}
if (get_var('DISK_CUSTOM')) {
assert_and_click "anaconda_manual_partitioning";
}
}
sub custom_scheme_select {
my ($self, $scheme) = @_;
assert_and_click "anaconda_part_scheme";
assert_and_click "anaconda_part_scheme_$scheme";
}
sub custom_change_type {
my ($self, $type) = @_;
# We assume we start off with / selected.
assert_and_click "anaconda_part_device_type";
assert_and_click "anaconda_part_device_type_$type";
assert_and_click "anaconda_part_update_settings";
}
1;
# vim: set sw=4 et: