mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
test: re-enable journal checks for varlink-idl and so on
Previously, we have checked journal after TEST-XX-YYYYY.sh, but it was forgotten when we switched to mkosi. This re-enable the check but through ExecStartPost=, and drops unnecessary workarounds for end.service. Then, this drops unnecessary end.service and testsuite.target.
This commit is contained in:
@@ -8,6 +8,7 @@ After=basic.target network.target @after@
|
||||
[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@
|
||||
|
||||
@@ -379,7 +379,7 @@ varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List
|
||||
|
||||
# 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": ""}')
|
||||
|
||||
@@ -14,24 +14,6 @@ if [[ ! -v ASAN_OPTIONS && ! -v UBSAN_OPTIONS && "${TEST_RUN_DFUZZER:-0}" == "0"
|
||||
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:?}"
|
||||
@@ -39,8 +21,6 @@ add_suppression() {
|
||||
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
|
||||
|
||||
@@ -6,19 +6,6 @@ set -o pipefail
|
||||
# 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
|
||||
@@ -272,7 +259,7 @@ exec -a @sleep sleep infinity
|
||||
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
|
||||
|
||||
@@ -72,6 +72,8 @@ check_sd() {
|
||||
|
||||
# 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))
|
||||
@@ -105,4 +107,8 @@ dnf -y upgrade --disablerepo '*' "$pkgdir"/devel/*.rpm
|
||||
# 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
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# 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
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
@@ -12,6 +11,3 @@ 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
|
||||
@@ -1,7 +0,0 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user