os-autoinst-distri-rocky/tests/install_source_graphical.pm
Adam Williamson 0da6652287 add NFS tests (and DHCP/DNS in the support server)
Summary:
Set up the support server to provide DHCP/DNS functionality and
an NFS server, providing a kickstart. Add a kickstart test just
like the other root-user-crypted-net kickstart tests except it
gets the kickstart from the support server via NFS. Also add NFS
repository tests and a second support server for Server-dvd-iso
flavor: this test must run on that flavor to ensure that packages
are actually available. The support server just mounts the
attached 'DVD' and exports it via NFS.

Note we don't need to do anything clever to avoid IP conflicts
between the two support servers, because os-autoinst-openvswitch
ensures each worker group is on its own VLAN.

As part of adding the NFS repo tests, I did a bit of cleanup,
moving little things we were repeating a lot into anacondatest,
and sharing the 'check if the repo was used' logic between all
the tests (by making it into a test step that's loaded for all
of them). I also simplified the 'was repo used' checks a bit,
it seems silly to run a 'grep' command inside the VM then have
os-autoinst do a grep on the output (which is effectively what
we were doing before), instead we'll just use a single grep
within the VM, and clean up the messy quoting/escaping a bit.

Test Plan:
Run all tests - at least all repository tests - and
check they work (make sure the tests are actually still sane,
not just that they pass). I've done runs of all the repo tests
and they look good to me, but please double-check. I'm currently
re-running the whole 24-20160609.n.0 test on staging with these
changes.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D888
2016-06-13 08:42:30 -07:00

64 lines
1.8 KiB
Perl

use base "anacondatest";
use strict;
use testapi;
sub run {
my $self = shift;
# Anaconda hub
assert_screen "anaconda_main_hub", 300; #
# Go into the Install Source spoke
assert_and_click "anaconda_main_hub_installation_source";
# select appropriate protocol on the network
assert_and_click "anaconda_install_source_on_the_network";
send_key "tab";
# if we have an NFS repo select NFS (one 'up'), otherwise HTTP (four 'ups')
my $num;
$num = get_var("REPOSITORY_GRAPHICAL") =~ m/^nfs:/ ? 1 : 4;
for (my $i=0; $i<$num; $i++){
send_key "up";
}
# let's just accept either NFS or HTTP here, if it's the wrong one the
# test will fail soon anyhow
assert_screen "anaconda_install_source_selected";
# insert the url
send_key "tab";
my $repourl = "";
# if either MIRRORLIST_GRAPHICAL or REPOSITORY_GRAPHICAL is set, type this into
# the repository url input
if (get_var("MIRRORLIST_GRAPHICAL")) {
$repourl = $self->get_mirrorlist_url();
type_string $repourl;
# select as mirror list
assert_and_click "anaconda_install_source_repo_select_mirrorlist";
}
elsif (get_var("REPOSITORY_GRAPHICAL")) {
$repourl = $self->get_full_repo(get_var("REPOSITORY_GRAPHICAL"));
# strip the 'nfs:' for typing here
$repourl =~ s/^nfs://;
type_string $repourl;
}
assert_and_click "anaconda_spoke_done";
# Anaconda hub
assert_screen "anaconda_main_hub", 300;
}
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: