1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-04 09:18:12 +03:00

TEST-07-PID1: add test case for #35635

This commit is contained in:
Mike Yuan 2024-12-30 23:35:32 +01:00
parent d8a2ed33fd
commit 7c194bb93c
No known key found for this signature in database
GPG Key ID: 417471C0A40F58B3

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# shellcheck disable=SC2016
set -eux
set -o pipefail
# shellcheck source=test/units/util.sh
. "$(dirname "$0")"/util.sh
UNIT_NAME="TEST-07-PID1-socket-$RANDOM"
at_exit() {
systemctl stop "$UNIT_NAME.socket"
rm -f /run/systemd/system/"$UNIT_NAME".{socket,service} \
/run/systemd/system/TEST-07-PID1-socket-OnFailure.service
}
trap at_exit EXIT
# Test triggering OnFailure= when fails to listen on socket (#35635)
mkdir -p "/tmp/$UNIT_NAME"
cat >/run/systemd/system/"$UNIT_NAME.socket" <<EOF
[Unit]
OnFailure=TEST-07-PID1-socket-OnFailure.service
[Socket]
ListenStream=/tmp/$UNIT_NAME/test
EOF
cat >/run/systemd/system/"$UNIT_NAME.service" <<EOF
[Service]
ExecStart=true
EOF
cat >/run/systemd/system/TEST-07-PID1-socket-OnFailure.service <<EOF
[Service]
Type=oneshot
ExecStart=rmdir /tmp/$UNIT_NAME/test
RemainAfterExit=yes
EOF
systemctl start "$UNIT_NAME.socket"
systemctl is-active "$UNIT_NAME.socket"
[[ -S "/tmp/$UNIT_NAME/test" ]]
systemctl stop "$UNIT_NAME.socket"
rm "/tmp/$UNIT_NAME/test"
chattr +i "/tmp/$UNIT_NAME"
(! systemctl start "$UNIT_NAME.socket")
systemctl is-failed "$UNIT_NAME.socket"
assert_eq "$(systemctl show "$UNIT_NAME.socket" -P SubState)" "failed"
[[ ! -e "/tmp/$UNIT_NAME/test" ]]
timeout 10 bash -c "until systemctl is-failed TEST-07-PID1-socket-OnFailure.service; do sleep .5; done"
chattr -i "/tmp/$UNIT_NAME"
mkdir "/tmp/$UNIT_NAME/test"
(! systemctl start "$UNIT_NAME.socket")
systemctl is-failed "$UNIT_NAME.socket"
assert_eq "$(systemctl show "$UNIT_NAME.socket" -P SubState)" "failed"
timeout 10 bash -c "while [[ -d '/tmp/$UNIT_NAME/test' ]]; do sleep .5; done"
[[ ! -e "/tmp/$UNIT_NAME/test" ]]
systemctl is-active TEST-07-PID1-socket-OnFailure.service
systemctl start "$UNIT_NAME.socket"
systemctl is-active "$UNIT_NAME.socket"