Add a partial kickstart install test (#308) #522
9 changed files with 135 additions and 115 deletions
|
|
@ -61,6 +61,7 @@ it also means that `B` conflicts `A` even if not shown in the table).
|
|||
| `ENTRYPOINT` | filename | not set | N/A | set `ENTRYPOINT` to load specific test directly (bypass modular structure, mainly usable for testing). If you want to run more than one test, separate them with space. |
|
||||
| `UPGRADE` | string (`minimal`, `desktop`, `encrypted`, ...) | not set | all except of `LIVE` and `USER_PASSWORD` | when set, do an upgrade test of specified type |
|
||||
| `KICKSTART` | boolean | `false`/not set | all | when specified, do an kickstart installation (you should use `GRUB` variable to specify where kickstart file resides) |
|
||||
| `PARTIAL_KICKSTART` | boolean | `false`/not set | all | when specified, do a partial kickstart installation - the kickstart is expected to omit package set configuration (you should use `GRUB` variable to specify where kickstart file resides) |
|
||||
| `MIRRORLIST_GRAPHICAL` | boolean | `false`/not set | `REPOSITORY_GRAPHICAL` | sets installation source to mirrorlist |
|
||||
| `REPOSITORY_GRAPHICAL` | url to repository (without arch and `/os`, for example `http://dl.fedoraproject.org/pub/fedora/linux/development`) | not set | `MIRRORLIST_GRAPHICAL` | sets installation source to repository url in Anaconda |
|
||||
| `REPOSITORY_VARIATION` | url to repository (without arch and `/os`, for example `http://dl.fedoraproject.org/pub/fedora/linux/development`) | not set | nothing | sets installation source to repository url in GRUB |
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ sub console_login {
|
|||
# otherwise, type the password
|
||||
type_string "$args{password}";
|
||||
if (get_var("SWITCHED_LAYOUT") and $args{user} ne "root") {
|
||||
# see _do_install_and_reboot; when layout is switched
|
||||
# see _do_root_and_user; when layout is switched
|
||||
# user password is doubled to contain both US and native
|
||||
# chars
|
||||
console_switch_layout;
|
||||
|
|
@ -2002,7 +2002,7 @@ sub dm_perform_login {
|
|||
# away
|
||||
wait_still_screen(stilltime => 5, similarity_level => 38);
|
||||
if (get_var("SWITCHED_LAYOUT")) {
|
||||
# see _do_install_and_reboot; when layout is switched
|
||||
# see _do_root_and_user; when layout is switched
|
||||
# user password is doubled to contain both US and native
|
||||
# chars
|
||||
desktop_switch_layout 'ascii';
|
||||
|
|
|
|||
13
main.pm
13
main.pm
|
|
@ -179,8 +179,10 @@ sub load_install_tests() {
|
|||
autotest::loadtest "tests/_check_install_source.pm";
|
||||
}
|
||||
|
||||
## Select package set. Minimal is the default, if 'default' is specified, skip selection.
|
||||
autotest::loadtest "tests/_software_selection.pm";
|
||||
unless (get_var('CANNED') || get_var('LIVE') || get_var('PARTIAL_KICKSTART')) {
|
||||
## Select package set. Minimal is the default, if 'default' is specified, skip selection.
|
||||
autotest::loadtest "tests/_software_selection.pm";
|
||||
}
|
||||
|
||||
## Disk partitioning.
|
||||
# If PARTITIONING is set, we pick the storage test
|
||||
|
|
@ -202,9 +204,10 @@ sub load_install_tests() {
|
|||
autotest::loadtest "tests/disk_guided_encrypted.pm";
|
||||
}
|
||||
|
||||
# Start installation, set user & root passwords, reboot
|
||||
# install and reboot phase is loaded automatically every time (except when KICKSTART is set)
|
||||
autotest::loadtest "tests/_do_install_and_reboot.pm";
|
||||
# Set user & root passwords, start installation, reboot
|
||||
# these are loaded automatically every time (except when (PARTIAL_)KICKSTART is set)
|
||||
autotest::loadtest 'tests/_do_root_and_user.pm' unless (get_var('PARTIAL_KICKSTART'));
|
||||
autotest::loadtest 'tests/_do_install_and_reboot.pm';
|
||||
}
|
||||
|
||||
sub _load_instance {
|
||||
|
|
|
|||
|
|
@ -132,7 +132,6 @@
|
|||
"CANNED": "1",
|
||||
"DEPLOY_UPLOAD_TEST": "install_default_upload",
|
||||
"INSTALL_RETRY": "",
|
||||
"PACKAGE_SET": "default",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
},
|
||||
|
|
@ -144,7 +143,6 @@
|
|||
"HDDSIZEGB": "15",
|
||||
"INSTALL_RETRY": "1",
|
||||
"LIVE": "1",
|
||||
"PACKAGE_SET": "default",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
},
|
||||
|
|
@ -162,7 +160,6 @@
|
|||
"DEPLOY_UPLOAD_TEST": "install_default_upload",
|
||||
"INSTALL_RETRY": "1",
|
||||
"LIVE": "1",
|
||||
"PACKAGE_SET": "default",
|
||||
"TEST_TARGET": "ISO",
|
||||
"USER_LOGIN": "i3-user"
|
||||
}
|
||||
|
|
@ -199,7 +196,6 @@
|
|||
"DESKTOP": "gnome",
|
||||
"HDDSIZEGB": "20",
|
||||
"INSTALL_RETRY": "",
|
||||
"PACKAGE_SET": "default",
|
||||
"RETRY": "2",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
|
|
@ -212,7 +208,6 @@
|
|||
"HDDSIZEGB": "20",
|
||||
"INSTALL_RETRY": "1",
|
||||
"LIVE": "1",
|
||||
"PACKAGE_SET": "default",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
},
|
||||
|
|
@ -245,7 +240,6 @@
|
|||
"DUG_RETRY": "3",
|
||||
"HDDSIZEGB": "15",
|
||||
"LIVE": "1",
|
||||
"PACKAGE_SET": "default",
|
||||
"+QEMURAM": "6144",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
|
|
@ -258,7 +252,6 @@
|
|||
"HDDSIZEGB": "20",
|
||||
"INSTALL_RETRY": "1",
|
||||
"LIVE": "1",
|
||||
"PACKAGE_SET": "default",
|
||||
"+QEMURAM": "6144",
|
||||
"TEST_TARGET": "ISO"
|
||||
}
|
||||
|
|
@ -1839,6 +1832,17 @@
|
|||
"WORKER_CLASS": "tap"
|
||||
}
|
||||
},
|
||||
"install_kickstart_partial": {
|
||||
"profile_groups": {
|
||||
"server-dvd-3arch": 20
|
||||
},
|
||||
"settings": {
|
||||
"GRUB": "inst.ks=https://fedorapeople.org/groups/qa/kickstarts/example-partial.ks",
|
||||
"PARTIAL_KICKSTART": "1",
|
||||
"ROOT_PASSWORD": "fedora",
|
||||
"USER_LOGIN": "false"
|
||||
}
|
||||
},
|
||||
"install_kickstart_user_creation": {
|
||||
"profile_groups": {
|
||||
"server-dvd-3arch": 20
|
||||
|
|
|
|||
|
|
@ -193,13 +193,19 @@ sub run {
|
|||
}
|
||||
}
|
||||
# wait for anaconda to appear
|
||||
unless (check_screen ["anaconda_select_install_lang", "anaconda_webui_wrong_font"], 300) {
|
||||
unless (check_screen ["anaconda_select_install_lang", "anaconda_webui_wrong_font", "anaconda_main_hub"], 300) {
|
||||
# may be hitting https://bugzilla.redhat.com/show_bug.cgi?id=2325780,
|
||||
# try pressing a key
|
||||
send_key "spc";
|
||||
assert_screen ["anaconda_select_install_lang", "anaconda_webui_wrong_font"], 300;
|
||||
assert_screen ["anaconda_select_install_lang", "anaconda_webui_wrong_font", "anaconda_main_hub"], 300;
|
||||
record_soft_failure "boot hung until key pressed - #2325780";
|
||||
}
|
||||
if (match_has_tag 'anaconda_main_hub') {
|
||||
# this is fine - we should skip right to hub
|
||||
return if get_var('PARTIAL_KICKSTART');
|
||||
# this is not fine!
|
||||
die 'Language and layout selection unexpectedly skipped!';
|
||||
}
|
||||
if (match_has_tag 'anaconda_webui_wrong_font') {
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2402533
|
||||
# see if a refresh gives us the right font
|
||||
|
|
|
|||
|
|
@ -4,107 +4,11 @@ use testapi;
|
|||
use anaconda;
|
||||
use utils;
|
||||
|
||||
|
||||
sub _set_root_password {
|
||||
# can also hit a transition animation
|
||||
wait_still_screen 2;
|
||||
my $root_password = get_var("ROOT_PASSWORD", "weakpassword");
|
||||
assert_and_click "anaconda_install_root_password";
|
||||
# we have to click 'enable root account' before typing the
|
||||
#password
|
||||
assert_and_click "anaconda_install_root_password_screen";
|
||||
# wait out animation
|
||||
wait_still_screen 2;
|
||||
desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
|
||||
# these screens seems insanely subject to typing errors, so
|
||||
# type super safely. This doesn't really slow the test down
|
||||
# as we still get done before the install process is complete.
|
||||
type_very_safely $root_password;
|
||||
wait_screen_change { send_key "tab"; };
|
||||
type_very_safely $root_password;
|
||||
# Another screen to test identification on
|
||||
my $identification = get_var('IDENTIFICATION');
|
||||
if ($identification eq 'true') {
|
||||
check_top_bar();
|
||||
# we don't check version or pre-release because here those
|
||||
# texts appear on the banner which makes the needling
|
||||
# complex and fragile (banner is different between variants,
|
||||
# and has a gradient so for RTL languages the background color
|
||||
# differs; pre-release text is also translated)
|
||||
}
|
||||
assert_and_click "anaconda_spoke_done";
|
||||
# exiting this screen can take a while, so check for the hub
|
||||
assert_screen "anaconda_main_hub", 60;
|
||||
}
|
||||
|
||||
sub _set_root_password_webui {
|
||||
my $root_password = get_var("ROOT_PASSWORD", "weakpassword");
|
||||
# hit tab till we can see the button, it may be off screen
|
||||
send_key_until_needlematch("anaconda_webui_allow_root", "tab", 3, 3);
|
||||
# Click the radio button, then get focus and fill the fields.
|
||||
assert_and_click("anaconda_webui_allow_root");
|
||||
sleep(1);
|
||||
type_very_safely($root_password);
|
||||
for (1 .. 2) {
|
||||
send_key("tab");
|
||||
sleep(1);
|
||||
}
|
||||
type_very_safely($root_password);
|
||||
}
|
||||
|
||||
sub _do_root_and_user {
|
||||
# check whether user and root password creation are suppressed,
|
||||
# as they may be. if the 'begin installation' button is present
|
||||
# and active, they must be suppressed. we use assert_screen not
|
||||
# check_screen just to make it faster
|
||||
assert_screen [
|
||||
'anaconda_install_user_creation',
|
||||
'anaconda_webui_no_local_account',
|
||||
'anaconda_webui_begin_installation',
|
||||
'anaconda_main_hub_begin_installation'
|
||||
];
|
||||
if (match_has_tag('anaconda_webui_begin_installation') || match_has_tag('anaconda_main_hub_begin_installation')) {
|
||||
set_var('INSTALLER_NO_ROOT', '1');
|
||||
set_var('INSTALL_NO_USER', '1');
|
||||
}
|
||||
my $nouser = (get_var("USER_LOGIN", '') eq 'false' || get_var("INSTALL_NO_USER"));
|
||||
my $noroot = get_var("INSTALLER_NO_ROOT");
|
||||
return if ($nouser && $noroot);
|
||||
if (get_var("_ANACONDA_WEBUI")) {
|
||||
if ($nouser) {
|
||||
assert_and_click 'anaconda_webui_no_local_account';
|
||||
}
|
||||
else {
|
||||
webui_create_user();
|
||||
}
|
||||
_set_root_password_webui() unless ($noroot);
|
||||
assert_and_click("anaconda_webui_next");
|
||||
}
|
||||
else {
|
||||
_set_root_password() unless ($noroot);
|
||||
# Set user details, unless the test is configured not to create one
|
||||
unless ($nouser) {
|
||||
# Wait out animation
|
||||
wait_still_screen 8;
|
||||
anaconda_create_user();
|
||||
}
|
||||
}
|
||||
# Check username (and hence keyboard layout) if non-English
|
||||
if (get_var('LANGUAGE')) {
|
||||
assert_screen "anaconda_install_user_created";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
my $webui = get_var("_ANACONDA_WEBUI");
|
||||
my $desktop = get_var("DESKTOP");
|
||||
|
||||
# From F31 onwards (after Fedora-Rawhide-20190722.n.1), user and
|
||||
# root password spokes are moved to main hub, so we must do those
|
||||
# before we run the install.
|
||||
_do_root_and_user();
|
||||
# Begin installation
|
||||
# Sometimes, the 'slide in from the top' animation messes with
|
||||
# this - by the time we click the button isn't where it was any
|
||||
|
|
|
|||
104
tests/_do_root_and_user.pm
Normal file
104
tests/_do_root_and_user.pm
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
use base "anacondatest";
|
||||
use strict;
|
||||
use testapi;
|
||||
use anaconda;
|
||||
use utils;
|
||||
|
||||
sub _set_root_password {
|
||||
# can also hit a transition animation
|
||||
wait_still_screen 2;
|
||||
my $root_password = get_var("ROOT_PASSWORD", "weakpassword");
|
||||
assert_and_click "anaconda_install_root_password";
|
||||
# we have to click 'enable root account' before typing the
|
||||
#password
|
||||
assert_and_click "anaconda_install_root_password_screen";
|
||||
# wait out animation
|
||||
wait_still_screen 2;
|
||||
desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
|
||||
# these screens seems insanely subject to typing errors, so
|
||||
# type super safely. This doesn't really slow the test down
|
||||
# as we still get done before the install process is complete.
|
||||
type_very_safely $root_password;
|
||||
wait_screen_change { send_key "tab"; };
|
||||
type_very_safely $root_password;
|
||||
# Another screen to test identification on
|
||||
my $identification = get_var('IDENTIFICATION');
|
||||
if ($identification eq 'true') {
|
||||
check_top_bar();
|
||||
# we don't check version or pre-release because here those
|
||||
# texts appear on the banner which makes the needling
|
||||
# complex and fragile (banner is different between variants,
|
||||
# and has a gradient so for RTL languages the background color
|
||||
# differs; pre-release text is also translated)
|
||||
}
|
||||
assert_and_click "anaconda_spoke_done";
|
||||
# exiting this screen can take a while, so check for the hub
|
||||
assert_screen "anaconda_main_hub", 60;
|
||||
}
|
||||
|
||||
sub _set_root_password_webui {
|
||||
my $root_password = get_var("ROOT_PASSWORD", "weakpassword");
|
||||
# hit tab till we can see the button, it may be off screen
|
||||
send_key_until_needlematch("anaconda_webui_allow_root", "tab", 3, 3);
|
||||
# Click the radio button, then get focus and fill the fields.
|
||||
assert_and_click("anaconda_webui_allow_root");
|
||||
sleep(1);
|
||||
type_very_safely($root_password);
|
||||
for (1 .. 2) {
|
||||
send_key("tab");
|
||||
sleep(1);
|
||||
}
|
||||
type_very_safely($root_password);
|
||||
}
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
# check whether user and root password creation are suppressed,
|
||||
# as they may be. if the 'begin installation' button is present
|
||||
# and active, they must be suppressed. we use assert_screen not
|
||||
# check_screen just to make it faster
|
||||
assert_screen [
|
||||
'anaconda_install_user_creation',
|
||||
'anaconda_webui_no_local_account',
|
||||
'anaconda_webui_begin_installation',
|
||||
'anaconda_main_hub_begin_installation'
|
||||
];
|
||||
if (match_has_tag('anaconda_webui_begin_installation') || match_has_tag('anaconda_main_hub_begin_installation')) {
|
||||
set_var('INSTALLER_NO_ROOT', '1');
|
||||
set_var('INSTALL_NO_USER', '1');
|
||||
}
|
||||
my $nouser = (get_var("USER_LOGIN", '') eq 'false' || get_var("INSTALL_NO_USER"));
|
||||
my $noroot = get_var("INSTALLER_NO_ROOT");
|
||||
return if ($nouser && $noroot);
|
||||
if (get_var("_ANACONDA_WEBUI")) {
|
||||
if ($nouser) {
|
||||
assert_and_click 'anaconda_webui_no_local_account';
|
||||
}
|
||||
else {
|
||||
webui_create_user();
|
||||
}
|
||||
_set_root_password_webui() unless ($noroot);
|
||||
assert_and_click("anaconda_webui_next");
|
||||
}
|
||||
else {
|
||||
_set_root_password() unless ($noroot);
|
||||
# Set user details, unless the test is configured not to create one
|
||||
unless ($nouser) {
|
||||
# Wait out animation
|
||||
wait_still_screen 8;
|
||||
anaconda_create_user();
|
||||
}
|
||||
}
|
||||
# Check username (and hence keyboard layout) if non-English
|
||||
if (get_var('LANGUAGE')) {
|
||||
assert_screen "anaconda_install_user_created";
|
||||
}
|
||||
}
|
||||
|
||||
sub test_flags {
|
||||
return {fatal => 1};
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
# vim: set sw=4 et:
|
||||
|
|
@ -7,7 +7,7 @@ use utils;
|
|||
sub _enter_password {
|
||||
my $password = shift;
|
||||
if (get_var("SWITCHED_LAYOUT")) {
|
||||
# see _do_install_and_reboot; when layout is switched
|
||||
# see _do_root_and_user; when layout is switched
|
||||
# user password is doubled to contain both US and native
|
||||
# chars
|
||||
desktop_switch_layout 'ascii';
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ sub run {
|
|||
# but verify correct default in some cases
|
||||
my $packageset = get_var('PACKAGE_SET', 'minimal');
|
||||
if ($packageset eq 'default') {
|
||||
# we can't or don't want to check the selected package set in this case
|
||||
return if (get_var('CANNED') || get_var('LIVE') || get_var('MEMCHECK'));
|
||||
$self->root_console;
|
||||
my $env = 'custom-environment';
|
||||
if (get_var('SUBVARIANT') eq 'Server') {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue