[Service]
ExecStartPre=rm -f /failed /testok
ExecStart=@command@
+ExecStartPost=/usr/lib/systemd/tests/testdata/units/post.sh
Type=oneshot
MemoryAccounting=@memory-accounting@
Environment=SYSTEMD_PAGER= @env@
# test io.systemd.Machine.Open
-# Reducing log level here is to work-around check in end.service (end.sh). Read https://github.com/systemd/systemd/pull/34867 for more details
+# Reducing log level here is to work-around check in post.sh. Read https://github.com/systemd/systemd/pull/34867 for more details
systemctl service-log-level systemd-machined info
(! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Open '{"name": ".host"}')
(! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Open '{"name": ".host", "mode": ""}')
exit 77
fi
-# Save the end.service state before we start fuzzing, as it might get changed
-# on the fly by one of the fuzzers
-systemctl list-jobs | grep -F 'end.service' && SHUTDOWN_AT_EXIT=1 || SHUTDOWN_AT_EXIT=0
-
-# shellcheck disable=SC2317
-at_exit() {
- set +e
- # We have to call the end.service/poweroff explicitly even if it's specified on
- # the kernel cmdline via systemd.wants=end.service, since dfuzzer calls
- # org.freedesktop.systemd1.Manager.ClearJobs() which drops the service
- # 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
- systemctl -ff poweroff # sync() and reboot(RB_POWER_OFF)
- fi
-}
-
add_suppression() {
local interface="${1:?}"
local suppression="${2:?}"
sed -i "\%\[$interface\]%a$suppression" /etc/dfuzzer.conf
}
-trap at_exit EXIT
-
systemctl log-level info
# Skip calling start and stop methods on unit objects, as doing that is not only time consuming, but it also
# shellcheck source=test/units/util.sh
. "$(dirname "$0")"/util.sh
-at_exit() {
- # Since the soft-reboot drops the enqueued end.service, we won't shutdown
- # the test VM if the test fails and have to wait for the watchdog to kill
- # us (which may take quite a long time). Let's just forcibly kill the machine
- # instead to save CI resources.
- if [[ $? -ne 0 ]]; then
- echo >&2 "Test failed, shutting down the machine..."
- systemctl poweroff -ff
- fi
-}
-
-trap at_exit EXIT
-
# Because this test tests soft-reboot, we have to get rid of the symlink we put at
# /run/nextroot to allow rebooting into the previous snapshot if the test fails for
# the duration of the test. However, let's make sure we put the symlink back in place
EOF
chmod +x "$survive_argv"
# This sets DefaultDependencies=no so that they remain running until the very end, and
- # IgnoreOnIsolate=yes so that they aren't stopped via the "testsuite.target" isolation we do on next boot,
+ # IgnoreOnIsolate=yes so that they aren't stopped via isolation on next boot,
# and will be killed by the final sigterm/sigkill spree.
systemd-run --collect --service-type=notify -p DefaultDependencies=no -p IgnoreOnIsolate=yes --unit=TEST-82-SOFTREBOOT-nosurvive-sigterm.service "$survive_sigterm"
systemd-run --collect --service-type=exec -p DefaultDependencies=no -p IgnoreOnIsolate=yes -p SetCredential=gone:hoge --unit=TEST-82-SOFTREBOOT-nosurvive.service sleep infinity
# Copy the unit in /run so systemd finds it after the downgrade
cp /usr/lib/systemd/tests/testdata/units/TEST-88-UPGRADE.service /run/systemd/system
+# Also backup post.sh
+cp /usr/lib/systemd/tests/testdata/units/post.sh /tmp/.
now=$(date +%s)
after_2h=$((now + 3600 * 2))
# TODO: sanity checks
check_sd
+# Restore post.sh
+mkdir -p /usr/lib/systemd/tests/testdata/units
+mv /tmp/post.sh /usr/lib/systemd/tests/testdata/units/.
+
touch /testok
+++ /dev/null
-# SPDX-License-Identifier: LGPL-2.1-or-later
-[Unit]
-Description=End the test
-After=testsuite.target
-OnFailure=poweroff.target
-OnFailureJobMode=replace-irreversibly
-
-[Service]
-Type=oneshot
-ExecStart=/usr/lib/systemd/tests/testdata/units/end.sh
-TimeoutStartSec=5m
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
-
set -eux
set -o pipefail
# Check if sd-executor doesn't complain about not being able to (de)serialize stuff
(! journalctl -q -o short-monotonic --grep "[F]ailed to parse serialized line" >>/failed)
(! journalctl -q -o short-monotonic --grep "[F]ailed to (de)?serialize \w+" >>/failed)
-
-systemctl poweroff --no-block
-exit 0
+++ /dev/null
-# SPDX-License-Identifier: LGPL-2.1-or-later
-[Unit]
-Description=Testsuite target
-Requires=multi-user.target
-After=multi-user.target
-Conflicts=rescue.target
-AllowIsolate=yes