diff --git a/test/TEST-21-DFUZZER/test.sh b/test/TEST-21-DFUZZER/test.sh index 7669e4e0ad..eb0a6549e0 100755 --- a/test/TEST-21-DFUZZER/test.sh +++ b/test/TEST-21-DFUZZER/test.sh @@ -3,7 +3,6 @@ set -e TEST_DESCRIPTION="Fuzz our D-Bus interfaces with dfuzzer" -TEST_NO_NSPAWN=1 TEST_SUPPORTING_SERVICES_SHOULD_BE_MASKED=0 QEMU_TIMEOUT="${QEMU_TIMEOUT:-1800}" IMAGE_NAME=dfuzzer @@ -12,6 +11,13 @@ TEST_FORCE_NEWIMAGE=1 # shellcheck source=test/test-functions . "${TEST_BASE_DIR:?}/test-functions" +# Run the test either only under nspawn (if $TEST_PREFER_NSPAWN is set to true) +# or only uder qemu otherwise, to avoid running the test twice on machines where +# we can do both. +if ! get_bool "${TEST_PREFER_NSPAWN:=}"; then + TEST_NO_NSPAWN=1 +fi + command -v dfuzzer >/dev/null || exit 0 if ! get_bool "$IS_BUILT_WITH_ASAN"; then diff --git a/test/units/testsuite-21.sh b/test/units/testsuite-21.sh index e9bf18603a..d931e63167 100755 --- a/test/units/testsuite-21.sh +++ b/test/units/testsuite-21.sh @@ -15,7 +15,7 @@ at_exit() { # from the queue if [[ $SHUTDOWN_AT_EXIT -ne 0 ]] && ! systemctl poweroff; then # PID1 is down let's try to save the journal - journalctl --sync || : # journal can be down as well so let's ignore exit codes here + journalctl --sync # journal can be down as well so let's ignore exit codes here systemctl -ff poweroff # sync() and reboot(RB_POWER_OFF) fi } @@ -33,17 +33,31 @@ BUS_LIST=( org.freedesktop.locale1 org.freedesktop.login1 org.freedesktop.machine1 - org.freedesktop.network1 org.freedesktop.portable1 org.freedesktop.resolve1 org.freedesktop.systemd1 org.freedesktop.timedate1 - org.freedesktop.timesync1 ) # systemd-oomd requires PSI if tail -n +1 /proc/pressure/{cpu,io,memory}; then - BUS_LIST+=(org.freedesktop.oom1) + BUS_LIST+=( + org.freedesktop.oom1 + ) +fi + +# Some services require specific conditions: +# - systemd-timesyncd can't run in a container +# - systemd-networkd can run in a container if it has CAP_NET_ADMIN capability +if ! systemd-detect-virt --container; then + BUS_LIST+=( + org.freedesktop.network1 + org.freedesktop.timesync1 + ) +elif busctl introspect org.freedesktop.network1 / &>/dev/null; then + BUS_LIST+=( + org.freedesktop.network1 + ) fi SESSION_BUS_LIST=(