mirror of
https://pagure.io/fedora-qa/os-autoinst-distri-fedora.git
synced 2024-11-04 23:24:21 +00:00
492fcf62e4
Remove a whole chunk of needles that haven't matched for more than 3 months. Also move a few needles to appropriate locations, simplify some code chunks that relied on removed needles (if we're not matching the needles, we don't need those chunks any more), and drop some other no-longer-needed conditionals for older releases. Signed-off-by: Adam Williamson <awilliam@redhat.com>
164 lines
5.2 KiB
Perl
164 lines
5.2 KiB
Perl
use base "anacondatest";
|
|
use strict;
|
|
use testapi;
|
|
use utils;
|
|
use anaconda;
|
|
|
|
|
|
# this enables you to send a command and some post-command wait time
|
|
# in one step and also distinguishes between serial console and normal
|
|
# VNC based console and handles the wait times differently.
|
|
sub console_type_wait {
|
|
my ($string, $wait) = @_;
|
|
$wait ||= 5;
|
|
type_string $string;
|
|
if (testapi::is_serial_terminal) {
|
|
sleep $wait;
|
|
}
|
|
else {
|
|
wait_still_screen $wait;
|
|
}
|
|
}
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
|
|
# First, preset the environment according to the chosen console. This test
|
|
# can run both on a VNC based console, or a serial console.
|
|
if (get_var("SERIAL_CONSOLE")) {
|
|
select_console('virtio-console1');
|
|
unless (testapi::is_serial_terminal) {
|
|
die "The test does not run on a serial console when it should.";
|
|
}
|
|
}
|
|
else {
|
|
assert_screen "anaconda_main_hub_text";
|
|
# IMHO it's better to use sleeps than to have needle for every text screen
|
|
wait_still_screen 5;
|
|
}
|
|
|
|
# prepare for different number of spokes (e. g. as in Atomic DVD)
|
|
my %spoke_number = (
|
|
"language" => 1,
|
|
"timezone" => 2,
|
|
"source" => 3,
|
|
"swselection" => 4,
|
|
"destination" => 5,
|
|
"network" => 6,
|
|
"rootpwd" => 7,
|
|
"user" => 8
|
|
);
|
|
|
|
# The error message that we are going to check for in the text installation
|
|
# must be different for serial console and a VNC terminal emulator.
|
|
my $error = "";
|
|
if (testapi::is_serial_terminal) {
|
|
$error = "unknown error has occured";
|
|
}
|
|
else {
|
|
$error = "anaconda_text_error";
|
|
}
|
|
|
|
# Set timezone
|
|
run_with_error_check(sub {console_type_wait($spoke_number{"timezone"} . "\n")}, $error);
|
|
console_type_wait("1\n"); # Set timezone
|
|
console_type_wait("1\n"); # Europe
|
|
console_type_wait("37\n", 7); # Prague
|
|
|
|
# Select disk
|
|
run_with_error_check(sub {console_type_wait($spoke_number{"destination"} . "\n")}, $error);
|
|
console_type_wait("c\n"); # first disk selected, continue
|
|
console_type_wait("c\n"); # use all space selected, continue
|
|
console_type_wait("c\n", 7); # LVM selected, continue
|
|
|
|
# Set root password
|
|
my $rootpwd = get_var("ROOT_PASSWORD", "weakpassword");
|
|
run_with_error_check(sub {console_type_wait($spoke_number{"rootpwd"} . "\n")}, $error);
|
|
console_type_wait("$rootpwd\n");
|
|
console_type_wait("$rootpwd\n");
|
|
|
|
# Create user
|
|
my $userpwd = get_var("USER_PASSWORD", "weakpassword");
|
|
my $username = get_var("USER_LOGIN", "test");
|
|
run_with_error_check(sub {console_type_wait($spoke_number{"user"} . "\n")}, $error);
|
|
console_type_wait("1\n"); # create new
|
|
console_type_wait("3\n"); # set username
|
|
console_type_wait("$username\n");
|
|
console_type_wait("5\n"); # set password
|
|
console_type_wait("$userpwd\n");
|
|
console_type_wait("$userpwd\n");
|
|
console_type_wait("6\n"); # make him an administrator
|
|
console_type_wait("c\n", 7);
|
|
|
|
my $counter = 0;
|
|
if (testapi::is_serial_terminal) {
|
|
while (wait_serial("[!]", timeout=>5, quiet=>1)) {
|
|
if ($counter > 10) {
|
|
die "There are unfinished spokes in Anaconda";
|
|
}
|
|
sleep 10;
|
|
$counter++;
|
|
console_type_wait("r\n"); # refresh
|
|
}
|
|
}
|
|
else {
|
|
while (check_screen "anaconda_main_hub_text_unfinished", 2) {
|
|
if ($counter > 10) {
|
|
die "There are unfinished spokes in Anaconda";
|
|
}
|
|
sleep 10;
|
|
$counter++;
|
|
console_type_wait("r\n"); # refresh
|
|
}
|
|
}
|
|
|
|
# begin installation
|
|
console_type_wait("b\n");
|
|
|
|
# When simulated crash is planned, then proceed with the crash routines and finish,
|
|
# otherwise proceed normally and do
|
|
if (get_var("CRASH_REPORT")) {
|
|
crash_anaconda_text;
|
|
report_bug_text;
|
|
return;
|
|
}
|
|
|
|
# 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;
|
|
}
|
|
|
|
if (testapi::is_serial_terminal) {
|
|
wait_serial("Installation complete", timeout=>$timeout);
|
|
if (get_var("SERIAL_CONSOLE") && get_var("OFW")) {
|
|
# for some reason the check for a prompt times out here, even
|
|
# though '# ' is clearly in the terminal log; hack it out
|
|
my $origprompt = $testapi::distri->{serial_term_prompt};
|
|
$testapi::distri->{serial_term_prompt} = '';
|
|
$self->root_console();
|
|
# we need to force the system to load a console on both hvc1
|
|
# and hvc2 for ppc64 serial console post-install tests
|
|
assert_script_run 'chroot /mnt/sysimage systemctl enable serial-getty@hvc1';
|
|
assert_script_run 'chroot /mnt/sysimage systemctl enable serial-getty@hvc2';
|
|
$testapi::distri->{serial_term_prompt} = $origprompt;
|
|
# back to anaconda ui
|
|
select_console("virtio-console1");
|
|
}
|
|
}
|
|
else {
|
|
assert_screen "anaconda_install_text_done", $timeout;
|
|
}
|
|
console_type_wait("\n");
|
|
}
|
|
|
|
|
|
sub test_flags {
|
|
return { fatal => 1 };
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|