| #!/usr/bin/env bash |
| |
| set -ex |
| set -o pipefail |
| |
| systemd-analyze log-level debug |
| systemd-analyze log-target console |
| |
| export SYSTEMD_PAGER= |
| SERVICE_PATH="$(mktemp /etc/systemd/system/execreloadXXX.service)" |
| SERVICE_NAME="${SERVICE_PATH##*/}" |
| |
| echo "[#1] Failing ExecReload= should not kill the service" |
| cat > "$SERVICE_PATH" << EOF |
| [Service] |
| ExecStart=/bin/sleep infinity |
| ExecReload=/bin/false |
| EOF |
| |
| systemctl daemon-reload |
| systemctl start $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| # The reload SHOULD fail but SHOULD NOT affect the service state |
| ! systemctl reload $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| systemctl stop $SERVICE_NAME |
| |
| |
| echo "[#2] Failing ExecReload= should not kill the service (multiple ExecReload=)" |
| cat > "$SERVICE_PATH" << EOF |
| [Service] |
| ExecStart=/bin/sleep infinity |
| ExecReload=/bin/true |
| ExecReload=/bin/false |
| ExecReload=/bin/true |
| EOF |
| |
| systemctl daemon-reload |
| systemctl start $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| # The reload SHOULD fail but SHOULD NOT affect the service state |
| ! systemctl reload $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| systemctl stop $SERVICE_NAME |
| |
| echo "[#3] Failing ExecReload=- should not affect reload's exit code" |
| cat > "$SERVICE_PATH" << EOF |
| [Service] |
| ExecStart=/bin/sleep infinity |
| ExecReload=-/bin/false |
| EOF |
| |
| systemctl daemon-reload |
| systemctl start $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| systemctl reload $SERVICE_NAME |
| systemctl status $SERVICE_NAME |
| systemctl stop $SERVICE_NAME |
| |
| systemd-analyze log-level info |
| |
| echo OK > /testok |
| |
| exit 0 |