mirror of
https://github.com/troglobit/finit.git
synced 2026-10-14 10:19:36 +00:00
Merge branch 'wip-tests' into wip-tests-build-refactor
Signed-off-by: Jacques de Laval <jacques@de-laval.se>
This commit is contained in:
commit
1efdbeda16
28 files changed
+703
-221
No files matched your search
+15
-10
@@ -1,19 +1,24 @@
|
||||
EXTRA_DIST = lib.sh testenv_exec.sh testenv_start.sh
|
||||
EXTRA_DIST += test_root/Makefile test_root/busybox-x86_64.md5
|
||||
EXTRA_DIST += test_root/bin/chrootsetup.sh
|
||||
EXTRA_DIST += test-root/Makefile test-root/busybox-x86_64.md5
|
||||
EXTRA_DIST += test-root/bin/chrootsetup.sh
|
||||
EXTRA_DIST += setup-root.sh teardown-root.sh
|
||||
EXTRA_DIST += common/service.conf common/service.sh
|
||||
EXTRA_DIST += checkself.sh
|
||||
EXTRA_DIST += setup_root.sh
|
||||
EXTRA_DIST += teardown_root.sh
|
||||
EXTRA_DIST += test_start_stop_service/test.sh
|
||||
EXTRA_DIST += test_start_stop_service/service.sh
|
||||
EXTRA_DIST += add-remove-dynamic-service/test.sh
|
||||
EXTRA_DIST += add-remove-dynamic-service-sub-config/test.sh
|
||||
EXTRA_DIST += start-stop-service/test.sh
|
||||
EXTRA_DIST += start-stop-service-sub-config/test.sh
|
||||
|
||||
AM_TESTS_ENVIRONMENT = TESTS_ROOT='$(builddir)/test_root/';
|
||||
AM_TESTS_ENVIRONMENT = TESTS_ROOT='$(abs_builddir)/test-root/';
|
||||
AM_TESTS_ENVIRONMENT += export TESTS_ROOT;
|
||||
AM_TESTS_ENVIRONMENT += export LD_LIBRARY_PATH;
|
||||
AM_TESTS_ENVIRONMENT += PREFIX=$(prefix);
|
||||
AM_TESTS_ENVIRONMENT += export PREFIX;
|
||||
|
||||
TESTS = checkself.sh
|
||||
TESTS += setup_root.sh
|
||||
TESTS += test_start_stop_service/test.sh
|
||||
TESTS += teardown_root.sh
|
||||
TESTS += setup-root.sh
|
||||
TESTS += add-remove-dynamic-service/test.sh
|
||||
TESTS += add-remove-dynamic-service-sub-config/test.sh
|
||||
TESTS += start-stop-service/test.sh
|
||||
TESTS += start-stop-service-sub-config/test.sh
|
||||
TESTS += teardown-root.sh
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")/..
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/lib.sh"
|
||||
|
||||
test_teardown() {
|
||||
say "Test done $(date)"
|
||||
say "Running test teardown."
|
||||
|
||||
texec rm -f "$FINIT_RCSD/service.conf"
|
||||
texec rm -f /test_assets/service.sh
|
||||
}
|
||||
|
||||
say "Test start $(date)"
|
||||
|
||||
cp "$TEST_DIR"/common/service.sh "$TESTS_ROOT"/test_assets/
|
||||
|
||||
say "Add a dynamic service in $FINIT_RCSD/service.conf"
|
||||
texec sh -c "echo 'service [2345] kill:20 log /test_assets/service.sh' > $FINIT_RCSD/service.conf"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec sh -c "initctl reload"
|
||||
|
||||
retry 'assert_num_children 1 service.sh'
|
||||
|
||||
say 'Remove the dynamic service from /etc/finit.d/service.conf'
|
||||
texec sh -c "echo > $FINIT_RCSD/service.conf"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec sh -c "initctl reload"
|
||||
|
||||
retry 'assert_num_children 0 service.sh'
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")/..
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/lib.sh"
|
||||
|
||||
test_teardown() {
|
||||
say "Test done $(date)"
|
||||
say "Running test teardown."
|
||||
|
||||
texec rm -f "$FINIT_CONF"
|
||||
texec rm -f /test_assets/service.sh
|
||||
}
|
||||
|
||||
say "Test start $(date)"
|
||||
|
||||
cp "$TEST_DIR"/common/service.sh "$TESTS_ROOT"/test_assets/
|
||||
|
||||
say "Add a dynamic service in $FINIT_CONF"
|
||||
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 'Remove the dynamic service from /etc/finit.conf'
|
||||
texec sh -c "echo > $FINIT_CONF"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec sh -c "initctl reload"
|
||||
|
||||
retry 'assert_num_children 0 service.sh'
|
||||
@@ -0,0 +1 @@
|
||||
service [2345] kill:20 log /test_assets/service.sh
|
||||
File renamed without changes.
+25
-5
@@ -1,8 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
assert_num_children() {
|
||||
assert "$1 services are running" "$(texec pgrep -P 1 "$2" | wc -l)" -eq "$1"
|
||||
}
|
||||
|
||||
texec() {
|
||||
# shellcheck disable=SC2154
|
||||
TESTS_ROOT=. "$TEST_DIR/testenv_exec.sh" "$finit_pid" "$@"
|
||||
"$TEST_DIR/testenv_exec.sh" "$finit_pid" "$@"
|
||||
}
|
||||
|
||||
pause() {
|
||||
@@ -21,7 +25,7 @@ fg_red='\e[1;31m'
|
||||
fg_green='\e[1;32m'
|
||||
fg_yellow='\e[1;33m'
|
||||
log() {
|
||||
printf "< TEST > %b%b%b %s\n" "$1" "$2" "$color_reset" "$3"
|
||||
printf "< $TEST_NAME > %b%b%b %s\n" "$1" "$2" "$color_reset" "$3"
|
||||
}
|
||||
|
||||
assert() {
|
||||
@@ -69,6 +73,11 @@ say() {
|
||||
|
||||
teardown() {
|
||||
test_status="$?"
|
||||
|
||||
if type test_teardown > /dev/null 2>&1 ; then
|
||||
test_teardown
|
||||
fi
|
||||
|
||||
log "$color_reset" '--' ''
|
||||
if [ "$test_status" -eq 0 ]; then
|
||||
log "$fg_green" 'TEST PASS' ''
|
||||
@@ -80,6 +89,7 @@ teardown() {
|
||||
fi
|
||||
|
||||
wait
|
||||
rm -f "$TESTS_ROOT"/running_test.pid
|
||||
}
|
||||
|
||||
trap teardown EXIT
|
||||
@@ -87,12 +97,22 @@ trap teardown EXIT
|
||||
# shellcheck source=/dev/null
|
||||
. "$TESTS_ROOT/../test.env"
|
||||
|
||||
log "$color_reset" 'Test start' ''
|
||||
log "$color_reset" '--' ''
|
||||
TEST_NAME="$(dirname "$0")"
|
||||
TEST_NAME=${TEST_NAME#*/}
|
||||
export TEST_NAME
|
||||
|
||||
# Setup
|
||||
# Setup test environment
|
||||
|
||||
# Setup test environment
|
||||
"$TEST_DIR/testenv_start.sh" finit &
|
||||
finit_ppid=$!
|
||||
echo "$finit_ppid" > "$TESTS_ROOT"/running_test.pid
|
||||
|
||||
>&2 echo "Hint: Execute 'test/testenv_enter.sh' to enter the test namespace"
|
||||
>&2 echo "finit conf '$FINIT_CONF'"
|
||||
>&2 echo "finit_conf dir '$FINIT_RCSD'"
|
||||
log "$color_reset" 'Setup of test environment done' ''
|
||||
|
||||
finit_pid=$(retry "pgrep -P $finit_ppid")
|
||||
|
||||
tty=/dev/$(texec cat /sys/class/tty/console/active)
|
||||
|
||||
@@ -6,18 +6,18 @@ set -eu
|
||||
if [ ! -f "$srcdir"/../config.status ]; then
|
||||
"$srcdir"/../configure --prefix=/
|
||||
make
|
||||
make DESTDIR="$(pwd)/test_root/" install
|
||||
make DESTDIR="$(pwd)/test-root/" install
|
||||
|
||||
mkdir -p test_root/bin
|
||||
cp "${srcdir}/test_root/bin/chrootsetup.sh" test_root/bin
|
||||
cp "${srcdir}/test_root/busybox-x86_64.md5" test_root/
|
||||
cp "${srcdir}/test_root/Makefile" test_root/
|
||||
make -C test_root/
|
||||
mkdir -p test-root/bin
|
||||
cp "${srcdir}/test-root/bin/chrootsetup.sh" test-root/bin
|
||||
cp "${srcdir}/test-root/busybox-x86_64.md5" test-root/
|
||||
cp "${srcdir}/test-root/Makefile" test-root/
|
||||
make -C test-root/
|
||||
config_h='./config.h'
|
||||
echo "export PATH=/bin:/sbin" > test.env
|
||||
else
|
||||
make -C ../ DESTDIR="$(pwd)/test_root/" install
|
||||
FINITBIN=../../src/finit make -C test_root/
|
||||
make -C ../ DESTDIR="$(pwd)/test-root/" install
|
||||
FINITBIN=../../src/finit make -C test-root/
|
||||
config_h='../config.h'
|
||||
echo "export PATH=/bin:/sbin:$PREFIX/sbin:$PREFIX/bin" > test.env
|
||||
fi
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")/..
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/lib.sh"
|
||||
|
||||
test_teardown() {
|
||||
say "Test done $(date)"
|
||||
say "Running test teardown."
|
||||
|
||||
texec rm -f "$FINIT_RCSD/service.conf"
|
||||
texec rm -f /test_assets/service.sh
|
||||
}
|
||||
|
||||
say "Test start $(date)"
|
||||
|
||||
cp "$TEST_DIR"/common/service.sh "$TESTS_ROOT"/test_assets/
|
||||
|
||||
say "Add service stanza in $FINIT_RCSD/service.conf"
|
||||
texec sh -c "echo 'service [2345] kill:20 log /test_assets/service.sh' > $FINIT_RCSD/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'
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")/..
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/lib.sh"
|
||||
|
||||
test_teardown() {
|
||||
say "Test done $(date)"
|
||||
say "Running test teardown."
|
||||
|
||||
texec rm -f "$FINIT_CONF"
|
||||
texec rm -f /test_assets/service.sh
|
||||
}
|
||||
|
||||
say "Test start $(date)"
|
||||
|
||||
cp "$TEST_DIR"/common/service.sh "$TESTS_ROOT"/test_assets/
|
||||
|
||||
say "Add service stanza in $FINIT_CONF"
|
||||
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'
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
if [ -d test-root/var/lock ]; then
|
||||
chmod +r test-root/var/lock
|
||||
fi
|
||||
make -C test-root/ clean
|
||||
rm -f test.env
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
if [ -d test_root/var/lock ]; then
|
||||
chmod +r test_root/var/lock
|
||||
fi
|
||||
make -C test_root/ clean
|
||||
rm -f test.env
|
||||
File renamed without changes.
File renamed without changes.
@@ -17,7 +17,7 @@ mount -n -t tmpfs none /dev
|
||||
mount -t proc none /proc
|
||||
mount -t sysfs none /sys
|
||||
# mount -t tmpfs none /tmp
|
||||
mount -t tmpfs none /etc
|
||||
# mount -t tmpfs none /etc
|
||||
|
||||
# mkdir -p /dev/pts
|
||||
# mount -t devpts none /dev/pts
|
||||
File renamed without changes.
@@ -1,32 +0,0 @@
|
||||
#!/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
|
||||
say 'Set up a service'
|
||||
cp "$TEST_DIR"/test_start_stop_service/service.sh "$TESTS_ROOT"/test_assets/
|
||||
texec sh -c "echo 'service [2345] kill:20 log /test_assets/service.sh' > $FINIT_CONF"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec kill -SIGHUP 1
|
||||
|
||||
retry 'assert_num_children 1 service.sh'
|
||||
|
||||
say 'Remove the service'
|
||||
texec sh -c "echo > $FINIT_CONF"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec kill -SIGHUP 1
|
||||
|
||||
retry 'assert_num_children 0 service.sh'
|
||||
|
||||
# Teardown
|
||||
rm -f "$TESTS_ROOT"/bin/service.sh
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
cmd=""
|
||||
if [ "$#" -lt 1 ]; then
|
||||
cmd="/bin/sh"
|
||||
else
|
||||
cmd=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
PID_FILE=$(dirname "$0")/test-root/running_test.pid
|
||||
|
||||
if [ -f "$PID_FILE" ] ; then
|
||||
target=$(cat "$PID_FILE")
|
||||
target=$(pgrep -P "$target")
|
||||
else
|
||||
echo "No test running!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
"$(dirname "$0")"/testenv_exec.sh "$target" "$cmd" "$@"
|
||||
@@ -11,7 +11,7 @@ target="$1"
|
||||
shift
|
||||
|
||||
TEST_DIR=$(dirname "$0")
|
||||
TESTS_ROOT="${TESTS_ROOT:-$(pwd)/${TEST_DIR}/test_root}"
|
||||
TESTS_ROOT="${TESTS_ROOT:-$(pwd)/${TEST_DIR}/test-root}"
|
||||
|
||||
nsenter=$(command -v nsenter)
|
||||
chroot=$(command -v chroot)
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")
|
||||
TESTS_ROOT="${TESTS_ROOT:-$(pwd)/${TEST_DIR}/test_root}"
|
||||
|
||||
>&2 echo "Hint: Execute '${TEST_DIR}/testenv_exec.sh \$(pgrep -P $$) /bin/sh; reset' to enter the test namespace"
|
||||
TESTS_ROOT="${TESTS_ROOT:-$(pwd)/${TEST_DIR}/test-root}"
|
||||
|
||||
unshare=$(command -v unshare)
|
||||
chroot=$(command -v chroot)
|
||||
|
||||
Reference in new issue
Block a user