1
0
mirror of https://github.com/systemd/systemd.git synced 2025-08-24 09:49:49 +03:00

test: replace helper_wait_for_dev() with 'udevadm wait'

This commit is contained in:
Yu Watanabe
2022-03-26 05:38:18 +09:00
parent aa2b0d8d29
commit e529abe24d

View File

@ -41,23 +41,6 @@ helper_check_device_symlinks() {(
done < <(find "${paths[@]}" -type l) done < <(find "${paths[@]}" -type l)
)} )}
# Wait for a specific device link to appear
# Arguments:
# $1 - device path
# $2 - number of retries (default: 10)
helper_wait_for_dev() {
local dev="${1:?}"
local ntries="${2:-10}"
local i
for ((i = 0; i < ntries; i++)); do
test ! -e "$dev" || return 0
sleep .2
done
return 1
}
# Wrapper around `helper_wait_for_lvm_activate()` and `helper_wait_for_pvscan()` # Wrapper around `helper_wait_for_lvm_activate()` and `helper_wait_for_pvscan()`
# functions to cover differences between pre and post lvm 2.03.14, which introduced # functions to cover differences between pre and post lvm 2.03.14, which introduced
# a new way of vgroup autoactivation # a new way of vgroup autoactivation
@ -583,15 +566,7 @@ testcase_iscsi_lvm() {
# Configure the iSCSI initiator # Configure the iSCSI initiator
iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover
iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login
udevadm settle udevadm wait --settle --timeout=30 "${expected_symlinks[@]}"
# Check if all device symlinks are valid and if all expected device symlinks exist
for link in "${expected_symlinks[@]}"; do
# We need to do some active waiting anyway, as it may take kernel a bit
# to attach the newly connected SCSI devices
helper_wait_for_dev "$link"
test -e "$link"
done
udevadm settle
helper_check_device_symlinks helper_check_device_symlinks
# Cleanup # Cleanup
iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --logout iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --logout
@ -626,15 +601,7 @@ testcase_iscsi_lvm() {
# Configure the iSCSI initiator # Configure the iSCSI initiator
iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover
iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login
udevadm settle udevadm wait --settle --timeout=30 "${expected_symlinks[@]}"
# Check if all device symlinks are valid and if all expected device symlinks exist
for link in "${expected_symlinks[@]}"; do
# We need to do some active waiting anyway, as it may take kernel a bit
# to attach the newly connected SCSI devices
helper_wait_for_dev "$link"
test -e "$link"
done
udevadm settle
helper_check_device_symlinks helper_check_device_symlinks
# Add all iSCSI devices into a LVM volume group, create two logical volumes, # Add all iSCSI devices into a LVM volume group, create two logical volumes,
# and check if necessary symlinks exist (and are valid) # and check if necessary symlinks exist (and are valid)
@ -658,24 +625,16 @@ testcase_iscsi_lvm() {
# "Reset" the DM state, since we yanked the backing storage from under the LVM, # "Reset" the DM state, since we yanked the backing storage from under the LVM,
# so the currently active VGs/LVs are invalid # so the currently active VGs/LVs are invalid
dmsetup remove_all --deferred dmsetup remove_all --deferred
udevadm settle
# The LVM and iSCSI related symlinks should be gone # The LVM and iSCSI related symlinks should be gone
test ! -e "/dev/$vgroup" udevadm wait --settle --timeout=30 --removed "/dev/$vgroup" "/dev/disk/by-label/mylvpart1" "${expected_symlinks[@]}"
test ! -e "/dev/disk/by-label/mylvpart1"
for link in "${expected_symlinks[@]}"; do
test ! -e "$link"
done
helper_check_device_symlinks "/dev/disk" helper_check_device_symlinks "/dev/disk"
# Reconnect the iSCSI devices and check if everything get detected correctly # Reconnect the iSCSI devices and check if everything get detected correctly
iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover iscsiadm --mode discoverydb --type sendtargets --portal "$target_ip" --discover
iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login iscsiadm --mode node --targetname "$target_name" --portal "$target_ip:$target_port" --login
udevadm settle udevadm wait --settle --timeout=30 "${expected_symlinks[@]}"
for link in "${expected_symlinks[@]}"; do for link in "${expected_symlinks[@]}"; do
helper_wait_for_dev "$link"
helper_wait_for_vgroup "$link" "$vgroup" helper_wait_for_vgroup "$link" "$vgroup"
test -e "$link"
done done
udevadm settle
test -e "/dev/$vgroup/mypart1" test -e "/dev/$vgroup/mypart1"
test -e "/dev/$vgroup/mypart2" test -e "/dev/$vgroup/mypart2"
test -e "/dev/disk/by-label/mylvpart1" test -e "/dev/disk/by-label/mylvpart1"