]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: merge udev tests
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 5 Mar 2021 09:36:04 +0000 (18:36 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 5 Mar 2021 09:36:04 +0000 (18:36 +0900)
40 files changed:
test/TEST-17-UDEV-WANTS/test.sh [deleted file]
test/TEST-17-UDEV/Makefile [moved from test/TEST-17-UDEV-WANTS/Makefile with 100% similarity]
test/TEST-17-UDEV/test.sh [moved from test/TEST-29-UDEV-ID_RENAMING/test.sh with 61% similarity]
test/TEST-29-PORTABLE/Makefile [moved from test/TEST-29-UDEV-ID_RENAMING/Makefile with 100% similarity]
test/TEST-29-PORTABLE/test.sh [moved from test/TEST-58-PORTABLE/test.sh with 97% similarity]
test/TEST-49-RUNTIME-BIND-PATHS/Makefile [moved from test/TEST-49-UDEV-EVENT-TIMEOUT/Makefile with 100% similarity]
test/TEST-49-RUNTIME-BIND-PATHS/test.sh [moved from test/TEST-57-RUNTIME-BIND-PATHS/test.sh with 89% similarity]
test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh [deleted file]
test/TEST-55-OOMD/Makefile [moved from test/TEST-55-UDEV-TAGS/Makefile with 100% similarity]
test/TEST-55-OOMD/test.sh [moved from test/TEST-56-OOMD/test.sh with 98% similarity]
test/TEST-55-UDEV-TAGS/test.sh [deleted file]
test/TEST-56-OOMD/Makefile [deleted symlink]
test/TEST-57-RUNTIME-BIND-PATHS/Makefile [deleted symlink]
test/TEST-58-PORTABLE/Makefile [deleted symlink]
test/units/testsuite-17.01.sh [new file with mode: 0755]
test/units/testsuite-17.02.sh [new file with mode: 0755]
test/units/testsuite-17.03.sh [new file with mode: 0755]
test/units/testsuite-17.04.sh [new file with mode: 0755]
test/units/testsuite-17.service
test/units/testsuite-17.sh
test/units/testsuite-29.service
test/units/testsuite-29.sh
test/units/testsuite-49-namespaced.service [moved from test/units/testsuite-57-namespaced.service with 89% similarity]
test/units/testsuite-49-non-namespaced.service [moved from test/units/testsuite-57-non-namespaced.service with 100% similarity]
test/units/testsuite-49.service
test/units/testsuite-49.sh
test/units/testsuite-55-slowgrowth.sh [moved from test/units/testsuite-56-slowgrowth.sh with 100% similarity]
test/units/testsuite-55-testbloat.service [moved from test/units/testsuite-56-testbloat.service with 68% similarity]
test/units/testsuite-55-testchill.service [moved from test/units/testsuite-56-testchill.service with 68% similarity]
test/units/testsuite-55-testmunch.service [new file with mode: 0644]
test/units/testsuite-55-workload.slice [moved from test/units/testsuite-56-workload.slice with 100% similarity]
test/units/testsuite-55.service
test/units/testsuite-55.sh
test/units/testsuite-56-testmunch.service [deleted file]
test/units/testsuite-56.service [deleted file]
test/units/testsuite-56.sh [deleted file]
test/units/testsuite-57.service [deleted file]
test/units/testsuite-57.sh [deleted file]
test/units/testsuite-58.service [deleted file]
test/units/testsuite-58.sh [deleted file]

diff --git a/test/TEST-17-UDEV-WANTS/test.sh b/test/TEST-17-UDEV-WANTS/test.sh
deleted file mode 100755 (executable)
index 5b8f22c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-TEST_DESCRIPTION="UDEV SYSTEMD_WANTS property"
-TEST_NO_NSPAWN=1
-
-. $TEST_BASE_DIR/test-functions
-QEMU_TIMEOUT=300
-
-do_test "$@" 17
similarity index 61%
rename from test/TEST-29-UDEV-ID_RENAMING/test.sh
rename to test/TEST-17-UDEV/test.sh
index c918e5af6aaed39021904a5bb972a132ccf43a45..b13ae0aa78267ff69c644207aba541fbd8a6babd 100755 (executable)
@@ -1,11 +1,11 @@
 #!/usr/bin/env bash
 set -e
-TEST_DESCRIPTION="UDEV ID_RENAMING property"
-IMAGE_NAME="udev-id-renaming"
+TEST_DESCRIPTION="UDEV"
+IMAGE_NAME="udev"
 TEST_NO_NSPAWN=1
 
 . $TEST_BASE_DIR/test-functions
-QEMU_TIMEOUT=300
+QEMU_TIMEOUT=500
 
 test_append_files() {
     (
@@ -14,4 +14,4 @@ test_append_files() {
     )
 }
 
-do_test "$@" 29
+do_test "$@" 17
similarity index 97%
rename from test/TEST-58-PORTABLE/test.sh
rename to test/TEST-29-PORTABLE/test.sh
index 98e697962e324c777b1ee06c1e914dc5d5cdb021..801e74c13d828a4e109fc065ea1e8c69811dad9d 100755 (executable)
@@ -24,4 +24,4 @@ test_append_files() {
     )
 }
 
-do_test "$@" 58
+do_test "$@" 29
similarity index 89%
rename from test/TEST-57-RUNTIME-BIND-PATHS/test.sh
rename to test/TEST-49-RUNTIME-BIND-PATHS/test.sh
index 76d1b496adbf88652bdaa2443272b63f75e54ab1..ff24a4f254efc7afc2a043225ccfcbb9b632f814 100755 (executable)
@@ -4,4 +4,4 @@ set -e
 TEST_DESCRIPTION="test adding new BindPaths while unit is already running"
 . $TEST_BASE_DIR/test-functions
 
-do_test "$@" 57
+do_test "$@" 49
diff --git a/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh b/test/TEST-49-UDEV-EVENT-TIMEOUT/test.sh
deleted file mode 100755 (executable)
index 249d8a2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/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
similarity index 98%
rename from test/TEST-56-OOMD/test.sh
rename to test/TEST-55-OOMD/test.sh
index 55b0d1dafdb238ef7e375ebf00578f23221a08ac..121aa8d56e9393d1cb615354f6239f76375c353f 100755 (executable)
@@ -45,4 +45,4 @@ check_result_qemu() {
     return $ret
 }
 
-do_test "$@" 56
+do_test "$@" 55
diff --git a/test/TEST-55-UDEV-TAGS/test.sh b/test/TEST-55-UDEV-TAGS/test.sh
deleted file mode 100755 (executable)
index 325d70f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-set -e
-TEST_DESCRIPTION="UDEV tags management"
-TEST_NO_NSPAWN=1
-
-. $TEST_BASE_DIR/test-functions
-
-do_test "$@" 55
diff --git a/test/TEST-56-OOMD/Makefile b/test/TEST-56-OOMD/Makefile
deleted file mode 120000 (symlink)
index e9f93b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/TEST-57-RUNTIME-BIND-PATHS/Makefile b/test/TEST-57-RUNTIME-BIND-PATHS/Makefile
deleted file mode 120000 (symlink)
index e9f93b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/TEST-58-PORTABLE/Makefile b/test/TEST-58-PORTABLE/Makefile
deleted file mode 120000 (symlink)
index e9f93b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/units/testsuite-17.01.sh b/test/units/testsuite-17.01.sh
new file mode 100755 (executable)
index 0000000..573ad41
--- /dev/null
@@ -0,0 +1,72 @@
+#!/usr/bin/env bash
+set -ex
+set -o pipefail
+
+mkdir -p /run/udev/rules.d/
+
+rm -f /run/udev/rules.d/50-testsuite.rules
+udevadm control --reload
+udevadm trigger /dev/sda
+
+while : ; do
+    (
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
+        systemctl show -p WantedBy foobar.service | grep -q -v sda
+        systemctl show -p WantedBy waldo.service | grep -q -v sda
+    ) && break
+
+    sleep .5
+done
+
+cat > /run/udev/rules.d/50-testsuite.rules <<EOF
+ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sda", ENV{SYSTEMD_WANTS}="foobar.service"
+EOF
+udevadm control --reload
+udevadm trigger /dev/sda
+
+while : ; do
+    (
+        udevadm info /dev/sda | grep -q SYSTEMD_WANTS=foobar.service
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
+        systemctl show -p WantedBy foobar.service | grep -q sda
+        systemctl show -p WantedBy waldo.service | grep -q -v sda
+    ) && break
+
+    sleep .5
+done
+
+cat > /run/udev/rules.d/50-testsuite.rules <<EOF
+ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sda", ENV{SYSTEMD_WANTS}="waldo.service"
+EOF
+udevadm control --reload
+udevadm trigger /dev/sda
+
+while : ; do
+    (
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
+        udevadm info /dev/sda | grep -q SYSTEMD_WANTS=waldo.service
+        systemctl show -p WantedBy foobar.service | grep -q -v sda
+        systemctl show -p WantedBy waldo.service | grep -q sda
+    ) && break
+
+    sleep .5
+done
+
+rm /run/udev/rules.d/50-testsuite.rules
+
+udevadm control --reload
+udevadm trigger /dev/sda
+
+while : ; do
+    (
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
+        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
+        systemctl show -p WantedBy foobar.service | grep -q -v sda
+        systemctl show -p WantedBy waldo.service | grep -q -v sda
+    ) && break
+
+    sleep .5
+done
+
+exit 0
diff --git a/test/units/testsuite-17.02.sh b/test/units/testsuite-17.02.sh
new file mode 100755 (executable)
index 0000000..c21fcc7
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+set -ex
+set -o pipefail
+
+mkdir -p /run/udev/rules.d/
+
+cat > /run/udev/rules.d/50-testsuite.rules <<EOF
+ACTION=="remove", GOTO="lo_end"
+
+SUBSYSTEM=="net", KERNEL=="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/net/devices/lo"
+
+ACTION!="change", GOTO="lo_end"
+
+SUBSYSTEM=="net", KERNEL=="lo", ENV{ID_RENAMING}="1"
+
+LABEL="lo_end"
+EOF
+
+udevadm control --log-priority=debug --reload --timeout=600
+udevadm trigger --action=add --settle /sys/devices/virtual/net/lo
+udevadm info /sys/devices/virtual/net/lo
+sleep 1
+STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
+[[ $STATE == "active" ]] || exit 1
+
+udevadm trigger --action=change --settle /sys/devices/virtual/net/lo
+udevadm info /sys/devices/virtual/net/lo
+sleep 1
+STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
+[[ $STATE == "inactive" ]] || exit 1
+
+udevadm trigger --action=move --settle /sys/devices/virtual/net/lo
+udevadm info /sys/devices/virtual/net/lo
+sleep 1
+STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
+[[ $STATE == "active" ]] || exit 1
+
+rm -f /run/udev/rules.d/50-testsuite.rules
+udevadm control --reload --timeout=600
+
+# test for issue #16967
+
+ip link add hoge type dummy
+udevadm info --wait-for-initialization=10s /sys/devices/virtual/net/hoge
+sleep 1
+if ! systemctl status sys-devices-virtual-net-hoge.device; then exit 1; fi
+if ! systemctl status sys-subsystem-net-devices-hoge.device; then exit 1; fi
+
+ip link set hoge name foobar
+udevadm info --wait-for-initialization=10s /sys/devices/virtual/net/foobar
+sleep 1
+if systemctl status sys-devices-virtual-net-hoge.device; then exit 1; fi
+if systemctl status sys-subsystem-net-devices-hoge.device; then exit 1; fi
+if ! systemctl status sys-devices-virtual-net-foobar.device; then exit 1; fi
+if ! systemctl status sys-subsystem-net-devices-foobar.device; then exit 1; fi
+
+exit 0
diff --git a/test/units/testsuite-17.03.sh b/test/units/testsuite-17.03.sh
new file mode 100755 (executable)
index 0000000..02ac217
--- /dev/null
@@ -0,0 +1,45 @@
+#!/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
+
+exit 0
diff --git a/test/units/testsuite-17.04.sh b/test/units/testsuite-17.04.sh
new file mode 100755 (executable)
index 0000000..c799936
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -ex
+set -o pipefail
+
+mkdir -p /run/udev/rules.d/
+
+! test -f /run/udev/tags/added/c1:3 &&
+    ! test -f /run/udev/tags/changed/c1:3 &&
+    udevadm info /dev/null | grep -q -v 'E: TAGS=.*:added:.*' &&
+    udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
+    udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
+    udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*'
+
+cat > /run/udev/rules.d/50-testsuite.rules <<EOF
+ACTION=="add", SUBSYSTEM=="mem", KERNEL=="null", TAG+="added"
+ACTION=="change", SUBSYSTEM=="mem", KERNEL=="null", TAG+="changed"
+EOF
+
+udevadm control --reload
+udevadm trigger -c add /dev/null
+
+while : ; do
+    test -f /run/udev/tags/added/c1:3 &&
+        ! test -f /run/udev/tags/changed/c1:3 &&
+        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
+        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
+        break
+
+    sleep .5
+done
+
+udevadm control --reload
+udevadm trigger -c change /dev/null
+
+while : ; do
+    test -f /run/udev/tags/added/c1:3 &&
+        test -f /run/udev/tags/changed/c1:3 &&
+        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
+        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:changed:.*' &&
+        break
+
+    sleep .5
+done
+
+udevadm control --reload
+udevadm trigger -c add /dev/null
+
+while : ; do
+    test -f /run/udev/tags/added/c1:3 &&
+        test -f /run/udev/tags/changed/c1:3 &&
+        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
+        udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
+        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
+        break
+
+    sleep .5
+done
+
+exit 0
index ed2017a848620a349b3b2dd5ca045af6a2abddbd..bd6221551c34b5cb7e262abcf342407bceca2e2d 100644 (file)
@@ -1,5 +1,5 @@
 [Unit]
-Description=TEST-17-UDEV-WANTS
+Description=TEST-17-UDEV
 
 [Service]
 ExecStartPre=rm -f /failed /testok
index 7f8740ba3506390a769064677c5fd0c4623a6f24..afce85aceb9bcf11cc3f671538ef4fdf93daf3f1 100755 (executable)
@@ -1,74 +1,13 @@
 #!/usr/bin/env bash
-set -ex
-set -o pipefail
 
-mkdir -p /run/udev/rules.d/
+set -x
+set -e
 
-rm -f /run/udev/rules.d/50-testsuite.rules
-udevadm control --reload
-udevadm trigger /dev/sda
+>/failed
 
-while : ; do
-    (
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
-        systemctl show -p WantedBy foobar.service | grep -q -v sda
-        systemctl show -p WantedBy waldo.service | grep -q -v sda
-    ) && break
-
-    sleep .5
-done
-
-cat > /run/udev/rules.d/50-testsuite.rules <<EOF
-ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sda", ENV{SYSTEMD_WANTS}="foobar.service"
-EOF
-udevadm control --reload
-udevadm trigger /dev/sda
-
-while : ; do
-    (
-        udevadm info /dev/sda | grep -q SYSTEMD_WANTS=foobar.service
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
-        systemctl show -p WantedBy foobar.service | grep -q sda
-        systemctl show -p WantedBy waldo.service | grep -q -v sda
-    ) && break
-
-    sleep .5
+for t in ${0%.sh}.*.sh; do
+    echo "Running $t"; ./$t
 done
 
-cat > /run/udev/rules.d/50-testsuite.rules <<EOF
-ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sda", ENV{SYSTEMD_WANTS}="waldo.service"
-EOF
-udevadm control --reload
-udevadm trigger /dev/sda
-
-while : ; do
-    (
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
-        udevadm info /dev/sda | grep -q SYSTEMD_WANTS=waldo.service
-        systemctl show -p WantedBy foobar.service | grep -q -v sda
-        systemctl show -p WantedBy waldo.service | grep -q sda
-    ) && break
-
-    sleep .5
-done
-
-rm /run/udev/rules.d/50-testsuite.rules
-
-udevadm control --reload
-udevadm trigger /dev/sda
-
-while : ; do
-    (
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=foobar.service
-        udevadm info /dev/sda | grep -q -v SYSTEMD_WANTS=waldo.service
-        systemctl show -p WantedBy foobar.service | grep -q -v sda
-        systemctl show -p WantedBy waldo.service | grep -q -v sda
-    ) && break
-
-    sleep .5
-done
-
-echo OK >/testok
-
-exit 0
+touch /testok
+rm /failed
index 90c2187bd79d63c45e23eaf60c68761f59823d42..900b99f77b96db76f55775a1a8cadbbfe83f790a 100644 (file)
@@ -1,5 +1,5 @@
 [Unit]
-Description=TEST-29-UDEV-ID_RENAMING
+Description=TEST-29-PORTABLE
 
 [Service]
 ExecStartPre=rm -f /failed /testok
index 5c625568953bb88b18280d854afa79349772197d..b5b05b42d9bf40c13a64bb6abf438e19c2fa996b 100755 (executable)
@@ -1,58 +1,67 @@
 #!/usr/bin/env bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
 set -ex
 set -o pipefail
 
-mkdir -p /run/udev/rules.d/
+export SYSTEMD_LOG_LEVEL=debug
 
-cat > /run/udev/rules.d/50-testsuite.rules <<EOF
-ACTION=="remove", GOTO="lo_end"
+portablectl attach --now --runtime /usr/share/minimal_0.raw app0
 
-SUBSYSTEM=="net", KERNEL=="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/net/devices/lo"
+systemctl is-active app0.service
+systemctl is-active app0-foo.service
+set +o pipefail
+set +e
+systemctl is-active app0-bar.service && exit 1
+set -e
+set -o pipefail
+
+portablectl reattach --now --runtime /usr/share/minimal_1.raw app0
+
+systemctl is-active app0.service
+systemctl is-active app0-bar.service
+set +o pipefail
+set +e
+systemctl is-active app0-foo.service && exit 1
+set -e
+set -o pipefail
 
-ACTION!="change", GOTO="lo_end"
+portablectl list | grep -q -F "minimal_1"
 
-SUBSYSTEM=="net", KERNEL=="lo", ENV{ID_RENAMING}="1"
+portablectl detach --now --runtime /usr/share/minimal_1.raw app0
 
-LABEL="lo_end"
-EOF
+portablectl list | grep -q -F "No images."
 
-udevadm control --log-priority=debug --reload --timeout=600
-udevadm trigger --action=add --settle /sys/devices/virtual/net/lo
-udevadm info /sys/devices/virtual/net/lo
-sleep 1
-STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
-[[ $STATE == "active" ]] || exit 1
+# portablectl also works with directory paths rather than images
 
-udevadm trigger --action=change --settle /sys/devices/virtual/net/lo
-udevadm info /sys/devices/virtual/net/lo
-sleep 1
-STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
-[[ $STATE == "inactive" ]] || exit 1
+unsquashfs -dest /tmp/minimal_0 /usr/share/minimal_0.raw
+unsquashfs -dest /tmp/minimal_1 /usr/share/minimal_1.raw
 
-udevadm trigger --action=move --settle /sys/devices/virtual/net/lo
-udevadm info /sys/devices/virtual/net/lo
-sleep 1
-STATE=$(systemctl show --property=ActiveState --value sys-devices-virtual-net-lo.device)
-[[ $STATE == "active" ]] || exit 1
+portablectl attach --copy=symlink --now --runtime /tmp/minimal_0 app0
 
-rm -f /run/udev/rules.d/50-testsuite.rules
-udevadm control --reload --timeout=600
+systemctl is-active app0.service
+systemctl is-active app0-foo.service
+set +o pipefail
+set +e
+systemctl is-active app0-bar.service && exit 1
+set -e
+set -o pipefail
+
+portablectl reattach --now --enable --runtime /tmp/minimal_1 app0
+
+systemctl is-active app0.service
+systemctl is-active app0-bar.service
+set +o pipefail
+set +e
+systemctl is-active app0-foo.service && exit 1
+set -e
+set -o pipefail
 
-# test for issue #16967
+portablectl list | grep -q -F "minimal_1"
 
-ip link add hoge type dummy
-udevadm info --wait-for-initialization=10s /sys/devices/virtual/net/hoge
-sleep 1
-if ! systemctl status sys-devices-virtual-net-hoge.device; then exit 1; fi
-if ! systemctl status sys-subsystem-net-devices-hoge.device; then exit 1; fi
+portablectl detach --now --enable --runtime /tmp/minimal_1 app0
 
-ip link set hoge name foobar
-udevadm info --wait-for-initialization=10s /sys/devices/virtual/net/foobar
-sleep 1
-if systemctl status sys-devices-virtual-net-hoge.device; then exit 1; fi
-if systemctl status sys-subsystem-net-devices-hoge.device; then exit 1; fi
-if ! systemctl status sys-devices-virtual-net-foobar.device; then exit 1; fi
-if ! systemctl status sys-subsystem-net-devices-foobar.device; then exit 1; fi
+portablectl list | grep -q -F "No images."
 
 echo OK > /testok
 
similarity index 89%
rename from test/units/testsuite-57-namespaced.service
rename to test/units/testsuite-49-namespaced.service
index 0abcc4faf44e6018a493af97be7ef4cf929ce5b2..722dbe246d688283f93179a96b08455ca5411452 100644 (file)
@@ -6,7 +6,7 @@ Type=notify
 RemainAfterExit=yes
 MountAPIVFS=yes
 PrivateTmp=yes
-BindPaths=/run/testservice-57-fixed:/tmp/testfile_fixed
+BindPaths=/run/testservice-49-fixed:/tmp/testfile_fixed
 InaccessiblePaths=/run/inaccessible
 ExecStartPre=grep -q -F MARKER_FIXED /tmp/testfile_fixed
 ExecStart=/bin/sh -c 'systemd-notify --ready; while ! grep -q -F MARKER_RUNTIME /tmp/testfile_runtime; do sleep 0.1; done; test ! -f /run/inaccessible/testfile_fixed'
index f47177106fe5c42dfa2ec12f1a59fb654b412b65..9475109ca2cc5b6c8bc92fb10a1057913a66f888 100644 (file)
@@ -1,6 +1,7 @@
 [Unit]
-Description=TEST-49-UDEV-EVENT-TIMEOUT
+Description=TEST-49-RUNTIME-BIND-PATHS
 
 [Service]
+ExecStartPre=rm -f /failed /testok
 ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
 Type=oneshot
index ffa98016446c1f96ffe3d509f0bd5a281b829f8a..07bb20d99c67f5f39e77f62099bc9216e6ad85df 100755 (executable)
@@ -1,46 +1,42 @@
 #!/usr/bin/env bash
-
 set -ex
 
-test_rule="/run/udev/rules.d/49-test.rules"
+echo "MARKER_FIXED" > /run/testservice-49-fixed
+mkdir -p /run/inaccessible
 
-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 start testsuite-49-namespaced.service
 
-    systemctl restart systemd-udevd.service
-}
+# Ensure that inaccessible paths aren't bypassed by the runtime setup
+set +e
+systemctl bind --mkdir testsuite-49-namespaced.service /run/testservice-49-fixed /run/inaccessible/testfile_fixed && exit 1
+set -e
 
