From 5592608bdcb8ba8909f7e65274ec040380876ae4 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 3 Jan 2024 04:23:26 +0900 Subject: [PATCH] test: update test case for failed udev event --- test/units/testsuite-17.03.sh | 59 ++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/test/units/testsuite-17.03.sh b/test/units/testsuite-17.03.sh index 9af706fae16..d19d85074f5 100755 --- a/test/units/testsuite-17.03.sh +++ b/test/units/testsuite-17.03.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash # SPDX-License-Identifier: LGPL-2.1-or-later -set -ex +set -eux +TMPDIR= TEST_RULE="/run/udev/rules.d/49-test.rules" KILL_PID= @@ -10,8 +11,15 @@ setup() { [[ -e /etc/udev/udev.conf ]] && cp -f /etc/udev/udev.conf /etc/udev/udev.conf.bak cat >"${TEST_RULE}" </etc/udev/udev.conf <"$TMPDIR"/monitor.txt & + KILL_PID="$!" + + SYSTEMD_LOG_LEVEL=debug udevadm trigger --verbose --action add /dev/null + + for _ in {1..40}; do + if grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt; then + sleep .5 + kill "$KILL_PID" + KILL_PID= + + cat "$TMPDIR"/monitor.txt + (! grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt) + (! grep -q 'UDEV_WORKER_SIGNAL=6' "$TMPDIR"/monitor.txt) + (! grep -q 'UDEV_WORKER_SIGNAL_NAME=ABRT' "$TMPDIR"/monitor.txt) + grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt + rm -rf "$TMPDIR" + return 0 + fi + sleep .5 + done + + return 1 +} - since="$(date '+%F %T')" +run_test_killed() { + local killed= TMPDIR=$(mktemp -d -p /tmp udev-tests.XXXXXX) udevadm monitor --udev --property --subsystem-match=mem >"$TMPDIR"/monitor.txt & KILL_PID="$!" + rm -f /tmp/test-udev-marker SYSTEMD_LOG_LEVEL=debug udevadm trigger --verbose --action add /dev/null for _ in {1..40}; do - if coredumpctl --since "$since" --no-legend --no-pager | grep /bin/udevadm ; then + if [[ -z "$killed" ]]; then + if [[ -e /tmp/test-udev-marker ]]; then + killall --signal ABRT --regexp udev-worker + killed=1 + fi + elif grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt; then + sleep .5 kill "$KILL_PID" KILL_PID= @@ -55,6 +95,8 @@ run_test() { grep -q 'UDEV_WORKER_FAILED=1' "$TMPDIR"/monitor.txt grep -q 'UDEV_WORKER_SIGNAL=6' "$TMPDIR"/monitor.txt grep -q 'UDEV_WORKER_SIGNAL_NAME=ABRT' "$TMPDIR"/monitor.txt + (! grep -q 'PROGRAM_RESULT=KILLED' "$TMPDIR"/monitor.txt) + rm -rf "$TMPDIR" return 0 fi sleep .5 @@ -66,6 +108,7 @@ run_test() { trap teardown EXIT setup -run_test +run_test_timeout +run_test_killed exit 0 -- 2.47.3