mirror of
https://github.com/rocky-linux/os-autoinst-distri-rocky.git
synced 2024-12-13 14:53:10 +00:00
Enable aarch64 disk image testing, related fixes
This sets us up to test the release-blocking aarch64 disk images (Minimal, Server and Workstation). It also allows for testing armhfp disk images on aarch64 worker hosts (though my testing of that isn't going too well so far), and fixes the initial-setup handling for a change upstream ('use password' is now the default so we don't need to choose it). We rewire disk image deployment test loading to work through the generic loader code rather than using ENTRYPOINT, as it allows us to more gracefully handle graphical (Workstation) vs. console (Server, Minimal), moving the code for handling console initial-setup to a helper function just like the code for gnome-initial-setup and having _console_ wait_login call it when appropriate. We also tweak desktop_vt a bit because now we need to switch from a console running as test to a desktop, which breaks the assumption that the highest numbered session of user test is the desktop... Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
parent
f51a804357
commit
c7a1b94c84
@ -211,7 +211,7 @@ def generate_job_templates(products, profiles, testsuites):
|
||||
jobtemplate['group_name'] = "Fedora PowerPC Updates"
|
||||
else:
|
||||
jobtemplate['group_name'] = "Fedora PowerPC"
|
||||
elif jobtemplate['machine_name'] == 'aarch64':
|
||||
elif jobtemplate['machine_name'] in ('aarch64', 'ARM'):
|
||||
if 'updates' in product['flavor']:
|
||||
jobtemplate['group_name'] = "Fedora AArch64 Updates"
|
||||
else:
|
||||
|
68
lib/utils.pm
68
lib/utils.pm
@ -7,7 +7,7 @@ use Exporter;
|
||||
|
||||
use lockapi;
|
||||
use testapi;
|
||||
our @EXPORT = qw/run_with_error_check type_safely type_very_safely desktop_vt boot_to_login_screen console_login console_switch_layout desktop_switch_layout console_loadkeys_us do_bootloader boot_decrypt check_release menu_launch_type repo_setup setup_workaround_repo cleanup_workaround_repo gnome_initial_setup anaconda_create_user check_desktop download_modularity_tests quit_firefox advisory_get_installed_packages advisory_check_nonmatching_packages start_with_launcher quit_with_shortcut lo_dismiss_tip disable_firefox_studies select_rescue_mode copy_devcdrom_as_isofile bypass_1691487 get_release_number check_left_bar check_top_bar check_prerelease check_version spell_version_number _assert_and_click is_branched rec_log click_unwanted_notifications repos_mirrorlist register_application get_registered_applications solidify_wallpaper/;
|
||||
our @EXPORT = qw/run_with_error_check type_safely type_very_safely desktop_vt boot_to_login_screen console_login console_switch_layout desktop_switch_layout console_loadkeys_us do_bootloader boot_decrypt check_release menu_launch_type repo_setup setup_workaround_repo cleanup_workaround_repo console_initial_setup gnome_initial_setup anaconda_create_user check_desktop download_modularity_tests quit_firefox advisory_get_installed_packages advisory_check_nonmatching_packages start_with_launcher quit_with_shortcut lo_dismiss_tip disable_firefox_studies select_rescue_mode copy_devcdrom_as_isofile bypass_1691487 get_release_number check_left_bar check_top_bar check_prerelease check_version spell_version_number _assert_and_click is_branched rec_log click_unwanted_notifications repos_mirrorlist register_application get_registered_applications solidify_wallpaper/;
|
||||
|
||||
# We introduce this global variable to hold the list of applications that have
|
||||
# registered during the apps_startstop_test when they have sucessfully run.
|
||||
@ -66,11 +66,15 @@ sub get_release_number {
|
||||
# at a root console
|
||||
sub desktop_vt {
|
||||
# use loginctl or ps to find the tty of test's session (loginctl)
|
||||
# or Xwayland or Xorg (ps); as of 2019-09 on F31 update tests
|
||||
# ps -C is giving 'tty?', so adding loginctl works around that
|
||||
# or gnome-session, Xwayland or Xorg (ps); as of 2019-09 we often
|
||||
# get tty? for Xwayland and Xorg processes, so using loginctl can
|
||||
# help
|
||||
my $xout;
|
||||
# don't fail test if we don't find any process, just guess tty1
|
||||
eval { $xout = script_output ' loginctl | grep test; ps -C Xwayland,Xorg -o tty --no-headers'; };
|
||||
# don't fail test if we don't find any process, just guess tty1.
|
||||
# os-autoinst calls the script with 'bash -e' which causes it to
|
||||
# stop as soon as any command fails, so we use ||: to make the
|
||||
# first grep return 0 even if it matches nothing
|
||||
eval { $xout = script_output ' loginctl | grep test ||:; ps -e | egrep "(gnome-session|Xwayland|Xorg)" | grep -o tty[0-9]' };
|
||||
my $tty = 1; # default
|
||||
while ($xout =~ /tty(\d)/g) {
|
||||
$tty = $1; # most recent match is probably best
|
||||
@ -596,6 +600,60 @@ sub repo_setup {
|
||||
assert_script_run "rm -f /etc/yum.repos.d/fedora-cisco-openh264.repo";
|
||||
}
|
||||
|
||||
sub console_initial_setup {
|
||||
# Handle console initial-setup. Currently used only for ARM disk
|
||||
# image tests.
|
||||
assert_screen "console_initial_setup", 500;
|
||||
# IMHO it's better to use sleeps than to have needle for every text screen
|
||||
wait_still_screen 5;
|
||||
|
||||
# Set timezone
|
||||
type_string "2\n";
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # Set timezone
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # Europe
|
||||
wait_still_screen 5;
|
||||
type_string "37\n"; # Prague
|
||||
wait_still_screen 7;
|
||||
|
||||
# Set root password
|
||||
type_string "4\n";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("ROOT_PASSWORD") || "weakpassword";
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("ROOT_PASSWORD") || "weakpassword";
|
||||
send_key "ret";
|
||||
wait_still_screen 7;
|
||||
|
||||
# Create user
|
||||
type_string "5\n";
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # create new
|
||||
wait_still_screen 5;
|
||||
type_string "3\n"; # set username
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_LOGIN", "test");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string "5\n"; # set password
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_PASSWORD", "weakpassword");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_PASSWORD", "weakpassword");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string "6\n"; # make him an administrator
|
||||
wait_still_screen 5;
|
||||
type_string "c\n";
|
||||
wait_still_screen 7;
|
||||
|
||||
assert_screen "console_initial_setup_done", 30;
|
||||
type_string "c\n"; # continue
|
||||
}
|
||||
|
||||
sub gnome_initial_setup {
|
||||
# Handle gnome-initial-setup, with variations for the pre-login
|
||||
# mode (when no user was created during install) and post-login
|
||||
|
7
main.pm
7
main.pm
@ -365,10 +365,11 @@ if (get_var("ENTRYPOINT")) {
|
||||
elsif (get_var("UPGRADE")) {
|
||||
load_upgrade_tests;
|
||||
}
|
||||
elsif ((!get_var("START_AFTER_TEST") && !get_var("BOOTFROM")) || get_var("INSTALL")) {
|
||||
elsif ((!get_var("START_AFTER_TEST") && !get_var("BOOTFROM") && !get_var("IMAGE_DEPLOY")) || get_var("INSTALL")) {
|
||||
# for now we can assume START_AFTER_TEST and BOOTFROM mean the
|
||||
# test picks up after an install, so we skip to post-install,
|
||||
# unless the override INSTALL var is set
|
||||
# test picks up after an install, and IMAGE_DEPLOY means we're
|
||||
# deploying a disk image (no installer) so in those cases we skip
|
||||
# to post-install, unless the override INSTALL var is set
|
||||
|
||||
if (get_var("PREINSTALL")) {
|
||||
# specified module supposed to first boot to rescue mode
|
||||
|
@ -24,8 +24,8 @@
|
||||
"QEMU_NO_KVM": "1",
|
||||
"QEMU_VIRTIO_RNG": "1",
|
||||
"SERIALDEV": "ttyAMA0",
|
||||
"TIMEOUT_SCALE": "5",
|
||||
"WORKER_CLASS": "qemu_x86_64"
|
||||
"TIMEOUT_SCALE": "1.5",
|
||||
"WORKER_CLASS": "qemu_aarch64"
|
||||
}
|
||||
},
|
||||
"aarch64": {
|
||||
@ -179,11 +179,21 @@
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-Minimal-raw_xz-raw.xz-aarch64-*": {
|
||||
"arch": "aarch64",
|
||||
"distri": "fedora",
|
||||
"flavor": "Minimal-raw_xz-raw.xz",
|
||||
"settings": {
|
||||
"TEST_TARGET": "HDD_2"
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*": {
|
||||
"arch": "arm",
|
||||
"distri": "fedora",
|
||||
"flavor": "Minimal-raw_xz-raw.xz",
|
||||
"settings": {
|
||||
"APPEND": "rw root=LABEL=_/ rootwait console=ttyAMA0 console=tty0 consoleblank=0",
|
||||
"TEST_TARGET": "HDD_2"
|
||||
},
|
||||
"version": "*"
|
||||
@ -243,6 +253,15 @@
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-Server-raw_xz-raw.xz-aarch64-*": {
|
||||
"arch": "aarch64",
|
||||
"distri": "fedora",
|
||||
"flavor": "Server-raw_xz-raw.xz",
|
||||
"settings": {
|
||||
"TEST_TARGET": "HDD_2"
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-Silverblue-dvd_ostree-iso-ppc64le-*": {
|
||||
"arch": "ppc64le",
|
||||
"distri": "fedora",
|
||||
@ -293,6 +312,16 @@
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-Workstation-raw_xz-raw.xz-aarch64-*": {
|
||||
"arch": "aarch64",
|
||||
"distri": "fedora",
|
||||
"flavor": "Workstation-raw_xz-raw.xz",
|
||||
"settings": {
|
||||
"DESKTOP": "gnome",
|
||||
"TEST_TARGET": "HDD_2"
|
||||
},
|
||||
"version": "*"
|
||||
},
|
||||
"fedora-universal-aarch64-*": {
|
||||
"arch": "aarch64",
|
||||
"distri": "fedora",
|
||||
@ -370,6 +399,10 @@
|
||||
"machine": "uefi",
|
||||
"product": "fedora-KDE-live-iso-x86_64-*"
|
||||
},
|
||||
"fedora-Minimal-raw_xz-raw.xz-aarch64-*-aarch64": {
|
||||
"machine": "aarch64",
|
||||
"product": "fedora-Minimal-raw_xz-raw.xz-aarch64-*"
|
||||
},
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*-ARM": {
|
||||
"machine": "ARM",
|
||||
"product": "fedora-Minimal-raw_xz-raw.xz-arm-*"
|
||||
@ -406,6 +439,10 @@
|
||||
"machine": "uefi",
|
||||
"product": "fedora-Server-dvd-iso-x86_64-*"
|
||||
},
|
||||
"fedora-Server-raw_xz-raw.xz-aarch64-*-aarch64": {
|
||||
"machine": "aarch64",
|
||||
"product": "fedora-Server-raw_xz-raw.xz-aarch64-*"
|
||||
},
|
||||
"fedora-Silverblue-dvd_ostree-iso-ppc64le-*-ppc64le": {
|
||||
"machine": "ppc64le",
|
||||
"product": "fedora-Silverblue-dvd_ostree-iso-ppc64le-*"
|
||||
@ -430,6 +467,10 @@
|
||||
"machine": "uefi",
|
||||
"product": "fedora-Workstation-live-iso-x86_64-*"
|
||||
},
|
||||
"fedora-Workstation-raw_xz-raw.xz-aarch64-*-aarch64": {
|
||||
"machine": "aarch64",
|
||||
"product": "fedora-Workstation-raw_xz-raw.xz-aarch64-*"
|
||||
},
|
||||
"fedora-universal-aarch64-*-aarch64": {
|
||||
"machine": "aarch64",
|
||||
"product": "fedora-universal-aarch64-*"
|
||||
@ -580,10 +621,12 @@
|
||||
},
|
||||
"base_services_start_arm": {
|
||||
"profiles": {
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*-ARM": 42
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*-ARM": 42,
|
||||
"fedora-Minimal-raw_xz-raw.xz-aarch64-*-aarch64": 42,
|
||||
"fedora-Server-raw_xz-raw.xz-aarch64-*-aarch64": 42,
|
||||
"fedora-Workstation-raw_xz-raw.xz-aarch64-*-aarch64": 42
|
||||
},
|
||||
"settings": {
|
||||
"APPEND": "rw root=LABEL=_/ rootwait console=ttyAMA0 console=tty0 consoleblank=0",
|
||||
"HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2",
|
||||
"NUMDISKS": "1",
|
||||
"POSTINSTALL": "base_services_start",
|
||||
@ -843,12 +886,15 @@
|
||||
},
|
||||
"install_arm_image_deployment_upload": {
|
||||
"profiles": {
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*-ARM": 12
|
||||
"fedora-Minimal-raw_xz-raw.xz-arm-*-ARM": 12,
|
||||
"fedora-Minimal-raw_xz-raw.xz-aarch64-*-aarch64": 12,
|
||||
"fedora-Server-raw_xz-raw.xz-aarch64-*-aarch64": 12,
|
||||
"fedora-Workstation-raw_xz-raw.xz-aarch64-*-aarch64": 12
|
||||
},
|
||||
"settings": {
|
||||
"APPEND": "rw root=LABEL=_/ rootwait console=ttyAMA0 console=tty0 consoleblank=0",
|
||||
"ENTRYPOINT": "install_arm_image_deployment _console_shutdown",
|
||||
"HDD_1": "%HDD_2%",
|
||||
"IMAGE_DEPLOY": "1",
|
||||
"INSTALL_NO_USER": "1",
|
||||
"NUMDISKS": "1",
|
||||
"STORE_HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2"
|
||||
}
|
||||
|
@ -15,15 +15,9 @@ sub run {
|
||||
$wait_time = 240;
|
||||
}
|
||||
|
||||
# handle initial-setup, if we're expecting it (IoT < F32 install test)
|
||||
my $testname = get_var("TEST");
|
||||
my $subvariant = get_var("SUBVARIANT");
|
||||
my $version = get_release_number;
|
||||
if ($subvariant eq "IoT" && $version < 32 && index($testname, 'install') != -1) {
|
||||
assert_screen "console_initial_setup", $wait_time;
|
||||
type_string "q\n";
|
||||
type_string "yes\n";
|
||||
$wait_time = 180;
|
||||
# handle initial-setup, if we're expecting it (ARM disk image)
|
||||
if (get_var("INSTALL_NO_USER")) {
|
||||
console_initial_setup;
|
||||
}
|
||||
|
||||
# Wait for the text login
|
||||
|
@ -5,6 +5,7 @@ use utils;
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
my $password = get_var("USER_PASSWORD", "weakpassword");
|
||||
my $version = get_var("VERSION");
|
||||
# If KICKSTART is set, then the wait_time needs to consider the
|
||||
# install time. if UPGRADE, we have to wait for the entire upgrade
|
||||
@ -49,7 +50,6 @@ sub run {
|
||||
send_key "ret";
|
||||
}
|
||||
assert_screen "graphical_login_input";
|
||||
my $password = get_var("USER_PASSWORD", "weakpassword");
|
||||
if (get_var("SWITCHED_LAYOUT")) {
|
||||
# see _do_install_and_reboot; when layout is switched
|
||||
# user password is doubled to contain both US and native
|
||||
@ -86,6 +86,17 @@ sub run {
|
||||
else {
|
||||
record_soft_failure "'getting started' missing (probably BGO#790811)";
|
||||
}
|
||||
# if this was an image deployment, we also need to create
|
||||
# root user now, for subsequent tests to work
|
||||
if (get_var("IMAGE_DEPLOY")) {
|
||||
send_key "ctrl-alt-f3";
|
||||
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
|
||||
|
@ -1,72 +0,0 @@
|
||||
use base "installedtest";
|
||||
use strict;
|
||||
use testapi;
|
||||
use utils;
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
assert_screen "console_initial_setup", 500;
|
||||
# IMHO it's better to use sleeps than to have needle for every text screen
|
||||
wait_still_screen 5;
|
||||
|
||||
# Set timezone
|
||||
type_string "2\n";
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # Set timezone
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # Europe
|
||||
wait_still_screen 5;
|
||||
type_string "37\n"; # Prague
|
||||
wait_still_screen 7;
|
||||
|
||||
# Set root password
|
||||
type_string "4\n";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("ROOT_PASSWORD") || "weakpassword";
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("ROOT_PASSWORD") || "weakpassword";
|
||||
send_key "ret";
|
||||
wait_still_screen 7;
|
||||
|
||||
# Create user
|
||||
type_string "5\n";
|
||||
wait_still_screen 5;
|
||||
type_string "1\n"; # create new
|
||||
wait_still_screen 5;
|
||||
type_string "3\n"; # set username
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_LOGIN", "test");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string "4\n"; # use password
|
||||
wait_still_screen 5;
|
||||
type_string "5\n"; # set password
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_PASSWORD", "weakpassword");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string get_var("USER_PASSWORD", "weakpassword");
|
||||
send_key "ret";
|
||||
wait_still_screen 5;
|
||||
type_string "6\n"; # make him an administrator
|
||||
wait_still_screen 5;
|
||||
type_string "c\n";
|
||||
wait_still_screen 7;
|
||||
|
||||
assert_screen "console_initial_setup_done", 30;
|
||||
type_string "c\n"; # continue
|
||||
assert_screen "text_console_login", 60;
|
||||
|
||||
# Try to log in as an user
|
||||
console_login(user=>get_var("USER_LOGIN", "test"), password=>get_var("USER_PASSWORD", "weakpassword"));
|
||||
}
|
||||
|
||||
|
||||
sub test_flags {
|
||||
return { fatal => 1 };
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
# vim: set sw=4 et:
|
Loading…
Reference in New Issue
Block a user