]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: move testcase_dependencies() to TEST-10-MOUNT
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 24 Jul 2025 15:14:59 +0000 (00:14 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 4 Aug 2025 15:03:44 +0000 (16:03 +0100)
TEST-60-MOUNT_RATELIMIT is run on nspawn by default, and currently run
on vm only on arch mkosi. Let's move the test case to new TEST-10-MOUNT,
which always run on vm.

(cherry picked from commit 62c3f42debde313f42cafbce52562aa00d9aaed9)

test/integration-tests/TEST-10-MOUNT/meson.build [new file with mode: 0644]
test/integration-tests/meson.build
test/units/TEST-10-MOUNT.sh [new file with mode: 0755]
test/units/TEST-60-MOUNT-RATELIMIT.sh

diff --git a/test/integration-tests/TEST-10-MOUNT/meson.build b/test/integration-tests/TEST-10-MOUNT/meson.build
new file mode 100644 (file)
index 0000000..77370ce
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+integration_tests += [
+        integration_test_template + {
+                'name' : fs.name(meson.current_source_dir()),
+                'vm' : true,
+        },
+]
index f32a3f0c0cade92ec35fe1e5e06d61f3a89debb4..ca7ba293a46379d5f2d95e4b5a120df2c6f91d21 100644 (file)
@@ -38,6 +38,7 @@ foreach dirname : [
         'TEST-07-PID1',
         'TEST-08-INITRD',
         'TEST-09-REBOOT',
+        'TEST-10-MOUNT',
         'TEST-13-NSPAWN',
         'TEST-15-DROPIN',
         'TEST-16-EXTEND-TIMEOUT',
diff --git a/test/units/TEST-10-MOUNT.sh b/test/units/TEST-10-MOUNT.sh
new file mode 100755 (executable)
index 0000000..eedbd43
--- /dev/null
@@ -0,0 +1,161 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -eux
+set -o pipefail
+
+# shellcheck source=test/units/test-control.sh
+. "$(dirname "$0")"/test-control.sh
+# shellcheck source=test/units/util.sh
+. "$(dirname "$0")"/util.sh
+
+teardown_test_dependencies() (
+    set +eux
+
+    if mountpoint /tmp/deptest; then
+        umount /tmp/deptest
+    fi
+
+    if [[ -n "${LOOP}" ]]; then
+        losetup -d "${LOOP}" || :
+    fi
+    if [[ -n "${LOOP_0}" ]]; then
+        losetup -d "${LOOP_0}" || :
+    fi
+    if [[ -n "${LOOP_1}" ]]; then
+        losetup -d "${LOOP_1}" || :
+    fi
+
+    rm -f /tmp/TEST-60-MOUNT-RATELIMIT-dependencies-0.img
+    rm -f /tmp/TEST-60-MOUNT-RATELIMIT-dependencies-1.img
+
+    rm -f /run/systemd/system/tmp-deptest.mount
+    systemctl daemon-reload
+
+    return 0
+)
+
+setup_loop() {
+    truncate -s 30m "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img"
+    sfdisk --wipe=always "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img" <<EOF
+label:gpt
+
+name="loop${1?}-part1"
+EOF
+    LOOP=$(losetup -P --show -f "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img")
+    udevadm wait --settle --timeout=30 "${LOOP}"
+    udevadm lock --timeout=30 --device="${LOOP}" mkfs.ext4 -L "partname${1?}-1" "${LOOP}p1"
+}
+
+check_dependencies() {
+    local escaped_0 escaped_1 after
+
+    escaped_0=$(systemd-escape -p "${LOOP_0}p1")
+    escaped_1=$(systemd-escape -p "${LOOP_1}p1")
+
+    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
+        after=$(systemctl show --property=After --value tmp-deptest.mount)
+        assert_not_in "local-fs-pre.target" "$after"
+        assert_in "remote-fs-pre.target" "$after"
+        assert_in "network.target" "$after"
+    fi
+
+    # mount LOOP_0
+    mount -t ext4 "${LOOP_0}p1" /tmp/deptest
+    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
+    after=$(systemctl show --property=After --value tmp-deptest.mount)
+    assert_in "local-fs-pre.target" "$after"
+    assert_not_in "remote-fs-pre.target" "$after"
+    assert_not_in "network.target" "$after"
+    assert_in "${escaped_0}.device" "$after"
+    assert_in "blockdev@${escaped_0}.target" "$after"
+    assert_not_in "${escaped_1}.device" "$after"
+    assert_not_in "blockdev@${escaped_1}.target" "$after"
+    systemctl stop tmp-deptest.mount
+
+    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
+        after=$(systemctl show --property=After --value tmp-deptest.mount)
+        assert_not_in "local-fs-pre.target" "$after"
+        assert_in "remote-fs-pre.target" "$after"
+        assert_in "network.target" "$after"
+    fi
+
+    # mount LOOP_1 (using fake _netdev option)
+    mount -t ext4 -o _netdev "${LOOP_1}p1" /tmp/deptest
+    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
+    after=$(systemctl show --property=After --value tmp-deptest.mount)
+    assert_not_in "local-fs-pre.target" "$after"
+    assert_in "remote-fs-pre.target" "$after"
+    assert_in "network.target" "$after"
+    assert_not_in "${escaped_0}.device" "$after"
+    assert_not_in "blockdev@${escaped_0}.target" "$after"
+    assert_in "${escaped_1}.device" "$after"
+    assert_in "blockdev@${escaped_1}.target" "$after"
+    systemctl stop tmp-deptest.mount
+
+    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
+        after=$(systemctl show --property=After --value tmp-deptest.mount)
+        assert_not_in "local-fs-pre.target" "$after"
+        assert_in "remote-fs-pre.target" "$after"
+        assert_in "network.target" "$after"
+    fi
+
+    # mount tmpfs
+    mount -t tmpfs tmpfs /tmp/deptest
+    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
+    after=$(systemctl show --property=After --value tmp-deptest.mount)
+    assert_in "local-fs-pre.target" "$after"
+    assert_not_in "remote-fs-pre.target" "$after"
+    assert_not_in "network.target" "$after"
+    assert_not_in "${escaped_0}.device" "$after"
+    assert_not_in "blockdev@${escaped_0}.target" "$after"
+    assert_not_in "${escaped_1}.device" "$after"
+    assert_not_in "blockdev@${escaped_1}.target" "$after"
+    systemctl stop tmp-deptest.mount
+
+    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
+        after=$(systemctl show --property=After --value tmp-deptest.mount)
+        assert_not_in "local-fs-pre.target" "$after"
+        assert_in "remote-fs-pre.target" "$after"
+        assert_in "network.target" "$after"
+    fi
+}
+
+testcase_dependencies() {
+    # test for issue #19983 and #23552.
+
+    if systemd-detect-virt --quiet --container; then
+        echo "Skipping test_dependencies in container"
+        return
+    fi
+
+    trap teardown_test_dependencies RETURN
+
+    setup_loop 0
+    LOOP_0="${LOOP}"
+    LOOP=
+    setup_loop 1
+    LOOP_1="${LOOP}"
+    LOOP=
+
+    mkdir -p /tmp/deptest
+
+    # without .mount file
+    check_dependencies
+
+    # create .mount file
+    mkdir -p /run/systemd/system
+    cat >/run/systemd/system/tmp-deptest.mount <<EOF
+[Mount]
+Where=/tmp/deptest
+What=192.168.0.1:/tmp/mnt
+Type=nfs
+EOF
+    systemctl daemon-reload
+
+    # with .mount file
+    check_dependencies
+}
+
+run_testcases
+
+touch /testok
index db15fa831dc44005de354d6f9340786ef7cf57b4..4bedf2203152464bce5fb9f62a9b04e930f57f86 100755 (executable)
@@ -8,154 +8,6 @@ set -o pipefail
 # shellcheck source=test/units/util.sh
 . "$(dirname "$0")"/util.sh
 
-teardown_test_dependencies() (
-    set +eux
-
-    if mountpoint /tmp/deptest; then
-        umount /tmp/deptest
-    fi
-
-    if [[ -n "${LOOP}" ]]; then
-        losetup -d "${LOOP}" || :
-    fi
-    if [[ -n "${LOOP_0}" ]]; then
-        losetup -d "${LOOP_0}" || :
-    fi
-    if [[ -n "${LOOP_1}" ]]; then
-        losetup -d "${LOOP_1}" || :
-    fi
-
-    rm -f /tmp/TEST-60-MOUNT-RATELIMIT-dependencies-0.img
-    rm -f /tmp/TEST-60-MOUNT-RATELIMIT-dependencies-1.img
-
-    rm -f /run/systemd/system/tmp-deptest.mount
-    systemctl daemon-reload
-
-    return 0
-)
-
-setup_loop() {
-    truncate -s 30m "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img"
-    sfdisk --wipe=always "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img" <<EOF
-label:gpt
-
-name="loop${1?}-part1"
-EOF
-    LOOP=$(losetup -P --show -f "/tmp/TEST-60-MOUNT-RATELIMIT-dependencies-${1?}.img")
-    udevadm wait --settle --timeout=30 "${LOOP}"
-    udevadm lock --timeout=30 --device="${LOOP}" mkfs.ext4 -L "partname${1?}-1" "${LOOP}p1"
-}
-
-check_dependencies() {
-    local escaped_0 escaped_1 after
-
-    escaped_0=$(systemd-escape -p "${LOOP_0}p1")
-    escaped_1=$(systemd-escape -p "${LOOP_1}p1")
-
-    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
-        after=$(systemctl show --property=After --value tmp-deptest.mount)
-        assert_not_in "local-fs-pre.target" "$after"
-        assert_in "remote-fs-pre.target" "$after"
-        assert_in "network.target" "$after"
-    fi
-
-    # mount LOOP_0
-    mount -t ext4 "${LOOP_0}p1" /tmp/deptest
-    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
-    after=$(systemctl show --property=After --value tmp-deptest.mount)
-    assert_in "local-fs-pre.target" "$after"
-    assert_not_in "remote-fs-pre.target" "$after"
-    assert_not_in "network.target" "$after"
-    assert_in "${escaped_0}.device" "$after"
-    assert_in "blockdev@${escaped_0}.target" "$after"
-    assert_not_in "${escaped_1}.device" "$after"
-    assert_not_in "blockdev@${escaped_1}.target" "$after"
-    systemctl stop tmp-deptest.mount
-
-    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
-        after=$(systemctl show --property=After --value tmp-deptest.mount)
-        assert_not_in "local-fs-pre.target" "$after"
-        assert_in "remote-fs-pre.target" "$after"
-        assert_in "network.target" "$after"
-    fi
-
-    # mount LOOP_1 (using fake _netdev option)
-    mount -t ext4 -o _netdev "${LOOP_1}p1" /tmp/deptest
-    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
-    after=$(systemctl show --property=After --value tmp-deptest.mount)
-    assert_not_in "local-fs-pre.target" "$after"
-    assert_in "remote-fs-pre.target" "$after"
-    assert_in "network.target" "$after"
-    assert_not_in "${escaped_0}.device" "$after"
-    assert_not_in "blockdev@${escaped_0}.target" "$after"
-    assert_in "${escaped_1}.device" "$after"
-    assert_in "blockdev@${escaped_1}.target" "$after"
-    systemctl stop tmp-deptest.mount
-
-    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
-        after=$(systemctl show --property=After --value tmp-deptest.mount)
-        assert_not_in "local-fs-pre.target" "$after"
-        assert_in "remote-fs-pre.target" "$after"
-        assert_in "network.target" "$after"
-    fi
-
-    # mount tmpfs
-    mount -t tmpfs tmpfs /tmp/deptest
-    timeout 10 bash -c 'until systemctl -q is-active tmp-deptest.mount; do sleep .1; done'
-    after=$(systemctl show --property=After --value tmp-deptest.mount)
-    assert_in "local-fs-pre.target" "$after"
-    assert_not_in "remote-fs-pre.target" "$after"
-    assert_not_in "network.target" "$after"
-    assert_not_in "${escaped_0}.device" "$after"
-    assert_not_in "blockdev@${escaped_0}.target" "$after"
-    assert_not_in "${escaped_1}.device" "$after"
-    assert_not_in "blockdev@${escaped_1}.target" "$after"
-    systemctl stop tmp-deptest.mount
-
-    if [[ -f /run/systemd/system/tmp-deptest.mount ]]; then
-        after=$(systemctl show --property=After --value tmp-deptest.mount)
-        assert_not_in "local-fs-pre.target" "$after"
-        assert_in "remote-fs-pre.target" "$after"
-        assert_in "network.target" "$after"
-    fi
-}
-
-testcase_dependencies() {
-    # test for issue #19983 and #23552.
-
-    if systemd-detect-virt --quiet --container; then
-        echo "Skipping test_dependencies in container"
-        return
-    fi
-
-    trap teardown_test_dependencies RETURN
-
-    setup_loop 0
-    LOOP_0="${LOOP}"
-    LOOP=
-    setup_loop 1
-    LOOP_1="${LOOP}"
-    LOOP=
-
-    mkdir -p /tmp/deptest
-
-    # without .mount file
-    check_dependencies
-
-    # create .mount file
-    mkdir -p /run/systemd/system
-    cat >/run/systemd/system/tmp-deptest.mount <<EOF
-[Mount]
-Where=/tmp/deptest
-What=192.168.0.1:/tmp/mnt
-Type=nfs
-EOF
-    systemctl daemon-reload
-
-    # with .mount file
-    check_dependencies
-}
-
 testcase_issue_20329() {
     # test that handling of mount start jobs is delayed when /proc/self/mouninfo monitor is rate limited