-teardown() {
-    set +e
+echo "MARKER_RUNTIME" > /run/testservice-49-runtime
 
-    mv -f /etc/udev/udev.conf.bckp /etc/udev/udev.conf
-    rm -f "$test_rule"
-    systemctl restart systemd-udevd.service
-}
+systemctl bind --mkdir testsuite-49-namespaced.service /run/testservice-49-runtime /tmp/testfile_runtime
 
-run_test() {
-    since="$(date +%T)"
+while systemctl show -P SubState testsuite-49-namespaced.service | grep -q running
+do
+    sleep 0.1
+done
 
-    echo add > /sys/class/net/lo/uevent
+systemctl is-active testsuite-49-namespaced.service
 
-    for n in {1..20}; do
-        sleep 5
-        if coredumpctl --since "$since" --no-legend --no-pager | grep /bin/udevadm ; then
-            return 0
-        fi
-    done
+# Now test that systemctl bind fails when attempted on a non-namespaced unit
+systemctl start testsuite-49-non-namespaced.service
 
-    return 1
-}
+set +e
+systemctl bind --mkdir testsuite-49-non-namespaced.service /run/testservice-49-runtime /tmp/testfile_runtime && exit 1
+set -e
 
-trap teardown EXIT
+while systemctl show -P SubState testsuite-49-non-namespaced.service | grep -q running
+do
+    sleep 0.1
+done
 
