mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-16 11:43:08 +00:00
5f702b0be8
This is a surprisingly large change as we want to go back to the console we were previously on after doing it. To do that we need to know what console we were on, and to know *that*, we need to port everything that currently uses (ctrl-)alt-fX to switch consoles to use select_console instead. This is primarily intended to make running setup_repos.py faster when it has to download a lot of packages (as typing in hundreds of package names is quite slow). But it actually makes the whole thing faster, even when only downloading one or two packages. Signed-off-by: Adam Williamson <awilliam@redhat.com>
116 lines
4.3 KiB
Perl
116 lines
4.3 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
|
|
sub _enter_password {
|
|
my $password = shift;
|
|
if (get_var("SWITCHED_LAYOUT")) {
|
|
# see _do_install_and_reboot; when layout is switched
|
|
# user password is doubled to contain both US and native
|
|
# chars
|
|
desktop_switch_layout 'ascii';
|
|
type_very_safely $password;
|
|
desktop_switch_layout 'native';
|
|
type_very_safely $password;
|
|
}
|
|
else {
|
|
type_very_safely $password;
|
|
}
|
|
send_key "ret";
|
|
}
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
my $password = get_var("USER_PASSWORD", "weakpassword");
|
|
my $version = get_var("VERSION");
|
|
my $desktop = get_var("DESKTOP");
|
|
# If KICKSTART is set, then the wait_time needs to consider the
|
|
# install time. if UPGRADE, we have to wait for the entire upgrade
|
|
# unless ENCRYPT_PASSWORD is set (in which case the postinstall
|
|
# test does the waiting)
|
|
my $wait_time = 300;
|
|
$wait_time = 1800 if (get_var("KICKSTART"));
|
|
$wait_time = 6000 if (get_var("UPGRADE") && !get_var("ENCRYPT_PASSWORD"));
|
|
|
|
# handle bootloader, if requested
|
|
if (get_var("GRUB_POSTINSTALL")) {
|
|
do_bootloader(postinstall => 1, params => get_var("GRUB_POSTINSTALL"), timeout => $wait_time);
|
|
$wait_time = 300;
|
|
}
|
|
|
|
# Handle pre-login initial setup if we're doing INSTALL_NO_USER
|
|
if (get_var("INSTALL_NO_USER") && !get_var("_SETUP_DONE")) {
|
|
if ($desktop eq 'gnome') {
|
|
gnome_initial_setup(prelogin => 1, timeout => $wait_time);
|
|
}
|
|
else {
|
|
anaconda_create_user(timeout => $wait_time);
|
|
# wait out animation
|
|
wait_still_screen 3;
|
|
assert_and_click "initialsetup_finish_configuration";
|
|
set_var("_SETUP_DONE", 1);
|
|
}
|
|
$wait_time = 300;
|
|
}
|
|
# Wait for the login screen, unless we're doing a GNOME no user
|
|
# install, which transitions straight from g-i-s to logged-in
|
|
# desktop
|
|
unless ($desktop eq 'gnome' && get_var("INSTALL_NO_USER")) {
|
|
boot_to_login_screen(timeout => $wait_time);
|
|
# if USER_LOGIN is set to string 'false', we're done here
|
|
return if (get_var("USER_LOGIN") eq "false");
|
|
|
|
# GDM 3.24.1 dumps a cursor in the middle of the screen here...
|
|
mouse_hide;
|
|
if ($desktop eq 'gnome') {
|
|
# we have to hit enter to get the password dialog, and it
|
|
# doesn't always work for some reason so just try it three
|
|
# times
|
|
send_key_until_needlematch("graphical_login_input", "ret", 3, 5);
|
|
}
|
|
assert_screen "graphical_login_input";
|
|
# seems like we often double-type on aarch64 if we start right
|
|
# away
|
|
wait_still_screen(stilltime => 5, similarity_level => 38);
|
|
_enter_password($password);
|
|
}
|
|
|
|
# Handle the welcome tour, unless _WELCOME_DONE is set (indicating
|
|
# it's been done previously within this test run, e.g. the second
|
|
# time this module runs on the update flow, or earlier in the boot
|
|
# process on the INSTALL_NO_USER flow), or START_AFTER_TEST is set
|
|
# to the same value as DEPLOY_UPLOAD_TEST (in which case it will
|
|
# have been done by the previous test run).
|
|
# the point of the default values here is to make the check fail if
|
|
# neither var is set, without needing an extra condition
|
|
my $sat = get_var("START_AFTER_TEST", "1");
|
|
my $dut = get_var("DEPLOY_UPLOAD_TEST", "2");
|
|
handle_welcome_screen if ($sat ne $dut && !get_var("_WELCOME_DONE"));
|
|
if (get_var("IMAGE_DEPLOY")) {
|
|
# if this was an image deployment, we also need to create
|
|
# root user now, for subsequent tests to work
|
|
select_console "tty3-console";
|
|
console_login(user => get_var("USER_LOGIN", "test"), password => get_var("USER_PASSWORD", "weakpassword"));
|
|
type_string "sudo su\n";
|
|
type_string "$password\n";
|
|
my $root_password = get_var("ROOT_PASSWORD") || "weakpassword";
|
|
assert_script_run "echo 'root:$root_password' | chpasswd";
|
|
desktop_vt;
|
|
}
|
|
|
|
# Move the mouse somewhere it won't highlight the match areas and
|
|
# hopefully won't negatively interact with anything else later
|
|
mouse_set(1023, 384);
|
|
# KDE can take ages to start up
|
|
check_desktop(timeout => 120);
|
|
}
|
|
|
|
sub test_flags {
|
|
return {fatal => 1};
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|