summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichal Sekletár <msekleta@redhat.com>2020-04-30 23:22:08 +0200
committerMichal Sekletár <msekleta@redhat.com>2020-06-05 11:09:21 +0200
commit3611ed73780b87e11ae00fb410750f2193ca4a42 (patch)
treefc0e108ed7e4e494178d9373a40ecb19cb62d950 /test
parente209926778267cbd3e09ed8137bf45b7f370aed0 (diff)
downloadsystemd-3611ed73780b87e11ae00fb410750f2193ca4a42.tar.gz
test: add integration test for udev event timeout
Note that run_test() calls coredumpctl in a loop because in certain environments (1 vCPU unaccelerated QEMU VM) it might take quite a while to process the coredump.
Diffstat (limited to 'test')
l---------test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile1
-rwxr-xr-xtest/TEST-49-UDEV-EVENT-TIMEOUT/test.sh8
-rw-r--r--test/units/testsuite-49.service6
-rwxr-xr-xtest/units/testsuite-49.sh47
4 files changed, 62 insertions, 0 deletions
diff --git a/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile b/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile
new file mode 120000
index 0000000000..e9f93b1104
--- /dev/null
+++ b/test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile
@@ -0,0 +1 @@
+../TEST-01-BASIC/Makefile \ No newline at end of file
diff --git a/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh b/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh
new file mode 100755
index 0000000000..249d8a22ae
--- /dev/null
+++ b/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+set -e
+
+TEST_DESCRIPTION="test udev's event-timeout and timeout-signal options"
+TEST_NO_NSPAWN=1
+. $TEST_BASE_DIR/test-functions
+
+do_test "$@" 49
diff --git a/test/units/testsuite-49.service b/test/units/testsuite-49.service
new file mode 100644
index 0000000000..f47177106f
--- /dev/null
+++ b/test/units/testsuite-49.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=TEST-49-UDEV-EVENT-TIMEOUT
+
+[Service]
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
+Type=oneshot
diff --git a/test/units/testsuite-49.sh b/test/units/testsuite-49.sh
new file mode 100755
index 0000000000..ffa9801644
--- /dev/null
+++ b/test/units/testsuite-49.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+set -ex
+
+test_rule="/run/udev/rules.d/49-test.rules"
+
+setup() {
+ mkdir -p "${test_rule%/*}"
+ cp -f /etc/udev/udev.conf /etc/udev/udev.conf.bckp
+ echo 'KERNEL=="lo", SUBSYSTEM=="net", PROGRAM=="/bin/sleep 60"' > "${test_rule}"
+ echo "event_timeout=30" >> /etc/udev/udev.conf
+ echo "timeout_signal=SIGABRT" >> /etc/udev/udev.conf
+
+ systemctl restart systemd-udevd.service
+}
+
+teardown() {
+ set +e
+
+ mv -f /etc/udev/udev.conf.bckp /etc/udev/udev.conf
+ rm -f "$test_rule"
+ systemctl restart systemd-udevd.service
+}
+
+run_test() {
+ since="$(date +%T)"
+
+ echo add > /sys/class/net/lo/uevent
+
+ for n in {1..20}; do
+ sleep 5
+ if coredumpctl --since "$since" --no-legend --no-pager | grep /bin/udevadm ; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+trap teardown EXIT
+
+setup
+run_test
+
+echo OK > /testok
+
+exit 0