-setup
-run_test
+set +e
+systemctl is-active testsuite-49-non-namespaced.service && exit 1
+set -e
 
 echo OK > /testok
 
similarity index 68%
rename from test/units/testsuite-56-testbloat.service
rename to test/units/testsuite-55-testbloat.service
index 6163aae1dbadfaeb6c67f9816be331eccb602736..7aa794b9f9a241bce19c2c5b5b299e13becba8a8 100644 (file)
@@ -5,5 +5,5 @@ Description=Create a lot of memory pressure
 # A VERY small memory.high will cause the script (trying to use a lot of memory)
 # to throttle and be put under heavy pressure.
 MemoryHigh=1M
-Slice=testsuite-56-workload.slice
-ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh
+Slice=testsuite-55-workload.slice
+ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh
similarity index 68%
rename from test/units/testsuite-56-testchill.service
rename to test/units/testsuite-55-testchill.service
index 6cae3d852a3eed0d8cf1258c9c3e00815f801c6b..aca6bc4ab97690d4376ee6ef0c5b8e2b03d39213 100644 (file)
@@ -2,5 +2,5 @@
 Description=No memory pressure
 
 [Service]
-Slice=testsuite-56-workload.slice
+Slice=testsuite-55-workload.slice
 ExecStart=sleep infinity
