2015-08-05 06:23:59 +00:00
|
|
|
use base "anacondatest";
|
2015-01-22 12:38:16 +00:00
|
|
|
use strict;
|
|
|
|
use testapi;
|
2017-01-18 07:15:44 +00:00
|
|
|
use utils;
|
2016-09-12 17:24:30 +00:00
|
|
|
|
2019-03-22 12:20:40 +00:00
|
|
|
|
|
|
|
sub enable_abrt_and_quit {
|
|
|
|
# Chroot in the newly installed system
|
|
|
|
script_run "chroot /mnt/sysimage/";
|
|
|
|
# Switch on ABRT systemwide
|
|
|
|
script_run "abrt-auto-reporting 1";
|
|
|
|
# Exit the chroot
|
|
|
|
type_string "exit\n";
|
|
|
|
# Reboot the installed machine
|
|
|
|
type_string "reboot\n";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-01-22 12:38:16 +00:00
|
|
|
sub run {
|
2016-05-20 14:52:55 +00:00
|
|
|
my $self = shift;
|
2015-01-22 12:38:16 +00:00
|
|
|
# Begin installation
|
2018-12-17 22:18:05 +00:00
|
|
|
assert_screen "anaconda_main_hub_begin_installation", 300;
|
2015-07-22 18:26:10 +00:00
|
|
|
# Sometimes, the 'slide in from the top' animation messes with
|
|
|
|
# this - by the time we click the button isn't where it was any
|
2017-07-10 19:24:41 +00:00
|
|
|
# more. So wait for screen to stop moving before we click.
|
2017-04-07 18:28:29 +00:00
|
|
|
wait_still_screen 2;
|
2015-01-22 12:38:16 +00:00
|
|
|
assert_and_click "anaconda_main_hub_begin_installation";
|
2015-01-26 14:58:07 +00:00
|
|
|
|
2018-03-09 04:31:14 +00:00
|
|
|
# Set root password, unless we don't want to or can't
|
2018-09-29 00:46:36 +00:00
|
|
|
# can also hit a transition animation
|
|
|
|
wait_still_screen 2;
|
2015-02-13 15:36:35 +00:00
|
|
|
my $root_password = get_var("ROOT_PASSWORD") || "weakpassword";
|
2018-03-09 04:31:14 +00:00
|
|
|
unless (get_var("INSTALLER_NO_ROOT")) {
|
2018-03-09 02:25:31 +00:00
|
|
|
assert_and_click "anaconda_install_root_password";
|
2018-12-13 23:14:55 +00:00
|
|
|
if (get_var("MEMCHECK")) {
|
|
|
|
# work around https://bugzilla.redhat.com/show_bug.cgi?id=1659266
|
2018-12-13 23:29:35 +00:00
|
|
|
unless (check_screen "anaconda_install_root_password_screen", 30) {
|
2018-12-13 23:14:55 +00:00
|
|
|
record_soft_failure "UI may be frozen due to brc#1659266";
|
|
|
|
assert_screen "anaconda_install_root_password_screen", 300;
|
|
|
|
}
|
2018-12-13 23:23:50 +00:00
|
|
|
}
|
2018-12-13 23:14:55 +00:00
|
|
|
else {
|
|
|
|
assert_screen "anaconda_install_root_password_screen";
|
|
|
|
}
|
2018-03-09 02:25:31 +00:00
|
|
|
# wait out animation
|
|
|
|
wait_still_screen 2;
|
|
|
|
desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
|
|
|
|
if (get_var("IMAGETYPE") eq 'dvd-ostree') {
|
|
|
|
# we can't type SUPER safely for ostree installer tests, as
|
|
|
|
# the install completes quite fast and if we type too slow
|
|
|
|
# the USER CREATION spoke may be blocked
|
|
|
|
type_safely $root_password;
|
|
|
|
wait_screen_change { send_key "tab"; };
|
|
|
|
type_safely $root_password;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
# 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;
|
|
|
|
}
|
|
|
|
assert_and_click "anaconda_spoke_done";
|
type root password faster on ostree installs
Summary:
Since we started using `type_very_safely` for typing the root
password, we starting hitting a race issue. If we complete the
root password spoke so slowly that the software deployment
process completes in the meantime, anaconda will wait until we
complete the spoke then immediately flip to the 'post-install
configuration' step, at which point access to the USER CREATION
spoke is blocked.
We don't hit this case on regular RPM installs or live installs
as the deployment phase still takes a while for both of those,
but we are sometimes hitting it for the Atomic ostree install
image, as the software deployment phase is pretty fast there.
We *could* just not bother creating a user and testing we can
log in as a user for that test, but I don't like that approach,
we *should* be testing that user creation and login works OK
for ostree installs. So instead, let's just type the root
password a bit less safely for ostree installs; this will be
more vulnerable to typing errors but hopefully will avoid the
race problem.
Test Plan:
Run a few Atomic installs, see if they hit the race.
Might need to run other tests at the same time, and you may not
be able to hit it, this is obviously dependent on the I/O of
the worker host...
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1022
2016-10-14 01:39:33 +00:00
|
|
|
}
|
2015-01-22 12:38:16 +00:00
|
|
|
|
2017-04-03 23:23:45 +00:00
|
|
|
# Wait out animation
|
2018-06-11 22:59:44 +00:00
|
|
|
sleep 8;
|
2018-03-09 02:25:31 +00:00
|
|
|
# Set user details, unless the test is configured not to create one
|
2017-04-03 23:23:45 +00:00
|
|
|
anaconda_create_user() unless (get_var("USER_LOGIN") eq 'false' || get_var("INSTALL_NO_USER"));
|
2015-01-22 12:38:16 +00:00
|
|
|
|
2015-09-29 22:52:50 +00:00
|
|
|
# Check username (and hence keyboard layout) if non-English
|
|
|
|
if (get_var('LANGUAGE')) {
|
|
|
|
assert_screen "anaconda_install_user_created";
|
|
|
|
}
|
|
|
|
|
2016-09-12 17:24:30 +00:00
|
|
|
# With the slow typing - especially with SWITCHED_LAYOUT - we
|
|
|
|
# may not complete user creation until anaconda reaches post-install,
|
|
|
|
# which causes a 'Finish configuration' button
|
|
|
|
if (check_screen "anaconda_install_finish_configuration", 5) {
|
|
|
|
assert_and_click "anaconda_install_finish_configuration";
|
|
|
|
}
|
|
|
|
|
2015-11-11 16:48:46 +00:00
|
|
|
# Wait for install to end. Give Rawhide a bit longer, in case
|
|
|
|
# we're on a debug kernel, debug kernel installs are really slow.
|
|
|
|
my $timeout = 1800;
|
|
|
|
if (lc(get_var('VERSION')) eq "rawhide") {
|
|
|
|
$timeout = 2400;
|
|
|
|
}
|
2018-03-09 05:21:23 +00:00
|
|
|
# workstation especially has an unfortunate habit of kicking in
|
|
|
|
# the screensaver during install...
|
|
|
|
my $interval = 60;
|
|
|
|
while ($timeout > 0) {
|
|
|
|
# move the mouse a bit
|
|
|
|
mouse_set 100, 100;
|
|
|
|
mouse_hide;
|
|
|
|
last if (check_screen "anaconda_install_done", $interval);
|
|
|
|
$timeout -= $interval;
|
|
|
|
}
|
2018-06-18 17:59:38 +00:00
|
|
|
assert_screen "anaconda_install_done";
|
2016-05-06 20:15:13 +00:00
|
|
|
# wait for transition to complete so we don't click in the sidebar
|
|
|
|
wait_still_screen 3;
|
2018-06-22 18:56:21 +00:00
|
|
|
# on aarch64, the default console is set by kernel config to the
|
|
|
|
# serial console. we don't want this, it messes up decryption
|
|
|
|
# (as plymouth will expect the passphrase on the serial console,
|
|
|
|
# not the virtual console). Let's go fix this up now.
|
2019-03-29 22:18:17 +00:00
|
|
|
if (get_var("ARCH") eq "aarch64") {
|
|
|
|
$self->root_console();
|
|
|
|
# somehow, by this point, localized keyboard layout has been
|
|
|
|
# loaded for this tty, so for French and Arabic at least we
|
|
|
|
# need to load the 'us' layout again for the next command to
|
|
|
|
# be typed correctly
|
|
|
|
console_loadkeys_us;
|
|
|
|
# stick 'console=tty0' on the end of GRUB_CMDLINE_LINUX in
|
|
|
|
# the grub defaults file, and 'quiet' so we don't get kernel
|
|
|
|
# messages, which screws up some needles. RHBZ#1661288
|
|
|
|
assert_script_run 'sed -i -e "s,\(GRUB_CMDLINE_LINUX.*\)\",\1 console=tty0 quiet\",g" /mnt/sysimage/etc/default/grub';
|
|
|
|
# regenerate the bootloader config
|
|
|
|
assert_script_run "chroot /mnt/sysimage grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg";
|
|
|
|
# let's just reboot from here, seems simplest
|
|
|
|
type_string "reboot\n" unless (get_var("MEMCHECK"));
|
|
|
|
return;
|
|
|
|
}
|
2017-01-16 17:30:14 +00:00
|
|
|
# for the memory check test, we *don't* want to leave
|
|
|
|
unless (get_var("MEMCHECK")) {
|
2019-03-22 12:20:40 +00:00
|
|
|
# If the variable for system-wide ABRT is set to system, switch
|
|
|
|
# the system usage of ABRT on, before rebooting the installation,
|
|
|
|
# so that the VM can start with the new settings.
|
|
|
|
if (get_var("ABRT") eq "system" && !get_var("LIVE")) {
|
|
|
|
$self->root_console(timeout=>30);
|
|
|
|
enable_abrt_and_quit();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
assert_and_click "anaconda_install_done";
|
|
|
|
}
|
|
|
|
|
2017-01-16 17:30:14 +00:00
|
|
|
if (get_var('LIVE')) {
|
|
|
|
# reboot from a console, it's more reliable than the desktop
|
2018-10-06 15:44:34 +00:00
|
|
|
# runners. As of 2018-10 switching to console after liveinst
|
|
|
|
# seems to take a long time, so use a longer timeout here
|
|
|
|
$self->root_console(timeout=>30);
|
2018-03-09 04:31:14 +00:00
|
|
|
# if we didn't set a root password during install, set it
|
|
|
|
# now...this is kinda icky, but I don't see a great option
|
|
|
|
if (get_var("INSTALLER_NO_ROOT")) {
|
2018-03-10 01:06:01 +00:00
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1553957
|
|
|
|
assert_script_run "setenforce 0";
|
2018-03-10 00:25:58 +00:00
|
|
|
assert_script_run "echo 'root:$root_password' | chpasswd -R /mnt/sysimage";
|
2018-03-09 04:31:14 +00:00
|
|
|
}
|
2019-03-22 12:20:40 +00:00
|
|
|
if (get_var("ABRT") eq "system") {
|
|
|
|
enable_abrt_and_quit();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
type_string "reboot\n";
|
|
|
|
}
|
2017-01-16 17:30:14 +00:00
|
|
|
}
|
2015-03-18 21:28:03 +00:00
|
|
|
}
|
2015-01-22 12:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub test_flags {
|
2015-01-28 12:42:34 +00:00
|
|
|
return { fatal => 1 };
|
2015-01-22 12:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
# vim: set sw=4 et:
|