diff --git a/test/TEST-37-EXECRELOAD/Makefile b/test/TEST-37-EXECRELOAD/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-37-EXECRELOAD/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-37-EXECRELOAD/test.sh b/test/TEST-37-EXECRELOAD/test.sh new file mode 100755 index 0000000000..7eb9db415a --- /dev/null +++ b/test/TEST-37-EXECRELOAD/test.sh @@ -0,0 +1,45 @@ +#!/bin/bash +set -e +TEST_DESCRIPTION="Test ExecReload= (PR #13098)" + +. $TEST_BASE_DIR/test-functions + +test_setup() { + create_empty_image_rootdir + + # Create what will eventually be our root filesystem onto an overlay + ( + LOG_LEVEL=5 + eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) + + setup_basic_environment + dracut_install mktemp + + # mask some services that we do not want to run in these tests + ln -fs /dev/null $initdir/etc/systemd/system/systemd-hwdb-update.service + ln -fs /dev/null $initdir/etc/systemd/system/systemd-journal-catalog-update.service + ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.service + ln -fs /dev/null $initdir/etc/systemd/system/systemd-networkd.socket + ln -fs /dev/null $initdir/etc/systemd/system/systemd-resolved.service + ln -fs /dev/null $initdir/etc/systemd/system/systemd-machined.service + + # setup the testsuite service + cat >$initdir/etc/systemd/system/testsuite.service < "$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