diff --git a/test/units/testsuite-55-testmunch.service b/test/units/testsuite-55-testmunch.service
new file mode 100644 (file)
index 0000000..457e4a5
--- /dev/null
@@ -0,0 +1,7 @@
+[Unit]
+Description=Create some memory pressure
+
+[Service]
+MemoryHigh=2M
+Slice=testsuite-55-workload.slice
+ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-55-slowgrowth.sh
index 2127a4db7f7db023cfec46cc69508d7b40336d45..592e9d5becadf3b4b6100c1c8a03e1daf0469417 100644 (file)
@@ -1,7 +1,7 @@
 [Unit]
-Description=TESTSUITE-55-UDEV-TAGS
+Description=TESTSUITE-55-OOMD
 
 [Service]
-ExecStartPre=rm -f /failed /testok
+ExecStartPre=rm -f /failed /skipped /testok
 ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
 Type=oneshot
index ffceefb6a57ae2fe1beb5d0923aef7fc88fad0ca..f7896ada4274c3d53a5138b345acd121db6d66dd 100755 (executable)
@@ -1,66 +1,76 @@
-#!/bin/bash
+#!/usr/bin/env bash
 set -ex
 set -o pipefail
 
-mkdir -p /run/udev/rules.d/
-
-! test -f /run/udev/tags/added/c1:3 &&
-    ! test -f /run/udev/tags/changed/c1:3 &&
-    udevadm info /dev/null | grep -q -v 'E: TAGS=.*:added:.*' &&
-    udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
-    udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
-    udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*'
-
-cat > /run/udev/rules.d/50-testsuite.rules <<EOF
-ACTION=="add", SUBSYSTEM=="mem", KERNEL=="null", TAG+="added"
-ACTION=="change", SUBSYSTEM=="mem", KERNEL=="null", TAG+="changed"
-EOF
-
-udevadm control --reload
-udevadm trigger -c add /dev/null
-
-while : ; do
-    test -f /run/udev/tags/added/c1:3 &&
-        ! test -f /run/udev/tags/changed/c1:3 &&
-        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
-        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
-        break
+systemd-analyze log-level debug
+systemd-analyze log-target console
 
