Create testcase to recreate Btrfs layout using Blivet and preserve home.

This PR uses the Anaconda Blivet partitioning to recreate a partition
layout while preserving the content of the /home subvolume.

It also adds the postinstall test to check that the home has been
preserved.
This commit is contained in:
Lukáš Růžička 2020-12-10 13:30:59 +01:00
parent 78af6bfb05
commit ecca7d3c01
32 changed files with 372 additions and 0 deletions

View File

@ -0,0 +1,16 @@
{
"area": [
{
"ypos": 435,
"height": 24,
"width": 215,
"type": "match",
"xpos": 413
}
],
"properties": [],
"tags": [
"LANGUAGE-english",
"anaconda_blivet_mountpoint"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 413,
"ypos": 435,
"width": 158,
"height": 22,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_mountpoint_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 342,
"ypos": 307,
"width": 112,
"height": 18,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_boot_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 277,
"ypos": 249,
"width": 18,
"height": 15,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_delete"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 341,
"ypos": 304,
"width": 104,
"height": 21,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_efi_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 332,
"ypos": 309,
"height": 16,
"width": 49,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_format_button"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 264,
"height": 19,
"ypos": 330,
"width": 40,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_home_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 338,
"ypos": 331,
"height": 19,
"width": 114,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_inactive_boot"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"height": 17,
"width": 108,
"ypos": 308,
"type": "match",
"xpos": 340
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_inactive_efi"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 262,
"ypos": 331,
"width": 58,
"height": 17,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_inactive_home"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 357,
"ypos": 446,
"width": 66,
"height": 20,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_name_selected"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 286,
"width": 36,
"height": 18,
"ypos": 377,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_root_exists"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 265,
"width": 36,
"height": 18,
"ypos": 353,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_root_exists"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,15 @@
{
"area": [
{
"xpos": 331,
"ypos": 359,
"width": 101,
"height": 19,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_part_setmountpoint"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 560,
"ypos": 426,
"width": 105,
"height": 24,
"type": "match"
}
],
"properties": [],
"tags": [
"anaconda_blivet_btn_setmountpoint",
"anaconda_blivet_part_setmountpoint_button"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -932,6 +932,30 @@
"ROOT_PASSWORD": "weakpassword"
}
},
"install_blivet_btrfs_preserve_home": {
"profiles": {
"fedora-Server-dvd-iso-ppc64le-*-ppc64le": 40,
"fedora-Server-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": {
"fedora-Server-dvd-iso-aarch64-*-aarch64": 40,
"fedora-Server-dvd-iso-x86_64-*-uefi": 41
},
"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_with_swap": {
"profiles": {
"fedora-universal-aarch64-*-aarch64": 50,

View File

@ -0,0 +1,121 @@
use base "anacondatest";
use strict;
use utils;
use testapi;
use anaconda;
sub run {
my $self = shift;
# Go to INSTALLATION DESTINATION and ensure the disk is selected.
# Because PARTITIONING starts with 'custom_blivet', this will select blivet-gui.
select_disks();
assert_and_click "anaconda_spoke_done";
if (get_var("UEFI")) {
# if we're running on UEFI, let us reformat the UEFI first
# Select the UEFI partition if it is not selected by default
if (not (check_screen "anaconda_blivet_part_efi_selected", 30)) {
assert_and_click "anaconda_blivet_part_inactive_efi";
wait_still_screen 5;
}
# Go to the partition settings
assert_and_click "anaconda_blivet_part_edit";
# Select the Format option
assert_and_click "anaconda_blivet_part_format";
if (not (check_screen "anaconda_blivet_part_fs_efi_filesystem_selected", 30)) {
assert_and_click "anaconda_blivet_part_fs_select";
assert_and_click "anaconda_blivet_part_fs_efi_filesystem";
}
# Select the mountpoint field
send_key_until_needlematch("anaconda_blivet_mountpoint_selected", "tab", 3, 5);
# Fill in the mountpoint
type_very_safely "/boot/efi";
# Confirm the settings
assert_and_click "anaconda_blivet_part_format_button";
}
# Reformat the /boot partition
if (check_screen "anaconda_blivet_part_boot_selected", 30) {
assert_and_click "anaconda_blivet_part_boot_selected";
}
else {
assert_and_click "anaconda_blivet_part_inactive_boot";
wait_still_screen 5;
}
# Go to the partition settings
assert_and_click "anaconda_blivet_part_edit";
# Select the Format option
assert_and_click "anaconda_blivet_part_format";
# Open the filesystem types and select ext4, if not selected
if (not (check_screen "anaconda_blivet_part_fs_ext4_selected",30)) {
assert_and_click "anaconda_blivet_part_fs_select";
assert_and_click "anaconda_blivet_part_fs_ext4";
}
# Select the mountpoint field
send_key_until_needlematch("anaconda_blivet_mountpoint_selected", "tab", 3, 5);
# Fill in the mountpoint
type_very_safely "/boot";
# Confirm the settings
assert_and_click "anaconda_blivet_part_format_button";
# Select the BTRFS part
assert_and_click "anaconda_blivet_volumes_icon";
# Select the home partition
if (not (check_screen "anaconda_blivet_part_home_selected")) {
assert_and_click "anaconda_blivet_part_inactive_home";
}
# Go to the partition settings
assert_and_click "anaconda_blivet_part_edit";
# Select the Set mountpoint option
assert_and_click "anaconda_blivet_part_setmountpoint";
# Type the mountpoint
type_very_safely "/home";
# Confirm
assert_and_click "anaconda_blivet_part_setmountpoint_button";
# Wait some time for the pane to settle, without this,
# the needle boolean check will fade too fast without actually
# taking any effect.
sleep 5;
# While there are some root subvolumes (it seems that there can be more than one)
# continue to delete them.
while (check_screen "anaconda_blivet_part_root_exists", 2) {
assert_and_click "anaconda_blivet_part_root_exists";
assert_and_click "anaconda_blivet_part_delete";
assert_and_click "anaconda_blivet_btn_ok";
sleep 5;
}
# Add new root partition
assert_and_click "anaconda_blivet_part_add";
# Select the name textfield
send_key_until_needlematch("anaconda_blivet_part_name_selected", "tab", 3, 5);
# type the new name
type_very_safely "newroot";
# Go to next field
send_key "tab";
# Type the mountpoint
type_very_safely "/";
# Confirm settings
assert_and_click "anaconda_blivet_btn_ok";
# Confirm everything and close the hub
assert_and_click "anaconda_spoke_done";
assert_and_click "anaconda_part_accept_changes";
# Anaconda hub
assert_screen "anaconda_main_hub", 300; #
}
sub test_flags {
return { fatal => 1 };
}
1;
# vim: set sw=4 et: