2015-08-06 09:01:41 +00:00
|
|
|
package anacondatest;
|
create fedora base class, factor out console login
Summary:
Root console in anaconda got broken by RHBZ #1222413 - no
shell on tty2. Decided to clean up console use in general as
part of fixing it.
This creates a class 'fedorabase' and has 'anacondalog' and
'fedoralog' both inherit from it. boot_to_login_screen is
moved there (as it seems appropriate) and it has a new
method, console_login, which basically handles 'get me a
shell on a console': if we're already at one it returns,
if not it'll type the user name and the password *if
necessary* (sometimes it's not) and return once it sees a
prompt. It takes a hash of named parameters for user,
password and 'check', which is whether it should die if it
fails to reach a console or not (some users don't want it
to).
anacondalog and fedoralog both get 'root_console' methods
which do something appropriate and then call
console_login; both have a hash of named parameters,
anacondalog's version only bothers with 'check', while
fedoralog's also accepts 'tty' to pick the tty to use.
This also adjusts all things which try to get to a console
prompt to use either root_console or console_login as
appropriate.
It also tweaks the needle tags a bit, drops some unneeded
needles, and adds a new 'user console prompt' needle; we
really just need two versions of the root prompt needle
and two of the user prompt needle (one for <F23, one for
F23+ - the console font changed in F23, and the @ character
at least doesn't match between the two). I think we still
need the <F23 case for upgrade tests, for now.
Test Plan:
Do a full test run and see that more tests
succeed. I've done a run on happyassassin with a hack to
workaround the SELinux issue for interactive installs,
and the results look good. I also fiddled about a bit to
test some different cases, like forcing a failure in a
live test to test post_fail_hook (and hence root_console)
in that scenario, and forcing failures after some console
commands had been run to check that it DTRT when we've
already reached a console, etc.
Reviewers: jskladan, garretraziel
Reviewed By: jskladan, garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D462
2015-07-22 18:24:40 +00:00
|
|
|
use base 'fedorabase';
|
2015-02-13 14:08:29 +00:00
|
|
|
|
2015-08-05 06:23:59 +00:00
|
|
|
# base class for all Anaconda (installation) tests
|
|
|
|
|
|
|
|
# should be used in tests where Anaconda is running - when it makes sense
|
|
|
|
# to upload Anaconda logs when something fails
|
|
|
|
|
2015-02-13 14:08:29 +00:00
|
|
|
use testapi;
|
2016-09-12 17:24:30 +00:00
|
|
|
use main_common;
|
2015-02-13 14:08:29 +00:00
|
|
|
|
|
|
|
sub post_fail_hook {
|
|
|
|
my $self = shift;
|
2015-04-03 11:42:59 +00:00
|
|
|
|
anaconda crash reporting: update needles, click Report again
Summary:
First off, this revises the anaconda crash handling needles a
bit. We ditch gtk3195 and update anaconda_error to reflect
current F24/Rawhide. We keep the old anaconda_error around for
now as anaconda_error-23, to handle crashes in the F23 two-week
Atomic nightlies. We also add an 'early' variant, which is for
when (I think) the installer crashes very early, before it's
loaded in GTK+ settings; when that happens, the dialog uses a
different font. The screenshot comes from a recent Rawhide test
that crashed.
We also restore the anaconda `post_fail_hook` code to click
the Report button when a crash happens. This was erroneously
removed in D637. Before the Report button is clicked, the
`anaconda-tb` file exists but the libreport stuff in `/var/tmp`
does not. By removing this, we lost the libreport bits from
the uploaded files, which makes it harder to report crashes. So
let's add it back.
Finally we fix the actual tarring and uploading of `/var/tmp`;
also in D637 this got broken because it was being tarred up in
whatever directory the commands happened to be running in, but
we were still trying to upload it from `/var/tmp`.
https://openqa.stg.fedoraproject.org/tests/8444 was run with
these changes, and has `/var/tmp` correctly uploaded.
Test Plan:
Run some test that crashes, make sure the crash
handling all works correctly.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D768
2016-03-08 16:10:51 +00:00
|
|
|
# if error dialog is shown, click "report" - it then creates directory structure for ABRT
|
2015-04-03 11:42:59 +00:00
|
|
|
my $has_traceback = 0;
|
|
|
|
if (check_screen "anaconda_error", 10) {
|
anaconda crash reporting: update needles, click Report again
Summary:
First off, this revises the anaconda crash handling needles a
bit. We ditch gtk3195 and update anaconda_error to reflect
current F24/Rawhide. We keep the old anaconda_error around for
now as anaconda_error-23, to handle crashes in the F23 two-week
Atomic nightlies. We also add an 'early' variant, which is for
when (I think) the installer crashes very early, before it's
loaded in GTK+ settings; when that happens, the dialog uses a
different font. The screenshot comes from a recent Rawhide test
that crashed.
We also restore the anaconda `post_fail_hook` code to click
the Report button when a crash happens. This was erroneously
removed in D637. Before the Report button is clicked, the
`anaconda-tb` file exists but the libreport stuff in `/var/tmp`
does not. By removing this, we lost the libreport bits from
the uploaded files, which makes it harder to report crashes. So
let's add it back.
Finally we fix the actual tarring and uploading of `/var/tmp`;
also in D637 this got broken because it was being tarred up in
whatever directory the commands happened to be running in, but
we were still trying to upload it from `/var/tmp`.
https://openqa.stg.fedoraproject.org/tests/8444 was run with
these changes, and has `/var/tmp` correctly uploaded.
Test Plan:
Run some test that crashes, make sure the crash
handling all works correctly.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D768
2016-03-08 16:10:51 +00:00
|
|
|
assert_and_click "anaconda_error_report";
|
2015-04-03 11:42:59 +00:00
|
|
|
$has_traceback = 1;
|
2016-09-07 08:34:54 +00:00
|
|
|
} elsif (check_screen "anaconda_text_error", 10) { # also for text install
|
|
|
|
type_string "1\n";
|
|
|
|
$has_traceback = 1;
|
2015-04-03 11:42:59 +00:00
|
|
|
}
|
|
|
|
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
save_screenshot;
|
|
|
|
$self->root_console();
|
|
|
|
upload_logs "/tmp/X.log", failok=>1;
|
|
|
|
upload_logs "/tmp/anaconda.log", failok=>1;
|
|
|
|
upload_logs "/tmp/packaging.log", failok=>1;
|
|
|
|
upload_logs "/tmp/storage.log", failok=>1;
|
|
|
|
upload_logs "/tmp/syslog", failok=>1;
|
|
|
|
upload_logs "/tmp/program.log", failok=>1;
|
|
|
|
upload_logs "/tmp/dnf.log", failok=>1;
|
|
|
|
upload_logs "/tmp/dnf.librepo.log", failok=>1;
|
|
|
|
upload_logs "/tmp/dnf.rpm.log", failok=>1;
|
2015-02-19 14:40:33 +00:00
|
|
|
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
if ($has_traceback) {
|
|
|
|
# Upload Anaconda traceback logs
|
2016-10-31 18:41:10 +00:00
|
|
|
script_run "tar czf /tmp/anaconda_tb.tar.gz /tmp/anaconda-tb-*";
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
upload_logs "/tmp/anaconda_tb.tar.gz";
|
|
|
|
}
|
2015-02-19 15:55:29 +00:00
|
|
|
|
2016-10-31 18:41:10 +00:00
|
|
|
# Upload all ABRT logs (if there are any)
|
|
|
|
unless (script_run 'test -n "$(ls -A /var/tmp)" && tar czf /var/tmp/var_tmp.tar.gz /var/tmp') {
|
|
|
|
upload_logs "/var/tmp/var_tmp.tar.gz";
|
|
|
|
}
|
2015-11-04 13:38:36 +00:00
|
|
|
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
# Upload /var/log
|
2016-10-31 18:41:10 +00:00
|
|
|
unless (script_run "tar czf /tmp/var_log.tar.gz /var/log") {
|
|
|
|
upload_logs "/tmp/var_log.tar.gz";
|
|
|
|
}
|
2015-12-09 16:44:52 +00:00
|
|
|
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
# Upload anaconda core dump, if there is one
|
2016-10-31 18:41:10 +00:00
|
|
|
unless (script_run "ls /tmp/anaconda.core.* && tar czf /tmp/anaconda.core.tar.gz /tmp/anaconda.core.*") {
|
|
|
|
upload_logs "/tmp/anaconda.core.tar.gz";
|
|
|
|
}
|
2015-02-13 14:08:29 +00:00
|
|
|
}
|
|
|
|
|
create fedora base class, factor out console login
Summary:
Root console in anaconda got broken by RHBZ #1222413 - no
shell on tty2. Decided to clean up console use in general as
part of fixing it.
This creates a class 'fedorabase' and has 'anacondalog' and
'fedoralog' both inherit from it. boot_to_login_screen is
moved there (as it seems appropriate) and it has a new
method, console_login, which basically handles 'get me a
shell on a console': if we're already at one it returns,
if not it'll type the user name and the password *if
necessary* (sometimes it's not) and return once it sees a
prompt. It takes a hash of named parameters for user,
password and 'check', which is whether it should die if it
fails to reach a console or not (some users don't want it
to).
anacondalog and fedoralog both get 'root_console' methods
which do something appropriate and then call
console_login; both have a hash of named parameters,
anacondalog's version only bothers with 'check', while
fedoralog's also accepts 'tty' to pick the tty to use.
This also adjusts all things which try to get to a console
prompt to use either root_console or console_login as
appropriate.
It also tweaks the needle tags a bit, drops some unneeded
needles, and adds a new 'user console prompt' needle; we
really just need two versions of the root prompt needle
and two of the user prompt needle (one for <F23, one for
F23+ - the console font changed in F23, and the @ character
at least doesn't match between the two). I think we still
need the <F23 case for upgrade tests, for now.
Test Plan:
Do a full test run and see that more tests
succeed. I've done a run on happyassassin with a hack to
workaround the SELinux issue for interactive installs,
and the results look good. I also fiddled about a bit to
test some different cases, like forcing a failure in a
live test to test post_fail_hook (and hence root_console)
in that scenario, and forcing failures after some console
commands had been run to check that it DTRT when we've
already reached a console, etc.
Reviewers: jskladan, garretraziel
Reviewed By: jskladan, garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D462
2015-07-22 18:24:40 +00:00
|
|
|
sub root_console {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Switch to an appropriate TTY and log in as root.
|
create fedora base class, factor out console login
Summary:
Root console in anaconda got broken by RHBZ #1222413 - no
shell on tty2. Decided to clean up console use in general as
part of fixing it.
This creates a class 'fedorabase' and has 'anacondalog' and
'fedoralog' both inherit from it. boot_to_login_screen is
moved there (as it seems appropriate) and it has a new
method, console_login, which basically handles 'get me a
shell on a console': if we're already at one it returns,
if not it'll type the user name and the password *if
necessary* (sometimes it's not) and return once it sees a
prompt. It takes a hash of named parameters for user,
password and 'check', which is whether it should die if it
fails to reach a console or not (some users don't want it
to).
anacondalog and fedoralog both get 'root_console' methods
which do something appropriate and then call
console_login; both have a hash of named parameters,
anacondalog's version only bothers with 'check', while
fedoralog's also accepts 'tty' to pick the tty to use.
This also adjusts all things which try to get to a console
prompt to use either root_console or console_login as
appropriate.
It also tweaks the needle tags a bit, drops some unneeded
needles, and adds a new 'user console prompt' needle; we
really just need two versions of the root prompt needle
and two of the user prompt needle (one for <F23, one for
F23+ - the console font changed in F23, and the @ character
at least doesn't match between the two). I think we still
need the <F23 case for upgrade tests, for now.
Test Plan:
Do a full test run and see that more tests
succeed. I've done a run on happyassassin with a hack to
workaround the SELinux issue for interactive installs,
and the results look good. I also fiddled about a bit to
test some different cases, like forcing a failure in a
live test to test post_fail_hook (and hence root_console)
in that scenario, and forcing failures after some console
commands had been run to check that it DTRT when we've
already reached a console, etc.
Reviewers: jskladan, garretraziel
Reviewed By: jskladan, garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D462
2015-07-22 18:24:40 +00:00
|
|
|
my $self = shift;
|
|
|
|
my %args = (
|
|
|
|
@_);
|
|
|
|
|
|
|
|
if (get_var("LIVE")) {
|
|
|
|
send_key "ctrl-alt-f2";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
# Working around RHBZ 1222413, no console on tty2
|
|
|
|
send_key "ctrl-alt-f1";
|
|
|
|
send_key "ctrl-b";
|
|
|
|
send_key "2";
|
|
|
|
}
|
redo console_login with multiple matches, move to main_common
Summary:
Since we can match on multiple needles, we can drop the loop
from console_login and instead do it this way, which is simpler
and should work better on ARM (the timeouts will scale and
allow ARM to be slow here). Also move it to main_common as
there's no logical reason for it to be a class method.
Also remove the `check` arg. `check` was only set to 0 by two
tests, _console_shutdown and anacondatest's _post_fail_hook.
For _console_shutdown, I think I just wanted to give it the
best possible chance of succeeding. But we're really not going
to lose anything significant by checking, the only case where
check=>0 would've helped is if the 'good' needle had stopped
matching, and all sorts of other tests will fail in that case.
anacondatest was only using it to save a screenshot of whatever
was on the tty if it didn't reach a root console, which doesn't
seem that useful, and we'll get screenshots from check_screen
and assert_screen anyway.
Test Plan:
Run all tests, check they behave as expected and
none inappropriately fails on console login.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D1016
2016-09-30 15:42:45 +00:00
|
|
|
console_login(user=>"root");
|
create fedora base class, factor out console login
Summary:
Root console in anaconda got broken by RHBZ #1222413 - no
shell on tty2. Decided to clean up console use in general as
part of fixing it.
This creates a class 'fedorabase' and has 'anacondalog' and
'fedoralog' both inherit from it. boot_to_login_screen is
moved there (as it seems appropriate) and it has a new
method, console_login, which basically handles 'get me a
shell on a console': if we're already at one it returns,
if not it'll type the user name and the password *if
necessary* (sometimes it's not) and return once it sees a
prompt. It takes a hash of named parameters for user,
password and 'check', which is whether it should die if it
fails to reach a console or not (some users don't want it
to).
anacondalog and fedoralog both get 'root_console' methods
which do something appropriate and then call
console_login; both have a hash of named parameters,
anacondalog's version only bothers with 'check', while
fedoralog's also accepts 'tty' to pick the tty to use.
This also adjusts all things which try to get to a console
prompt to use either root_console or console_login as
appropriate.
It also tweaks the needle tags a bit, drops some unneeded
needles, and adds a new 'user console prompt' needle; we
really just need two versions of the root prompt needle
and two of the user prompt needle (one for <F23, one for
F23+ - the console font changed in F23, and the @ character
at least doesn't match between the two). I think we still
need the <F23 case for upgrade tests, for now.
Test Plan:
Do a full test run and see that more tests
succeed. I've done a run on happyassassin with a hack to
workaround the SELinux issue for interactive installs,
and the results look good. I also fiddled about a bit to
test some different cases, like forcing a failure in a
live test to test post_fail_hook (and hence root_console)
in that scenario, and forcing failures after some console
commands had been run to check that it DTRT when we've
already reached a console, etc.
Reviewers: jskladan, garretraziel
Reviewed By: jskladan, garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D462
2015-07-22 18:24:40 +00:00
|
|
|
}
|
|
|
|
|
2015-07-31 08:31:27 +00:00
|
|
|
sub select_disks {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Handles disk selection. Has one optional argument - number of
|
|
|
|
# disks to select. Should be run when main Anaconda hub is
|
|
|
|
# displayed. Enters disk selection spoke and then ensures that
|
|
|
|
# required number of disks are selected. Additionally, if
|
|
|
|
# PARTITIONING variable starts with custom_, selects "custom
|
|
|
|
# partitioning" checkbox. Example usage:
|
|
|
|
# after calling `$self->select_disks(2);` from Anaconda main hub,
|
|
|
|
# installation destination spoke will be displayed and two
|
|
|
|
# attached disks will be selected for installation.
|
2016-06-09 15:43:46 +00:00
|
|
|
my $self = shift;
|
|
|
|
my %args = (
|
|
|
|
disks => 1,
|
|
|
|
iscsi => {},
|
|
|
|
@_
|
|
|
|
);
|
|
|
|
my %iscsi = %{$args{iscsi}};
|
2015-07-31 08:31:27 +00:00
|
|
|
# Anaconda hub
|
|
|
|
assert_screen "anaconda_main_hub", 300; #
|
|
|
|
# Damn animation delay can cause bad clicks here too - wait for it
|
|
|
|
sleep 1;
|
|
|
|
assert_and_click "anaconda_main_hub_install_destination";
|
|
|
|
|
|
|
|
if (get_var('NUMDISKS') > 1) {
|
|
|
|
# Multi-disk case. Select however many disks the test needs. If
|
|
|
|
# $disks is 0, this will do nothing, and 0 disks will be selected.
|
2016-06-09 15:43:46 +00:00
|
|
|
for my $n (1 .. $args{disks}) {
|
2015-07-31 08:31:27 +00:00
|
|
|
assert_and_click "anaconda_install_destination_select_disk_$n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
# Single disk case.
|
2016-06-09 15:43:46 +00:00
|
|
|
if ($args{disks} == 0) {
|
2015-07-31 08:31:27 +00:00
|
|
|
# Clicking will *de*-select.
|
|
|
|
assert_and_click "anaconda_install_destination_select_disk_1";
|
|
|
|
}
|
2016-06-09 15:43:46 +00:00
|
|
|
elsif ($args{disks} > 1) {
|
|
|
|
die "Only one disk is connected! Cannot select $args{disks} disks.";
|
2015-07-31 08:31:27 +00:00
|
|
|
}
|
|
|
|
# For exactly 1 disk, we don't need to do anything.
|
|
|
|
}
|
2015-08-10 18:01:12 +00:00
|
|
|
|
2016-06-09 15:43:46 +00:00
|
|
|
# Handle network disks.
|
|
|
|
if (%iscsi) {
|
|
|
|
assert_and_click "anaconda_install_destination_add_network_disk";
|
|
|
|
foreach my $target (keys %iscsi) {
|
2016-12-20 16:34:30 +00:00
|
|
|
my $ip = $iscsi{$target}->[0];
|
|
|
|
my $user = $iscsi{$target}->[1];
|
|
|
|
my $password = $iscsi{$target}->[2];
|
2016-06-09 15:43:46 +00:00
|
|
|
assert_and_click "anaconda_install_destination_add_iscsi_target";
|
|
|
|
wait_still_screen 2;
|
2016-09-12 17:24:30 +00:00
|
|
|
type_safely $ip;
|
|
|
|
wait_screen_change { send_key "tab"; };
|
|
|
|
type_safely $target;
|
|
|
|
# start discovery - three tabs, enter
|
|
|
|
type_safely "\t\t\t\n";
|
2016-12-20 16:34:30 +00:00
|
|
|
if ($user && $password) {
|
|
|
|
assert_and_click "anaconda_install_destination_target_auth_type";
|
|
|
|
assert_and_click "anaconda_install_destination_target_auth_type_chap";
|
|
|
|
send_key "tab";
|
|
|
|
type_safely $user;
|
|
|
|
send_key "tab";
|
|
|
|
type_safely $password;
|
|
|
|
}
|
2016-06-09 15:43:46 +00:00
|
|
|
assert_and_click "anaconda_install_destination_target_login";
|
|
|
|
assert_and_click "anaconda_install_destination_select_target";
|
|
|
|
}
|
|
|
|
assert_and_click "anaconda_spoke_done";
|
|
|
|
}
|
|
|
|
|
2015-08-10 18:01:12 +00:00
|
|
|
# If this is a custom partitioning test, select custom partitioning.
|
|
|
|
if (get_var('PARTITIONING') =~ /^custom_/) {
|
|
|
|
assert_and_click "anaconda_manual_partitioning";
|
|
|
|
}
|
2015-07-31 08:31:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub custom_scheme_select {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Used for setting custom partitioning scheme (such as LVM).
|
|
|
|
# Should be called when custom partitioning spoke is displayed.
|
|
|
|
# Pass the name of the partitioning scheme. Needle
|
|
|
|
# `anaconda_part_scheme_$scheme` should exist. Example usage:
|
|
|
|
# `$self->custom_scheme_select("btrfs");` uses needle
|
|
|
|
# `anaconda_part_scheme_btrfs` to set partition scheme to Btrfs.
|
2015-07-31 08:31:27 +00:00
|
|
|
my ($self, $scheme) = @_;
|
|
|
|
assert_and_click "anaconda_part_scheme";
|
2015-08-10 18:01:12 +00:00
|
|
|
# Move the mouse away from the menu
|
|
|
|
mouse_set(10, 10);
|
2015-07-31 08:31:27 +00:00
|
|
|
assert_and_click "anaconda_part_scheme_$scheme";
|
|
|
|
}
|
|
|
|
|
|
|
|
sub custom_change_type {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Used to set different device types for specified partition (e.g.
|
|
|
|
# RAID). Should be called when custom partitioning spoke is
|
|
|
|
# displayed. Pass it type of partition and name of partition.
|
|
|
|
# Needles `anaconda_part_select_$part` and
|
|
|
|
# `anaconda_part_device_type_$type` should exist. Example usage:
|
|
|
|
# `$self->custom_change_type("raid", "root");` uses
|
|
|
|
# `anaconda_part_select_root` and `anaconda_part_device_type_raid`
|
|
|
|
# needles to set RAID for root partition.
|
2015-08-10 18:01:12 +00:00
|
|
|
my ($self, $type, $part) = @_;
|
|
|
|
$part ||= "root";
|
|
|
|
assert_and_click "anaconda_part_select_$part";
|
2015-07-31 08:31:27 +00:00
|
|
|
assert_and_click "anaconda_part_device_type";
|
2015-08-10 18:01:12 +00:00
|
|
|
# Move the mouse away from the menu
|
|
|
|
mouse_set(10, 10);
|
2015-07-31 08:31:27 +00:00
|
|
|
assert_and_click "anaconda_part_device_type_$type";
|
|
|
|
assert_and_click "anaconda_part_update_settings";
|
|
|
|
}
|
|
|
|
|
2015-08-10 18:01:12 +00:00
|
|
|
sub custom_change_fs {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Used to set different file systems for specified partition.
|
|
|
|
# Should be called when custom partitioning spoke is displayed.
|
|
|
|
# Pass filesystem name and name of partition. Needles
|
|
|
|
# `anaconda_part_select_$part` and `anaconda_part_fs_$fs` should
|
|
|
|
# exist. Example usage:
|
|
|
|
# `$self->custom_change_fs("ext3", "root");` uses
|
|
|
|
# `anaconda_part_select_root` and `anaconda_part_fs_ext3` needles
|
|
|
|
# to set ext3 file system for root partition.
|
2015-08-10 18:01:12 +00:00
|
|
|
my ($self, $fs, $part) = @_;
|
|
|
|
$part ||= "root";
|
|
|
|
assert_and_click "anaconda_part_select_$part";
|
2016-05-20 19:56:44 +00:00
|
|
|
# if fs is already set correctly, do nothing
|
|
|
|
return if (check_screen "anaconda_part_fs_${fs}_selected", 5);
|
2015-08-10 18:01:12 +00:00
|
|
|
assert_and_click "anaconda_part_fs";
|
|
|
|
# Move the mouse away from the menu
|
|
|
|
mouse_set(10, 10);
|
|
|
|
assert_and_click "anaconda_part_fs_$fs";
|
|
|
|
assert_and_click "anaconda_part_update_settings";
|
|
|
|
}
|
|
|
|
|
2016-06-09 15:43:46 +00:00
|
|
|
sub custom_change_device {
|
|
|
|
my ($self, $part, $devices) = @_;
|
|
|
|
assert_and_click "anaconda_part_select_$part";
|
|
|
|
assert_and_click "anaconda_part_device_modify";
|
|
|
|
foreach my $device (split(/ /, $devices)) {
|
|
|
|
assert_and_click "anaconda_part_device_${device}";
|
|
|
|
}
|
|
|
|
assert_and_click "anaconda_part_device_select";
|
|
|
|
assert_and_click "anaconda_part_update_settings";
|
|
|
|
}
|
|
|
|
|
2015-08-19 21:41:41 +00:00
|
|
|
sub custom_delete_part {
|
2017-01-12 22:27:42 +00:00
|
|
|
# Used for deletion of previously added partitions in custom
|
|
|
|
# partitioning spoke. Should be called when custom partitioning
|
|
|
|
# spoke is displayed. Pass the partition name. Needle
|
|
|
|
# `anaconda_part_select_$part` should exist. Example usage:
|
|
|
|
# `$self->custom_delete_part('swap');` uses
|
|
|
|
# `anaconda_part_select_swap` to delete previously added swap
|
|
|
|
# partition.
|
2015-08-19 21:41:41 +00:00
|
|
|
my ($self, $part) = @_;
|
|
|
|
return if not $part;
|
|
|
|
assert_and_click "anaconda_part_select_$part";
|
|
|
|
assert_and_click "anaconda_part_delete";
|
|
|
|
}
|
|
|
|
|
add NFS tests (and DHCP/DNS in the support server)
Summary:
Set up the support server to provide DHCP/DNS functionality and
an NFS server, providing a kickstart. Add a kickstart test just
like the other root-user-crypted-net kickstart tests except it
gets the kickstart from the support server via NFS. Also add NFS
repository tests and a second support server for Server-dvd-iso
flavor: this test must run on that flavor to ensure that packages
are actually available. The support server just mounts the
attached 'DVD' and exports it via NFS.
Note we don't need to do anything clever to avoid IP conflicts
between the two support servers, because os-autoinst-openvswitch
ensures each worker group is on its own VLAN.
As part of adding the NFS repo tests, I did a bit of cleanup,
moving little things we were repeating a lot into anacondatest,
and sharing the 'check if the repo was used' logic between all
the tests (by making it into a test step that's loaded for all
of them). I also simplified the 'was repo used' checks a bit,
it seems silly to run a 'grep' command inside the VM then have
os-autoinst do a grep on the output (which is effectively what
we were doing before), instead we'll just use a single grep
within the VM, and clean up the messy quoting/escaping a bit.
Test Plan:
Run all tests - at least all repository tests - and
check they work (make sure the tests are actually still sane,
not just that they pass). I've done runs of all the repo tests
and they look good to me, but please double-check. I'm currently
re-running the whole 24-20160609.n.0 test on staging with these
changes.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D888
2016-06-13 15:42:30 +00:00
|
|
|
sub get_full_repo {
|
|
|
|
my ($self, $repourl) = @_;
|
|
|
|
# trivial thing we kept repeating: fill out an HTTP or HTTPS
|
|
|
|
# repo URL with flavor and arch, leave NFS ones alone (as for
|
|
|
|
# NFS tests we just use a mounted ISO and the URL is complete)
|
|
|
|
if ($repourl !~ m/^nfs/) {
|
use compose repository (not master repo) for most tests
Summary:
we have a long-standing problem with all the tests that hit
the repositories. The tests are triggered as soon as a compose
completes. At this point in time, the compose is not synced to
the mirrors, where the default 'fedora' repo definition looks;
the sync happens after the compose completes, and there is also
a metadata sync step that must happen after *that* before any
operation that uses the 'fedora' repository definition will
actually use the packages from the new compose. Thus all net
install tests and tests that installed packages have been
effectively testing the previous compose, not the current one.
We have some thoughts about how to fix this 'properly' (such
that the openQA tests wouldn't have to do anything special,
but their 'fedora' repository would somehow reflect the compose
under test), but none of them is in place right now or likely
to happen in the short term, so in the mean time this should
deal with most of the issues. With this change, everything but
the default_install tests for the netinst images should use
the compose-under-test's Everything tree instead of the 'fedora'
repository, and thus should install and test the correct
packages.
This relies on a corresponding change to openqa_fedora_tools
to set the LOCATION openQA setting (which is simply the base
location of the compose under test).
Test Plan:
Do a full test run, check (as far as you can) tests run sensibly
and use appropriate repositories.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D989
2016-09-01 15:22:59 +00:00
|
|
|
$repourl .= "/Everything/".get_var("ARCH")."/os";
|
add NFS tests (and DHCP/DNS in the support server)
Summary:
Set up the support server to provide DHCP/DNS functionality and
an NFS server, providing a kickstart. Add a kickstart test just
like the other root-user-crypted-net kickstart tests except it
gets the kickstart from the support server via NFS. Also add NFS
repository tests and a second support server for Server-dvd-iso
flavor: this test must run on that flavor to ensure that packages
are actually available. The support server just mounts the
attached 'DVD' and exports it via NFS.
Note we don't need to do anything clever to avoid IP conflicts
between the two support servers, because os-autoinst-openvswitch
ensures each worker group is on its own VLAN.
As part of adding the NFS repo tests, I did a bit of cleanup,
moving little things we were repeating a lot into anacondatest,
and sharing the 'check if the repo was used' logic between all
the tests (by making it into a test step that's loaded for all
of them). I also simplified the 'was repo used' checks a bit,
it seems silly to run a 'grep' command inside the VM then have
os-autoinst do a grep on the output (which is effectively what
we were doing before), instead we'll just use a single grep
within the VM, and clean up the messy quoting/escaping a bit.
Test Plan:
Run all tests - at least all repository tests - and
check they work (make sure the tests are actually still sane,
not just that they pass). I've done runs of all the repo tests
and they look good to me, but please double-check. I'm currently
re-running the whole 24-20160609.n.0 test on staging with these
changes.
Reviewers: jskladan, garretraziel
Reviewed By: garretraziel
Subscribers: tflink
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D888
2016-06-13 15:42:30 +00:00
|
|
|
}
|
|
|
|
return $repourl;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub get_mirrorlist_url {
|
|
|
|
return "mirrors.fedoraproject.org/mirrorlist?repo=fedora-" . lc(get_var("VERSION")) . "&arch=" . get_var('ARCH')
|
|
|
|
}
|
|
|
|
|
2015-02-13 14:08:29 +00:00
|
|
|
1;
|
|
|
|
|
|
|
|
# vim: set sw=4 et:
|