-    sleep .5
-done
+# Loose checks to ensure the environment has the necessary features for systemd-oomd
+[[ -e /proc/pressure ]] || echo "no PSI" >> /skipped
+cgroup_type=$(stat -fc %T /sys/fs/cgroup/)
+if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]; then
+    echo "no cgroup2" >> /skipped
+fi
+if [ ! -f /usr/lib/systemd/systemd-oomd ] && [ ! -f /lib/systemd/systemd-oomd ]; then
+    echo "no oomd" >> /skipped
+fi
+[[ -e /skipped ]] && exit 0 || true
 
-udevadm control --reload
-udevadm trigger -c change /dev/null
+rm -rf /etc/systemd/system/testsuite-55-testbloat.service.d
 
-while : ; do
-    test -f /run/udev/tags/added/c1:3 &&
-        test -f /run/udev/tags/changed/c1:3 &&
-        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
-        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:changed:.*' &&
-        break
+echo "DefaultMemoryPressureDurationSec=5s" >> /etc/systemd/oomd.conf
 
-    sleep .5
-done
+systemctl start testsuite-55-testchill.service
+systemctl start testsuite-55-testbloat.service
 
-udevadm control --reload
-udevadm trigger -c add /dev/null
+# Verify systemd-oomd is monitoring the expected units
+oomctl | grep "/testsuite-55-workload.slice"
+oomctl | grep "1.00%"
+oomctl | grep "Default Memory Pressure Duration: 5s"
 
