diff --git a/test/Makefile.am b/test/Makefile.am index 20a60dca..bb72e0b7 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -2,6 +2,8 @@ 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 +TESTS += test_start_stop_service/test.sh +TESTS += test_start_stop_service_sub_config/test.sh clean-local: make -C test_root/ clean diff --git a/test/test_start_stop_service/test.sh b/test/test_start_stop_service/test.sh new file mode 100755 index 00000000..7d0c2c5d --- /dev/null +++ b/test/test_start_stop_service/test.sh @@ -0,0 +1,40 @@ +#!/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)" +say 'Add service stanza in /etc/finit.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' > $FINIT_CONF" + +say 'Reload Finit' +texec sh -c "initctl reload" + +retry 'assert_num_children 1 service.sh' + +say 'Stop the service' +texec sh -c "initctl stop service.sh" + +retry 'assert_num_children 0 service.sh' + +say 'Start the service again' +texec sh -c "initctl start service.sh" + +retry 'assert_num_children 1 service.sh' diff --git a/test/test_start_stop_service_sub_config/test.sh b/test/test_start_stop_service_sub_config/test.sh new file mode 100755 index 00000000..87026274 --- /dev/null +++ b/test/test_start_stop_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)" +say 'Add service stanza in /etc/finit.d/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' > $FINIT_CONF" +texec sh -c "echo 'service [2345] kill:20 log /test_assets/service.sh' > $FINIT_CONF_DIR/service.conf" + +say 'Reload Finit' +texec sh -c "initctl reload" + +retry 'assert_num_children 1 service.sh' + +say 'Stop the service' +texec sh -c "initctl stop service.sh" + +retry 'assert_num_children 0 service.sh' + +say 'Start the service again' +texec sh -c "initctl start service.sh" + +retry 'assert_num_children 1 service.sh'