From 35497c7c3369718cae08bb5dcf95dd487d214008 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Fri, 10 Sep 2021 17:16:51 +0200 Subject: [PATCH] test: coverage for #19946 --- test/TEST-64-UDEV-STORAGE/test.sh | 16 +++++++++++++ test/units/testsuite-64.sh | 37 +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/test/TEST-64-UDEV-STORAGE/test.sh b/test/TEST-64-UDEV-STORAGE/test.sh index accbe092554..2b9d0735e34 100755 --- a/test/TEST-64-UDEV-STORAGE/test.sh +++ b/test/TEST-64-UDEV-STORAGE/test.sh @@ -230,6 +230,22 @@ EOF test_run_one "${1:?}" } +# Test case for issue https://github.com/systemd/systemd/issues/19946 +testcase_simultaneous_events() { + local qemu_opts=("-device virtio-scsi-pci,id=scsi") + local partdisk="${TESTDIR:?}/simultaneousevents.img" + + dd if=/dev/zero of="$partdisk" bs=1M count=110 + qemu_opts+=( + "-device scsi-hd,drive=drive1,serial=deadbeeftest" + "-drive format=raw,cache=unsafe,file=$partdisk,if=none,id=drive1" + ) + + KERNEL_APPEND="systemd.setenv=TEST_FUNCTION_NAME=${FUNCNAME[0]} ${USER_KERNEL_APPEND:-}" + QEMU_OPTIONS="${qemu_opts[*]} ${USER_QEMU_OPTIONS:-}" + test_run_one "${1:?}" +} + # Allow overriding which tests should be run from the "outside", useful for manual # testing (make -C test/... TESTCASES="testcase1 testcase2") if [[ -v "TESTCASES" && -n "$TESTCASES" ]]; then diff --git a/test/units/testsuite-64.sh b/test/units/testsuite-64.sh index 8e8f27d23c3..ab688207bf3 100755 --- a/test/units/testsuite-64.sh +++ b/test/units/testsuite-64.sh @@ -140,6 +140,43 @@ EOF rm -fr "$mpoint" } +testcase_simultaneous_events() { + local blockdev part partscript + + blockdev="$(readlink -f /dev/disk/by-id/scsi-*_deadbeeftest)" + partscript="$(mktemp)" + + if [[ ! -b "$blockdev" ]]; then + echo "ERROR: failed to find the test SCSI block device" + return 1 + fi + + cat >"$partscript" </failed udevadm settle