-while : ; do
-    test -f /run/udev/tags/added/c1:3 &&
-        test -f /run/udev/tags/changed/c1:3 &&
-        udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
-        udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
-        udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
+# systemd-oomd watches for elevated pressure for 5 seconds before acting.
+# It can take time to build up pressure so either wait 2 minutes or for the service to fail.
+timeout=$(date -ud "2 minutes" +%s)
+while [[ $(date -u +%s) -le $timeout ]]; do
+    if ! systemctl status testsuite-55-testbloat.service; then
         break
-
-    sleep .5
+    fi
+    sleep 5
 done
 
+# testbloat should be killed and testchill should be fine
+if systemctl status testsuite-55-testbloat.service; then exit 42; fi
+if ! systemctl status testsuite-55-testchill.service; then exit 24; fi
+
+# only run this portion of the test if we can set xattrs
+if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then
+    sleep 120 # wait for systemd-oomd kill cool down and elevated memory pressure to come down
+
+    mkdir -p /etc/systemd/system/testsuite-55-testbloat.service.d/
+    echo "[Service]" > /etc/systemd/system/testsuite-55-testbloat.service.d/override.conf
+    echo "ManagedOOMPreference=avoid" >> /etc/systemd/system/testsuite-55-testbloat.service.d/override.conf
+
+    systemctl daemon-reload
+    systemctl start testsuite-55-testchill.service
+    systemctl start testsuite-55-testmunch.service
+    systemctl start testsuite-55-testbloat.service
+
+    timeout=$(date -ud "2 minutes" +%s)
+    while [[ $(date -u +%s) -le $timeout ]]; do
+        if ! systemctl status testsuite-55-testmunch.service; then
+            break
+        fi
+        sleep 5
+    done
+
+    # testmunch should be killed since testbloat had the avoid xattr on it
+    if ! systemctl status testsuite-55-testbloat.service; then exit 25; fi
+    if systemctl status testsuite-55-testmunch.service; then exit 43; fi
+    if ! systemctl status testsuite-55-testchill.service; then exit 24; fi
+fi
+
+systemd-analyze log-level info
+
 echo OK > /testok
 
 exit 0
