The timeout is too short so under sanitizers the test sometimes fails: [ 3502.317855] TEST-07-PID1.sh[16212]: + mkdir -p /tmp/TEST-07-PID1-socket-29942 [ 3502.317855] TEST-07-PID1.sh[16212]: + cat [ 3502.317855] TEST-07-PID1.sh[16212]: + cat [ 3502.317855] TEST-07-PID1.sh[16212]: + cat [ 3502.317855] TEST-07-PID1.sh[16212]: + systemctl start TEST-07-PID1-socket-29942.socket [ 3502.317855] TEST-07-PID1.sh[16212]: + systemctl is-active TEST-07-PID1-socket-29942.socket [ 3502.319398] TEST-07-PID1.sh[16221]: active [ 3502.319758] TEST-07-PID1.sh[16212]: + [[ -S /tmp/TEST-07-PID1-socket-29942/test ]] [ 3502.319758] TEST-07-PID1.sh[16212]: + systemctl stop TEST-07-PID1-socket-29942.socket [ 3502.319758] TEST-07-PID1.sh[16212]: + rm /tmp/TEST-07-PID1-socket-29942/test [ 3502.319758] TEST-07-PID1.sh[16212]: + chattr +i /tmp/TEST-07-PID1-socket-29942 [ 3502.320499] TEST-07-PID1.sh[16227]: + systemctl start TEST-07-PID1-socket-29942.socket [ 3502.320914] TEST-07-PID1.sh[16228]: Job failed. See "journalctl -xe" for details. [ 3502.321560] TEST-07-PID1.sh[16212]: + systemctl is-failed TEST-07-PID1-socket-29942.socket [ 3502.321856] TEST-07-PID1.sh[16230]: failed [ 3502.322315] TEST-07-PID1.sh[16233]: ++ systemctl show TEST-07-PID1-socket-29942.socket -P SubState [ 3502.322722] TEST-07-PID1.sh[16212]: + assert_eq failed failed [ 3502.323111] TEST-07-PID1.sh[16235]: + set +ex [ 3502.323512] TEST-07-PID1.sh[16212]: + [[ ! -e /tmp/TEST-07-PID1-socket-29942/test ]] [ 3502.323512] TEST-07-PID1.sh[16212]: + timeout 10 bash -c 'until systemctl is-failed TEST-07-PID1-socket-OnFailure.service; do sleep .5; done' [ 3502.323949] TEST-07-PID1.sh[16238]: activating [ 3502.324376] TEST-07-PID1.sh[16241]: activating [ 3502.324754] TEST-07-PID1.sh[16244]: activating [ 3502.325164] TEST-07-PID1.sh[16247]: activating [ 3502.325587] TEST-07-PID1.sh[16250]: activating [ 3502.325938] TEST-07-PID1.sh[16253]: activating [ 3502.326393] TEST-07-PID1.sh[16256]: activating [ 3502.326791] TEST-07-PID1.sh[16259]: activating [ 3502.327180] TEST-07-PID1.sh[16262]: activating [ 3502.327558] TEST-07-PID1.sh[16265]: activating [ 3502.327971] TEST-07-PID1.sh[16268]: activating [ 3502.328409] TEST-07-PID1.sh[16212]: + at_exit [ 3502.328409] TEST-07-PID1.sh[16212]: + systemctl stop TEST-07-PID1-socket-29942.socket [ 3502.328409] TEST-07-PID1.sh[16212]: + rm -f /run/systemd/system/TEST-07-PID1-socket-29942.socket /run/systemd/system/TEST-07-PID1-socket-29942.service /run/systemd/system/TEST-07-PID1-socket-OnFailure.service [ 3502.328945] TEST-07-PID1.sh[147]: + echo 'Subtest /usr/lib/systemd/tests/testdata/units/TEST-07-PID1.socket-on-failure.sh failed' Bump from 10s to 60s to try and make it less flaky
74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/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 --foreground 60 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 --foreground 60 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"
|