From: Nick Rosbrook Date: Fri, 26 Jun 2026 14:00:21 +0000 (-0400) Subject: test: reduce number of disks in TEST-64-UDEV-STORAGE-simultaneous_events on Debian... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2e89b19aa1f2ac92d62857df94e32b8096bf283c;p=thirdparty%2Fsystemd.git test: reduce number of disks in TEST-64-UDEV-STORAGE-simultaneous_events on Debian/Ubuntu This test never finishes in Ubuntu autopkgtest with the current values, and is currently skipped all together on Debian. When running on either, reduce the number of disks to make the test more reliable. --- diff --git a/test/units/TEST-64-UDEV-STORAGE.sh b/test/units/TEST-64-UDEV-STORAGE.sh index afab7d4ff4b..1806abfd838 100755 --- a/test/units/TEST-64-UDEV-STORAGE.sh +++ b/test/units/TEST-64-UDEV-STORAGE.sh @@ -386,10 +386,12 @@ EOF } testcase_simultaneous_events_1() { - local disk expected i iterations link num_part part partscript rule target timeout + local disk expected i iterations link num_disks num_part part partscript prio_disk_index0 prio_disk_index1 rule reduce_num_disks target timeout local -a devices symlinks running - if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + reduce_num_disks="${1:-0}" + + if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" || "$reduce_num_disks" -eq 1 ]]; then num_part=2 iterations=10 timeout=240 @@ -399,7 +401,18 @@ testcase_simultaneous_events_1() { timeout=60 fi - for disk in {0..9}; do + # NOTE: num_disks must be even for the later test logic to remain correct. + if [[ "$reduce_num_disks" -eq 1 ]]; then + num_disks=4 + prio_disk_index0=3 + prio_disk_index1=2 + else + num_disks=10 + prio_disk_index0=5 + prio_disk_index1=4 + fi + + for ((disk = 0; disk < num_disks; disk++)); do link="/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_deadbeeftest${disk}" target="$(readlink -f "$link")" if [[ ! -b "$target" ]]; then @@ -425,13 +438,13 @@ EOF rule=/run/udev/rules.d/50-test.rules mkdir -p "${rule%/*}" cat >"$rule" <&2 "ERROR: symlink '/dev/disk/by-partlabel/test${part}' points to '$target' but '$expected' was expected" @@ -481,7 +494,7 @@ EOF helper_check_device_units # Cleanup and check if unnecessary devlinks are removed. - for disk in {0..9}; do + for ((disk = 0; disk < num_disks; disk++)); do udevadm lock --timeout="$timeout" --device="${devices[$disk]}" sfdisk -q --delete "${devices[$disk]}" || : done udevadm settle --timeout="$timeout" @@ -494,14 +507,16 @@ EOF } testcase_simultaneous_events_2() { - local disk i iterations link num_part part script_dir target timeout + local disk i iterations link num_disks num_part part script_dir reduce_num_disks target timeout local -a devices running + reduce_num_disks="${1:-0}" + script_dir="$(mktemp --directory "/tmp/test-udev-storage.script.XXXXXXXXXX")" # shellcheck disable=SC2064 trap "rm -rf '$script_dir'" RETURN - if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" ]]; then + if [[ -v ASAN_OPTIONS || "$(systemd-detect-virt -v)" == "qemu" || "$reduce_num_disks" -eq 1 ]]; then num_part=10 iterations=2 timeout=300 @@ -511,7 +526,13 @@ testcase_simultaneous_events_2() { timeout=200 fi - for disk in {0..9}; do + if [[ "$reduce_num_disks" -eq 1 ]]; then + num_disks=4 + else + num_disks=10 + fi + + for ((disk = 0; disk < num_disks; disk++)); do link="/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_deadbeeftest${disk}" target="$(readlink -f "$link")" if [[ ! -b "$target" ]]; then @@ -616,15 +637,16 @@ EOF } testcase_simultaneous_events() { + local reduce_num_disks + . /etc/os-release - if [[ "$ID" == "debian" ]]; then - # See https://github.com/systemd/systemd/issues/39552 - echo "Simultaneous events test cases are not working on Debian, skipping the test" | tee --append /skipped - exit 77 + reduce_num_disks=0 + if [[ "$ID" == "ubuntu" || "$ID" == "debian" ]]; then + reduce_num_disks=1 fi - testcase_simultaneous_events_1 - testcase_simultaneous_events_2 + testcase_simultaneous_events_1 "$reduce_num_disks" + testcase_simultaneous_events_2 "$reduce_num_disks" testcase_simultaneous_events_3 }