diff --git a/test/units/testsuite-56-testmunch.service b/test/units/testsuite-56-testmunch.service
deleted file mode 100644 (file)
index b4b925a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=Create some memory pressure
-
-[Service]
-MemoryHigh=2M
-Slice=testsuite-56-workload.slice
-ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh
diff --git a/test/units/testsuite-56.service b/test/units/testsuite-56.service
deleted file mode 100644 (file)
index b53b090..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=TESTSUITE-56-OOMD
-
-[Service]
-ExecStartPre=rm -f /failed /skipped /testok
-ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
-Type=oneshot
diff --git a/test/units/testsuite-56.sh b/test/units/testsuite-56.sh
deleted file mode 100755 (executable)
index 6835802..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env bash
-set -ex
-set -o pipefail
-
-systemd-analyze log-level debug
-systemd-analyze log-target console
-
-# Loose checks to ensure the environment has the necessary features for systemd-oomd
-[[ -e /proc/pressure ]] || echo "no PSI" >> /skipped
-cgroup_type=$(stat -fc %T /sys/fs/cgroup/)
-if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]; then
-    echo "no cgroup2" >> /skipped
-fi
-if [ ! -f /usr/lib/systemd/systemd-oomd ] && [ ! -f /lib/systemd/systemd-oomd ]; then
-    echo "no oomd" >> /skipped
-fi
-[[ -e /skipped ]] && exit 0 || true
-
-rm -rf /etc/systemd/system/testsuite-56-testbloat.service.d
-
-echo "DefaultMemoryPressureDurationSec=5s" >> /etc/systemd/oomd.conf
-
-systemctl start testsuite-56-testchill.service
-systemctl start testsuite-56-testbloat.service
-
-# Verify systemd-oomd is monitoring the expected units
-oomctl | grep "/testsuite-56-workload.slice"
-oomctl | grep "1.00%"
-oomctl | grep "Default Memory Pressure Duration: 5s"
-
-# systemd-oomd watches for elevated pressure for 5 seconds before acting.
-# It can take time to build up pressure so either wait 2 minutes or for the service to fail.
-timeout=$(date -ud "2 minutes" +%s)
-while [[ $(date -u +%s) -le $timeout ]]; do
-    if ! systemctl status testsuite-56-testbloat.service; then
-        break
-    fi
-    sleep 5
-done
-
-# testbloat should be killed and testchill should be fine
-if systemctl status testsuite-56-testbloat.service; then exit 42; fi
-if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
-
-# only run this portion of the test if we can set xattrs
-if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then
-    sleep 120 # wait for systemd-oomd kill cool down and elevated memory pressure to come down
-
-    mkdir -p /etc/systemd/system/testsuite-56-testbloat.service.d/
-    echo "[Service]" > /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf
-    echo "ManagedOOMPreference=avoid" >> /etc/systemd/system/testsuite-56-testbloat.service.d/override.conf
-
-    systemctl daemon-reload
-    systemctl start testsuite-56-testchill.service
-    systemctl start testsuite-56-testmunch.service
-    systemctl start testsuite-56-testbloat.service
-
-    timeout=$(date -ud "2 minutes" +%s)
-    while [[ $(date -u +%s) -le $timeout ]]; do
-        if ! systemctl status testsuite-56-testmunch.service; then
-            break
-        fi
-        sleep 5
-    done
-
-    # testmunch should be killed since testbloat had the avoid xattr on it
-    if ! systemctl status testsuite-56-testbloat.service; then exit 25; fi
-    if systemctl status testsuite-56-testmunch.service; then exit 43; fi
-    if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
-fi
-
-systemd-analyze log-level info
-
-echo OK > /testok
-
-exit 0
diff --git a/test/units/testsuite-57.service b/test/units/testsuite-57.service
deleted file mode 100644 (file)
index b6edd86..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=TEST-57-RUNTIME-BIND-PATHS
-
-[Service]
-ExecStartPre=rm -f /failed /testok
-ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
-Type=oneshot
diff --git a/test/units/testsuite-57.sh b/test/units/testsuite-57.sh
deleted file mode 100755 (executable)
index c24cf32..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env bash
-set -ex
-
-echo "MARKER_FIXED" > /run/testservice-57-fixed
-mkdir -p /run/inaccessible
-
-systemctl start testsuite-57-namespaced.service
-
-# Ensure that inaccessible paths aren't bypassed by the runtime setup
-set +e
-systemctl bind --mkdir testsuite-57-namespaced.service /run/testservice-57-fixed /run/inaccessible/testfile_fixed && exit 1
-set -e
-
-echo "MARKER_RUNTIME" > /run/testservice-57-runtime
-
-systemctl bind --mkdir testsuite-57-namespaced.service /run/testservice-57-runtime /tmp/testfile_runtime
-
-while systemctl show -P SubState testsuite-57-namespaced.service | grep -q running
-do
-    sleep 0.1
-done
-
-systemctl is-active testsuite-57-namespaced.service
-
-# Now test that systemctl bind fails when attempted on a non-namespaced unit
-systemctl start testsuite-57-non-namespaced.service
-
-set +e
-systemctl bind --mkdir testsuite-57-non-namespaced.service /run/testservice-57-runtime /tmp/testfile_runtime && exit 1
-set -e
-
-while systemctl show -P SubState testsuite-57-non-namespaced.service | grep -q running
-do
-    sleep 0.1
-done
-
-set +e
-systemctl is-active testsuite-57-non-namespaced.service && exit 1
-set -e
-
-echo OK > /testok
-
-exit 0
diff --git a/test/units/testsuite-58.service b/test/units/testsuite-58.service
deleted file mode 100644 (file)
index 47deba7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=TEST-58-PORTABLE
-
-[Service]
-ExecStartPre=rm -f /failed /testok
-ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
-Type=oneshot
diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh
deleted file mode 100755 (executable)
index b5b05b4..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env bash
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-set -ex
-set -o pipefail
-
-export SYSTEMD_LOG_LEVEL=debug
-
-portablectl attach --now --runtime /usr/share/minimal_0.raw app0
-
-systemctl is-active app0.service
-systemctl is-active app0-foo.service
-set +o pipefail
-set +e
-systemctl is-active app0-bar.service && exit 1
-set -e
-set -o pipefail
-
-portablectl reattach --now --runtime /usr/share/minimal_1.raw app0
-
-systemctl is-active app0.service
-systemctl is-active app0-bar.service
-set +o pipefail
-set +e
-systemctl is-active app0-foo.service && exit 1
-set -e
-set -o pipefail
-
-portablectl list | grep -q -F "minimal_1"
-
-portablectl detach --now --runtime /usr/share/minimal_1.raw app0
-
-portablectl list | grep -q -F "No images."
-
-# portablectl also works with directory paths rather than images
-
-unsquashfs -dest /tmp/minimal_0 /usr/share/minimal_0.raw
-unsquashfs -dest /tmp/minimal_1 /usr/share/minimal_1.raw
-
-portablectl attach --copy=symlink --now --runtime /tmp/minimal_0 app0
-
-systemctl is-active app0.service
-systemctl is-active app0-foo.service
-set +o pipefail
-set +e
-systemctl is-active app0-bar.service && exit 1
-set -e
-set -o pipefail
-
-portablectl reattach --now --enable --runtime /tmp/minimal_1 app0
-
-systemctl is-active app0.service
-systemctl is-active app0-bar.service
-set +o pipefail
-set +e
-systemctl is-active app0-foo.service && exit 1
-set -e
-set -o pipefail
-
-portablectl list | grep -q -F "minimal_1"
-
-portablectl detach --now --enable --runtime /tmp/minimal_1 app0
-
-portablectl list | grep -q -F "No images."
-
-echo OK > /testok
-
-exit 0