mirror of
https://github.com/rocky-linux/os-autoinst-distri-rocky.git
synced 2024-12-27 04:50:55 +00:00
6e262be28b
The FreeIPA upgrade test didn't actually check that FreeIPA is actually running after the upgrade and reboot, it just kinda assumed it is. Let's add a check to the start of the 'check' test module that makes sure ipa.service actually comes up to 'active' state. This'll make it clearer when tests are failing because FreeIPA didn't come up right after the upgrade. The check will run on non-upgrade tests too, but that's fine. Signed-off-by: Adam Williamson <awilliam@redhat.com>
77 lines
3.2 KiB
Perl
77 lines
3.2 KiB
Perl
use base "installedtest";
|
|
use strict;
|
|
use testapi;
|
|
use lockapi;
|
|
use mmapi;
|
|
|
|
sub run {
|
|
my $self = shift;
|
|
# make sure ipa.service actually came up successfully
|
|
my $count = 40;
|
|
while (1) {
|
|
$count -= 1;
|
|
die "Waited too long for ipa.service to show up!" if ($count == 0);
|
|
sleep 3;
|
|
# if it's active, we're done here
|
|
last unless script_run 'systemctl is-active ipa.service';
|
|
# if it's not...fail if it's failed
|
|
assert_script_run '! systemctl is-failed ipa.service';
|
|
# if we get here, it's activating, so loop around
|
|
}
|
|
# if this is an update, notify clients that we're now up again
|
|
mutex_create('server_upgraded') if get_var("UPGRADE");
|
|
# from here we branch: for F28 and earlier we use rolekit as
|
|
# always, for F29+ we decommission directly ourselves as rolekit
|
|
# is deprecated
|
|
my $version = get_var("VERSION");
|
|
if ($version < 29 && $version ne 'Rawhide') {
|
|
# check the role status, should be 'running'
|
|
validate_script_output 'rolectl status domaincontroller/domain.local', sub { $_ =~ m/^running/ };
|
|
# check the admin password is listed in 'settings'
|
|
validate_script_output 'rolectl settings domaincontroller/domain.local', sub {$_ =~m/dm_password = \w{5,}/ };
|
|
# sanitize the settings
|
|
assert_script_run 'rolectl sanitize domaincontroller/domain.local';
|
|
# check the password now shows as 'None'
|
|
validate_script_output 'rolectl settings domaincontroller/domain.local', sub {$_ =~ m/dm_password = None/ };
|
|
# once child jobs are done, stop the role
|
|
wait_for_children;
|
|
# run post-fail hook to upload logs - even when this test passes
|
|
# there are often cases where we need to see the logs (e.g. client
|
|
# test failed due to server issue)
|
|
$self->post_fail_hook();
|
|
assert_script_run 'rolectl stop domaincontroller/domain.local';
|
|
# check role is stopped
|
|
validate_script_output 'rolectl status domaincontroller/domain.local', sub { $_ =~ m/^ready-to-start/ };
|
|
# decommission the role
|
|
assert_script_run 'rolectl decommission domaincontroller/domain.local', 300;
|
|
# check role is decommissioned
|
|
validate_script_output 'rolectl list instances', sub { $_ eq "" };
|
|
}
|
|
else {
|
|
# once child jobs are done, stop the server
|
|
wait_for_children;
|
|
# run post-fail hook to upload logs - even when this test passes
|
|
# there are often cases where we need to see the logs (e.g. client
|
|
# test failed due to server issue)
|
|
$self->post_fail_hook();
|
|
assert_script_run 'systemctl stop ipa.service';
|
|
# check server is stopped
|
|
assert_script_run '! systemctl is-active ipa.service';
|
|
# decommission the server
|
|
assert_script_run 'ipa-server-install -U --uninstall', 300;
|
|
# try and un-garble the screen that the above sometimes garbles
|
|
# ...we may be on tty1 or tty3 now, so flip between them
|
|
send_key "ctrl-alt-f1";
|
|
send_key "ctrl-alt-f3";
|
|
# FIXME check server is decommissioned...how?
|
|
}
|
|
}
|
|
|
|
|
|
sub test_flags {
|
|
return { fatal => 1 };
|
|
}
|
|
|
|
1;
|
|
|
|
# vim: set sw=4 et:
|