Multiple modifications to test suites, tests and needles #1

Merged
tcooper merged 8 commits from develop into develop 2021-08-19 23:13:17 +00:00
72 changed files with 681 additions and 227 deletions

View File

@ -386,13 +386,12 @@ sub boot_decrypt {
sub check_release { sub check_release {
# Checks whether the installed release matches a given value. E.g. # Checks whether the installed release matches a given value. E.g.
# `check_release(23)` checks whether the installed system is # `check_release(8.4)` checks whether the installed system is
# Fedora 23. The value can be 'Rawhide' or a Fedora release # Rocky Linux 8.4. Often you will want to use `get_var('VERSION')`. Expects
# number; often you will want to use `get_var('VERSION')`. Expects
# a console prompt to be active when it is called. # a console prompt to be active when it is called.
my $release = shift; my $release = shift;
my $check_command = "grep SUPPORT_PRODUCT_VERSION /etc/os-release"; my $check_command = "grep SUPPORT_PRODUCT_VERSION /etc/os-release";
validate_script_output $check_command, sub { $_ =~ m/REDHAT_SUPPORT_PRODUCT_VERSION=$release/ }; validate_script_output $check_command, sub { $_ =~ m/ROCKY_SUPPORT_PRODUCT_VERSION=$release/ };
} }
sub disable_firefox_studies { sub disable_firefox_studies {

11
main.pm
View File

@ -171,6 +171,17 @@ sub load_install_tests() {
if (get_var('ANACONDA_STATIC')) { if (get_var('ANACONDA_STATIC')) {
autotest::loadtest "tests/_anaconda_network_static.pm"; autotest::loadtest "tests/_anaconda_network_static.pm";
} }
else {
autotest::loadtest "tests/_anaconda_network_enable.pm";
}
## Kdump
if (get_var('ANACONDA_KDUMP') eq 'enabled') {
autotest::loadtest "tests/_anaconda_kdump_enable.pm";
}
else {
autotest::loadtest "tests/_anaconda_kdump_disable.pm";
}
## Installation source ## Installation source
if (get_var('MIRRORLIST_GRAPHICAL') || get_var("REPOSITORY_GRAPHICAL")) { if (get_var('MIRRORLIST_GRAPHICAL') || get_var("REPOSITORY_GRAPHICAL")) {

View File

@ -0,0 +1,16 @@
{
"area": [
{
"width": 35,
"xpos": 806,
"type": "match",
"ypos": 327,
"height": 18
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_address_add"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,27 @@
{
"area": [
{
"xpos": 595,
"ypos": 133,
"width": 83,
"height": 17,
"type": "match"
},
{
"xpos": 909,
"ypos": 114,
"width": 69,
"height": 17,
"type": "match",
"click_point": {
"xpos": 17.5,
"ypos": 7.5
}
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_connect"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"ypos": 133,
"type": "match",
"xpos": 576,
"width": 66,
"height": 17
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_connected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 17,
"width": 89,
"xpos": 635,
"type": "match",
"ypos": 205
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_ipv4"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 15,
"xpos": 155,
"type": "match",
"width": 342,
"ypos": 255
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_method"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 16,
"width": 52,
"type": "match",
"xpos": 223,
"ypos": 312
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_method_manual"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 19,
"ypos": 619,
"width": 74,
"xpos": 901,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_network_configure"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 34,
"width": 34,
"type": "match",
"xpos": 721,
"ypos": 340
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_main_hub_network_host_name"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 34,
"ypos": 340,
"width": 34,
"xpos": 721,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_main_hub_network_host_name"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"width": 109,
"xpos": 547,
"type": "match",
"ypos": 465,
"height": 17
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_part_add_mountpoint"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -0,0 +1,20 @@
{
"area": [
{
"height": 21,
"width": 79,
"xpos": 608,
"type": "match",
"ypos": 359,
"click_point": {
"xpos": 10.5,
"ypos": 9.5
}
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_part_device_reformat"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 22,
"ypos": 139,
"xpos": 394,
"type": "match",
"width": 74
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"device_root_resized_twelve"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 270,
"width": 34,
"xpos": 505,
"type": "match",
"height": 19
}
],
"properties": [],
"tags": [
"anaconda_part_fs_ext4"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 25,
"width": 87,
"xpos": 497,
"type": "match",
"ypos": 126
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_part_mountpoint_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -0,0 +1,20 @@
{
"area": [
{
"xpos": 26,
"ypos": 627,
"width": 49,
"height": 15,
"type": "match",
"click_point": {
"xpos": 24.5,
"ypos": 7.5
}
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_part_add"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1,18 @@
{
"area": [
{
"ypos": 242,
"xpos": 64,
"type": "match",
"width": 33,
"height": 18
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"ENV-FLAVOR-server",
"LANGUAGE-english",
"anaconda_part_scheme_lvm"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,18 @@
{
"area": [
{
"type": "match",
"xpos": 61,
"width": 115,
"ypos": 212,
"height": 20
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"ENV-FLAVOR-server",
"LANGUAGE-english",
"anaconda_part_scheme_standard"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -1,23 +1,17 @@
{ {
"area": [ "area": [
{ {
"xpos": 44, "ypos": 134,
"ypos": 136, "width": 79,
"width": 84, "xpos": 41,
"height": 20, "type": "match",
"type": "match" "height": 21
},
{
"xpos": 494,
"ypos": 151,
"width": 47,
"height": 23,
"type": "match"
} }
], ],
"properties": [], "properties": [],
"tags": [ "tags": [
"ENV-DISTRI-rocky", "ENV-DISTRI-rocky",
"ENV-FLAVOR-server",
"anaconda_part_select_root" "anaconda_part_select_root"
] ]
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,18 @@
{
"area": [
{
"ypos": 573,
"width": 98,
"type": "match",
"xpos": 882,
"height": 20
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"ENV-FLAVOR-server",
"LANGUAGE-english",
"anaconda_part_update_settings"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"ypos": 321,
"width": 91,
"xpos": 39,
"type": "match",
"height": 18
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_part_use_current"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"ypos": 341,
"width": 71,
"xpos": 546,
"type": "match",
"height": 19
}
],
"properties": [],
"tags": [
"autoupdate_planned_day"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 77,
"ypos": 164,
"width": 232,
"type": "match",
"xpos": 572
}
],
"properties": [],
"tags": [
"cockpit_login"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 572,
"type": "match",
"width": 232,
"ypos": 179,
"height": 77
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"cockpit_login"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

View File

@ -0,0 +1,19 @@
{
"area": [
{
"type": "match",
"ypos": 287,
"click_point": {
"ypos": 8,
"xpos": 8
},
"width": 43,
"xpos": 535,
"height": 19
}
],
"properties": [],
"tags": [
"cockpit_updates_auto_all"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"height": 14,
"width": 70,
"xpos": 674,
"type": "match",
"ypos": 420
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"firefox_close_tabs"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -0,0 +1,20 @@
{
"area": [
{
"xpos": 10,
"ypos": 130,
"width": 111,
"height": 26,
"type": "match",
"click_point": {
"xpos": 12.5,
"ypos": 13
}
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_kdump_disable"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 15,
"ypos": 136,
"width": 106,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_kdump_disabled"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,20 @@
{
"area": [
{
"xpos": 10,
"ypos": 130,
"width": 111,
"height": 26,
"type": "match",
"click_point": {
"xpos": 12.5,
"ypos": 13
}
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_kdump_enable"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 719,
"ypos": 265,
"width": 16,
"height": 43,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"anaconda_main_hub_kdump"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -271,17 +271,6 @@
"USER_LOGIN": "qwerty" "USER_LOGIN": "qwerty"
} }
}, },
"install_blivet_btrfs": {
"profiles": {
"rocky-universal-x86_64-*-64bit": 40,
"rocky-universal-x86_64-*-uefi": 41
},
"settings": {
"PARTITIONING": "custom_blivet_btrfs",
"POSTINSTALL": "disk_custom_btrfs_postinstall",
"ROOT_PASSWORD": "weakpassword"
}
},
"install_blivet_lvmthin": { "install_blivet_lvmthin": {
"profiles": { "profiles": {
"rocky-universal-x86_64-*-64bit": 40, "rocky-universal-x86_64-*-64bit": 40,
@ -293,28 +282,6 @@
"ROOT_PASSWORD": "weakpassword" "ROOT_PASSWORD": "weakpassword"
} }
}, },
"install_blivet_btrfs_preserve_home": {
"profiles": {
"rocky-dvd-iso-x86_64-*-64bit": 40
},
"settings": {
"PARTITIONING": "custom_blivet_btrfs_preserve_home",
"HDD_1": "disk_f%CURRREL%_desktop_4_%ARCH%.img",
"POSTINSTALL": "btrfs_preserve_home_check_content",
"ROOT_PASSWORD": "weakpassword"
}
},
"install_blivet_btrfs_preserve_home_uefi": {
"profiles": {
"rocky-dvd-iso-x86_64-*-uefi": 40
},
"settings": {
"PARTITIONING": "custom_blivet_btrfs_preserve_home",
"HDD_1": "disk_f%CURRREL%_minimal-uefi_3_%ARCH%.img",
"POSTINSTALL": "btrfs_preserve_home_check_content",
"ROOT_PASSWORD": "weakpassword"
}
},
"install_blivet_lvm_ext4": { "install_blivet_lvm_ext4": {
"profiles": { "profiles": {
"rocky-dvd-iso-x86_64-*-64bit": 40, "rocky-dvd-iso-x86_64-*-64bit": 40,
@ -370,39 +337,6 @@
"ROOT_PASSWORD": "weakpassword" "ROOT_PASSWORD": "weakpassword"
} }
}, },
"install_btrfs": {
"profiles": {
"rocky-universal-x86_64-*-64bit": 40,
"rocky-universal-x86_64-*-uefi": 41
},
"settings": {
"PARTITIONING": "custom_btrfs",
"ROOT_PASSWORD": "weakpassword"
}
},
"install_btrfs_preserve_home": {
"profiles": {
"rocky-dvd-iso-x86_64-*-64bit": 10
},
"settings": {
"PARTITIONING": "custom_btrfs_preserve_home",
"INSTALL": 1,
"ROOT_PASSWORD": "weakpassword",
"POSTINSTALL": "btrfs_preserve_home_check_content",
"HDD_1": "disk_f%CURRREL%_desktop_4_%ARCH%.img"
}
},
"install_btrfs_preserve_home_uefi": {
"profiles": {
"rocky-dvd-iso-x86_64-*-uefi": 41
},
"settings": {
"PARTITIONING": "custom_btrfs_preserve_home",
"HDD_1": "disk_f%CURRREL%_minimal-uefi_3_%ARCH%.img",
"POSTINSTALL": "btrfs_preserve_home_check_content",
"ROOT_PASSWORD": "weakpassword"
}
},
"install_cyrillic_language": { "install_cyrillic_language": {
"profiles": { "profiles": {
"rocky-universal-x86_64-*-64bit": 40 "rocky-universal-x86_64-*-64bit": 40

View File

@ -0,0 +1,21 @@
use base "anacondatest";
use strict;
use testapi;
use utils;
use tapnet;
sub run {
my $self = shift;
assert_and_click "anaconda_main_hub_kdump";
assert_and_click "anaconda_kdump_disable";
assert_screen "anaconda_kdump_disabled", 90;
assert_and_click "anaconda_spoke_done";
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et:

View File

@ -0,0 +1,21 @@
use base "anacondatest";
use strict;
use testapi;
use utils;
use tapnet;
sub run {
my $self = shift;
assert_and_click "anaconda_main_hub_kdump";
assert_and_click "anaconda_kdump_enable";
assert_screen "anaconda_kdump_enabled", 90;
assert_and_click "anaconda_spoke_done";
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et:

View File

@ -0,0 +1,45 @@
use base "anacondatest";
use strict;
use testapi;
use utils;
use tapnet;
sub run {
my $self = shift;
assert_and_click "anaconda_main_hub_network_host_name";
#add the stuff here to click the connected button
assert_and_click "anaconda_network_configure";
#assert_and_click "anaconda_network_ipv4";
#assert_and_click "anaconda_network_method";
#assert_and_click "anaconda_network_method_manual";
#assert_and_click "anaconda_network_address_add";
#type_safely get_var('ANACONDA_STATIC');
## netmask is automatically set
#type_safely "\t\t";
## assume gateway
#type_safely "172.16.2.2";
## move to DNS servers
#type_safely "\n\t\t\t";
## set DNS from host
#type_safely join(',', get_host_dns());
#type_safely "\t\t\t\t\t\n";
## can take a bit of time as it seems to wait for all the pending
## DHCP requests to time out before applying the static config
assert_screen "anaconda_network_connected", 90;
assert_and_click "anaconda_spoke_done";
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et:

View File

@ -22,6 +22,7 @@ sub run {
# set DNS from host # set DNS from host
type_safely join(',', get_host_dns()); type_safely join(',', get_host_dns());
type_safely "\t\t\t\t\t\n"; type_safely "\t\t\t\t\t\n";
assert_and_click "anaconda_network_connect";
# can take a bit of time as it seems to wait for all the pending # can take a bit of time as it seems to wait for all the pending
# DHCP requests to time out before applying the static config # DHCP requests to time out before applying the static config
assert_screen "anaconda_network_connected", 90; assert_screen "anaconda_network_connected", 90;

View File

@ -56,14 +56,16 @@ sub run {
type_very_safely "/"; type_very_safely "/";
# Skip to the Size window # Skip to the Size window
send_key "tab"; send_key "tab";
type_very_safely "13 GiB"; type_very_safely "12 GiB";
# Reformat and update the partition # Reformat and update the partition
assert_and_click "anaconda_part_device_reformat"; assert_and_click "anaconda_part_device_reformat";
assert_and_click "anaconda_part_update_settings"; assert_and_click "anaconda_part_update_settings";
# give it a second or two to update # give it a second or two to update
wait_still_screen 2; wait_still_screen 2;
# Check that the partition has been resized for 13GiB # Fedora original here as to resize to 13GiB but Rocky default / partition
assert_screen "device_root_resized_thirteen"; # size is 12.5GiB and we can only resize down.
# Check that the partition has been resized for 12GiB
assert_screen "device_root_resized_twelve";
# Add new /home partition into the emptied space. # Add new /home partition into the emptied space.
assert_and_click "anaconda_part_add"; assert_and_click "anaconda_part_add";

View File

@ -6,7 +6,7 @@ sub run {
assert_screen "root_console"; assert_screen "root_console";
# check that there is a root partition and that it has # check that there is a root partition and that it has
# the correct size -> 13G # the correct size -> 13G
assert_script_run "lsblk | grep root | grep '13G'"; assert_script_run "lsblk | grep root | grep '12G'";
} }
sub test_flags { sub test_flags {

View File

@ -12,7 +12,7 @@ sub run {
# Install a Ruby module. # Install a Ruby module.
my $name = "nodejs"; my $name = "nodejs";
my $stream = "14"; my $stream = "14";
my $profile = "default"; my $profile = "common";
assert_script_run("dnf module install -y $name:$stream/$profile"); assert_script_run("dnf module install -y $name:$stream/$profile");
# Check that it is listed in the installed list. # Check that it is listed in the installed list.

View File

@ -12,34 +12,26 @@ sub run {
# The test case will check that dnf has modular functions and that # The test case will check that dnf has modular functions and that
# it is possible to invoke modular commands to work with modularity. # it is possible to invoke modular commands to work with modularity.
# Check that modular repositories are installed and enabled.
# If the repository does not exist, the output of the command is empty.
if (lc(get_var('VERSION')) eq "rawhide") {
my $mrawhide_output = script_output("dnf repolist --enabled rawhide-modular");
die "The rawhide-modular repo seems not to be installed." unless (length $mrawhide_output);
}
else {
my $mfedora_output = script_output("dnf repolist --enabled fedora-modular");
die "The fedora-modular repo seems not to be installed." unless (length $mfedora_output);
my $mupdates_output = script_output("dnf repolist --enabled updates-modular");
die "The updates-modular repo seems not to be installed." unless (length $mupdates_output);
}
# Check that modularity works and dnf can list the modules.
my $modules = script_output('dnf module list --disablerepo=updates-modular --disablerepo=updates-testing-modular', timeout => 270);
my @modules = parse_module_list($modules);
die "The module list seems to be empty when it should not be." if (scalar @modules == 0);
# Check that modularity works and dnf can list the modules
# with the -all option.
$modules = script_output('dnf module list --all --disablerepo=updates-modular --disablerepo=updates-testing-modular', timeout => 270);
@modules = parse_module_list($modules);
die "The module list seems to be empty when it should not be." if (scalar @modules == 0);
# Check that dnf lists the enabled modules. # Check that dnf lists the enabled modules.
$modules = script_output('dnf module list --enabled', timeout => 270); # NOTE: In Rocky the baseos and appstream default repos include and add modules in the
@modules = parse_module_list($modules); # default installation where in Fedora all modules are in separate modular repos.
die "There seem to be enabled modules when the list should be empty." unless (scalar @modules == 0); # Until we figure out how to keep track of the count of expected enabled modular
# packages this will need to assume what appears to be the default in minimal.
my $modules = script_output('dnf module list --enabled', timeout => 270);
my @modules = parse_module_list($modules);
die "Enabled modules is less than the default (3)." unless (scalar @modules < 3);
die "Enabled modules is greater than the default (3)." unless (scalar @modules > 3);
# More advanced... loop over default modules and check them directly. The is_listed
# bit comes from modularity_enable_disable_module.pm
#perl 5.26 [d][e]
#perl-IO-Socket-SSL 2.066 [d][e]
#perl-libwww-perl 6.34 [d][e]
#my @enabled_modules = parse_module_list($enabled);
#unless (is_listed($name, $stream, \@enabled_modules)) {
# die "The enabled module is not listed in the list of enabled modules but it should be.";
#}
# Check that dnf lists the disabled modules. # Check that dnf lists the disabled modules.
$modules = script_output('dnf module list --disabled', timeout => 270); $modules = script_output('dnf module list --disabled', timeout => 270);

View File

@ -33,100 +33,24 @@ sub run {
# Now, we have all the data ready and we can start testing, first let us get # Now, we have all the data ready and we can start testing, first let us get
# correct variables to compare the system data with. # correct variables to compare the system data with.
# First, we know the basic stuff # First, we know the basic stuff
my $id = get_var("DISTRI"); # Should be "fedora" my $id = get_var("DISTRI"); # Should be "rocky"
# extract expected version components from ISO name for canned variants,
# which have their os-release rewritten by rpm-ostree, see:
# https://github.com/projectatomic/rpm-ostree/blob/master/docs/manual/treefile.md
# we use the ISO name because rpm-ostree uses elements from the compose
# ID for nightlies, but from the label for candidate composes; BUILD
# always gives us the compose ID, but the ISO name contains the compose
# ID for nightlies but the label for candidate composes, so it works for
# our purposes here.
my $isovar = get_var("ISO");
# Split the ISO variable at "-" and read second-to-last (release
# number) and last (compose ID: date and respin, label: major and
# minor) fields.
my ($cannedver, $cannednum) = (split /-/, $isovar)[-2, -1];
# Get rid of the ".iso" part of the tag.
$cannednum =~ s/\.iso//g;
# Now, we merge the fields into one expression to create the correct canned tag
# that will contain both the version number and the build number.
my $cannedtag = "$cannedver.$cannednum";
# If this is a CoreOS build, though, throw all that away and
# just use the build version
my $build = get_var("BUILD");
if ($build =~ /^Fedora-CoreOS/) {
$cannedtag = (split /-/, $build)[-1];
}
my $name = ucfirst($id); my $name = ucfirst($id);
# from F35 onwards, $NAME is "Fedora Linux" not just "Fedora" # $NAME is "Rocky Linux" not just "Rocky"
my $relnum = get_release_number; my $fullname = $name . " Linux";
my $fullname = $relnum > 34 ? $name . " Linux" : $name;
my $rawrel = get_var("RAWREL", ''); my $version_id = get_var("VERSION"); # Should be the version number.
my $version_id = get_var("VERSION"); # Should be the version number or Rawhide. my ($ver_major, $ver_minor) = split /\./, $version_id;
# IoT has a branch that acts more or less like Rawhide, but has
# its version as the Rawhide release number, not 'Rawhide'. This
# handles that
$version_id = 'Rawhide' if ($version_id eq $rawrel);
my $varstr = spell_version_number($version_id); my $varstr = spell_version_number($version_id);
my $target = lc($version_id); my $target = lc($ver_major);
$version_id = $rawrel if ($version_id eq "Rawhide");
# the 'generic' os-release in fedora-release has no VARIANT or my $reltag = script_output 'rpm -q rocky-release --qf "%{RELEASE}\n"';
# VARIANT_ID and the string used in values like VERSION, that in other my ($relver, $eltag) = split /\./, $reltag;
# cases is the VARIANT, is 'Rawhide' for Rawhide and the spelt version
# number for other releases. These are the values we'll see for an
# Everything image.
my $variant_id = "";
my $variant = "generic";
# now replace the values with the correct ones if we are testing a my $code_name = get_var("CODENAME", 'Green Obsidian');
# subvariant that maps to a known variant my $version = "$version_id ($code_name)";
my $subvariant = get_var('SUBVARIANT'); my $platform_id = "platform:$eltag";
my %variants = ( my $pretty = "$fullname $version_id ($code_name)";
Server => ["server", "Server Edition"],
Workstation => ["workstation", "Workstation Edition"],
AtomicHost => ["atomic.host", "Atomic Host"],
CoreOS => ["coreos", "CoreOS"],
KDE => ["kde", "KDE Plasma"],
Silverblue => ["silverblue", "Silverblue"],
IoT => ["iot", "IoT Edition"],
);
if (exists($variants{$subvariant})) {
($variant_id, $variant) = @{$variants{$subvariant}};
$varstr = $variant;
}
# If fedora-release-common release starts with a 0, we'll have
# "Prerelease" in varstr
my $reltag = script_output 'rpm -q fedora-release-common --qf "%{RELEASE}\n"';
if (index($reltag, "0.") == 0) {
$varstr .= " Prerelease";
# ...however, we shouldn't just wave this through if we're
# an RC candidate or update compose, those should never be
# done with a 0.x fedora-release-common. so let's blow up
# here if so. unless it's IoT, because IoT is weird
my $label = get_var("LABEL");
if ($label =~ /^(RC|Update)-/ && $subvariant ne "IoT") {
die "RC candidate or update compose should not have 0.x versioned fedora-release!";
}
}
my $version = "$version_id ($varstr)";
# for canned variants, we need to form a different string here by using
# the above created cannedtag. See earlier comment
if (get_var("CANNED")) {
$version = "$cannedtag ($varstr)";
}
my $platform_id = "platform:f$version_id";
my $pretty = "$fullname $version_id ($varstr)";
# Same problem is when testing the PRETTY_NAME.
if (get_var("CANNED")) {
$pretty = "$fullname $cannedtag ($varstr)";
# ...and FCOS uses a different format, sigh
if ($build =~ /^Fedora-CoreOS/) {
$pretty = "Fedora CoreOS $cannedtag";
}
}
#Now. we can start testing the real values from the installed system. #Now. we can start testing the real values from the installed system.
my @fails = (); my @fails = ();
@ -141,7 +65,8 @@ sub run {
rec_log "VERSION should be $version and is $strip", $strip eq $version, $failref; rec_log "VERSION should be $version and is $strip", $strip eq $version, $failref;
# Test for version_id # Test for version_id
rec_log "VERSION_ID should be $version_id and is $content{'VERSION_ID'}", $content{'VERSION_ID'} eq $version_id, $failref; $strip = strip_marks($content{'VERSION_ID'});
rec_log "VERSION_ID should be $version_id and is $strip", $strip eq $version_id, $failref;
# Test for platform_id # Test for platform_id
$strip = strip_marks($content{'PLATFORM_ID'}); $strip = strip_marks($content{'PLATFORM_ID'});
@ -151,32 +76,22 @@ sub run {
$strip = strip_marks($content{'PRETTY_NAME'}); $strip = strip_marks($content{'PRETTY_NAME'});
rec_log "PRETTY_NAME should be $pretty and is $strip", $strip eq $pretty, $failref; rec_log "PRETTY_NAME should be $pretty and is $strip", $strip eq $pretty, $failref;
# Test for RH Bugzilla Product # Test for Rocky Support Product
$strip = strip_marks($content{'REDHAT_BUGZILLA_PRODUCT'}); $strip = strip_marks($content{'ROCKY_SUPPORT_PRODUCT'});
rec_log "REDHAT_BUGZILLA_PRODUCT should be $name and is $strip", $strip eq $name, $failref; rec_log "ROCKY_SUPPORT_PRODUCT should be $name and is $strip", $strip eq $fullname, $failref;
# Test for RH Bugzilla Product Version # Test for Rocky Support Product Version
rec_log "REDHAT_BUGZILLA_PRODUCT_VERSION should be $target and is $content{'REDHAT_BUGZILLA_PRODUCT_VERSION'}", $content{'REDHAT_BUGZILLA_PRODUCT_VERSION'} eq $target, $failref; $strip = strip_marks($content{ROCKY_SUPPORT_PRODUCT_VERSION});
rec_log "ROCKY_SUPPORT_PRODUCT_VERSION should be $target and is $strip", $strip eq $target, $failref;
# VERSION_ID should be 8.4 and is "8.4"
# PLATFORM_ID should be platform: and is platform:el8
# ROCKY_SUPPORT_PRODUCT should be Rocky and is Rocky Linux
# ROCKY_SUPPORT_PRODUCT_VERSION should be and is 8 at /var/lib/openqa/share/tests/rocky/tests/os_release.pm line 95.
# Test for RH Support Product
$strip = strip_marks($content{'REDHAT_SUPPORT_PRODUCT'});
rec_log "REDHAT_SUPPORT_PRODUCT should be $name and is $strip", $strip eq $name, $failref;
# Test for RH Support Product Version
rec_log "REDHAT_SUPPORT_PRODUCT_VERSION should be $target and is $content{'REDHAT_SUPPORT_PRODUCT_VERSION'}", $content{'REDHAT_SUPPORT_PRODUCT_VERSION'} eq $target, $failref;
# Test for Variant but only in case of Server or Workstation
if ($variant ne "generic") {
$strip = strip_marks($content{'VARIANT'});
rec_log "VARIANT should be $variant and is $strip", $strip eq $variant, $failref;
# Test for VARIANT_ID
rec_log "VARIANT_ID should be $variant_id and is $content{'VARIANT_ID'}", $content{'VARIANT_ID'} eq $variant_id, $failref;
}
else {
print "VARIANT was not tested because the compose is not Workstation or Server Edition.\n";
print "VARIANT_ID was not tested because the compose is not Workstation or Server Edition.\n";
}
# Check for fails, count them, collect their messages and die if something was found. # Check for fails, count them, collect their messages and die if something was found.
my $failcount = scalar @fails; my $failcount = scalar @fails;

36
tests/rocky_release.pm Normal file
View File

@ -0,0 +1,36 @@
use base "installedtest";
use strict;
use testapi;
use utils;
# This test checks that Rocky release is correctly described in /etc/rocky-release file.
# The content of the file should be: "Rocky Linux release <version> (<code_name>)"
# where "version" is a number of the current Rocky Linux version and "code_name" is the
# code_name for the release.
# At such time we are building the next release that has a new code_name we'll need
# to decide how to implement detection in rocky_release.pm.
# To maintain simplicity (at least initially) we will explicitly define our code_name
# directly. If RAWREL is required in other tests it should be defined during POST or
# in tests to be the same as VERSION.
sub run {
my $self = shift;
# Version as defined in the VERSION variable.
my $expectver = get_var('VERSION');
# Code Name as defined in the CODENAME variable or default.
my $code_name = get_var('CODENAME', "Green Obsidian");
# Create the expected content of the release file
# and compare it with its real counterpart.
my $expected = "Rocky Linux release $expectver ($code_name)";
validate_script_output 'cat /etc/rocky-release', sub { $_ eq $expected };
}
sub test_flags {
return {always_rollback => 1};
}
1;
# vim: set sw=4 et:

View File

@ -6,6 +6,8 @@ use cockpit;
sub run { sub run {
my $self = shift; my $self = shift;
assert_script_run 'dnf -y groupinstall "Headless Management"', 300;
assert_script_run 'systemctl enable --now cockpit.socket';
# check cockpit appears to be enabled and running and firewall is setup # check cockpit appears to be enabled and running and firewall is setup
assert_script_run 'systemctl is-enabled cockpit.socket'; assert_script_run 'systemctl is-enabled cockpit.socket';
assert_script_run 'systemctl is-active cockpit.socket'; assert_script_run 'systemctl is-active cockpit.socket';