Merge branch 'wip-tests' into wip-tests-build-refactor

Signed-off-by: Jacques de Laval <jacques@de-laval.se>
This commit is contained in:
Jacques de Laval committed 2021-02-24 18:48:26 +01:00
commit 1efdbeda16
28 files changed
+703 -221

No files matched your search

+15 -10
View File
@@ -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
View File
@@ -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'
+36
View File
@@ -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'
+1
View File
@@ -0,0 +1 @@
service [2345] kill:20 log /test_assets/service.sh
File renamed without changes.
+25 -5
View File
@@ -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)
+8 -8
View File
@@ -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
+38
View File
@@ -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'
+38
View File
@@ -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'
+9
View File
@@ -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
-9
View File
@@ -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.
-32
View File
@@ -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
+23
View File
@@ -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" "$@"
+1 -1
View File
@@ -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)
+1 -3
View File
@@ -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)