diff --git a/test/Makefile.am b/test/Makefile.am index c8584af6..20a60dca 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,6 +1,7 @@ AM_TESTS_ENVIRONMENT = make -C test_root/; TESTS = checkself.sh TESTS += test_add_remove_dynamic_service/test.sh +TESTS += test_add_remove_dynamic_service_sub_config/test.sh clean-local: make -C test_root/ clean diff --git a/test/common/service.conf b/test/common/service.conf new file mode 100644 index 00000000..3fd97586 --- /dev/null +++ b/test/common/service.conf @@ -0,0 +1 @@ +service [2345] kill:20 log /test_assets/service.sh diff --git a/test/test_add_remove_dynamic_service_sub_config/test.sh b/test/test_add_remove_dynamic_service_sub_config/test.sh new file mode 100755 index 00000000..a2cf9d85 --- /dev/null +++ b/test/test_add_remove_dynamic_service_sub_config/test.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +set -eu + +TEST_DIR=$(dirname "$0")/.. +# shellcheck source=/dev/null +. "$TEST_DIR/lib.sh" + +assert_num_children() { + assert "$1 services are running" "$(texec pgrep -P 1 "$2" | wc -l)" -eq "$1" +} + +test_teardown() { + say "Test done $(date)" + say "Running test teardown..." + + # Teardown + rm -f test_root/bin/service.sh +} + +# Test +say "Test start $(date)" +# toggle_finit_debug +say "Add a dynamic service in $FINIT_CONF_DIR/service.conf" +cp "$TEST_DIR"/common/service.sh "$TEST_DIR"/test_root/test_assets/ +texec sh -c "echo 'service [2345] kill:20 log /test_assets/service.sh pid:/run/service.pid' > $FINIT_CONF_DIR/service.conf" + +say 'Reload Finit' +texec kill -SIGHUP 1 + +pause + +retry 'assert_num_children 1 service.sh' 5 + +say 'Remove the dynamic service from /etc/finit.d/service.conf' +texec sh -c "echo > $FINIT_CONF_DIR/service.conf" + +say 'Reload Finit' +texec kill -SIGHUP 1 + +retry 'assert_num_children 0 service.sh' 5