Skip to content

Commit

Permalink
test: new, verify that a run task can call initctl
Browse files Browse the repository at this point in the history
Follow-up to #362

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
  • Loading branch information
troglobit committed Sep 10, 2023
1 parent 4701ede commit 443700a
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 5 deletions.
2 changes: 2 additions & 0 deletions test/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ EXTRA_DIST += ready-serv.sh
EXTRA_DIST += restart-self.sh
EXTRA_DIST += runlevel.sh
EXTRA_DIST += run-restart-forever.sh
EXTRA_DIST += run-task-tricks.sh
EXTRA_DIST += start-stop-service.sh
EXTRA_DIST += start-stop-service-sub-config.sh
EXTRA_DIST += start-kill-service.sh
Expand Down Expand Up @@ -77,6 +78,7 @@ TESTS += ready-serv.sh
TESTS += restart-self.sh
TESTS += runlevel.sh
TESTS += run-restart-forever.sh
TESTS += run-task-tricks.sh
TESTS += start-stop-service.sh
TESTS += start-stop-service-sub-config.sh
TESTS += start-kill-service.sh
Expand Down
18 changes: 13 additions & 5 deletions test/lib/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ assert_new_pid()
assert "Finit has registered new PID" "$(texec initctl |grep $1 | awk '{print $1;}')" -eq "$(texec cat $2)"
}

assert_pidiff()
{
assert "PID has changed (old PID $2)" "$(texec initctl |awk -v svc="$1" '$0 ~ svc {print $1}')" -ne "$2"
}

assert_restarts()
{
assert "Finit has registered restarts" "$(texec initctl status "$2" | awk '/Restarts/{print $3;}')" -ge "$1"
Expand Down Expand Up @@ -292,14 +297,17 @@ else
fi

set +u
rm -f "$SYSROOT$FINIT_CONF"
touch "$SYSROOT$FINIT_CONF"

if [ -n "$BOOTSTRAP" ]; then
say "Setting up bootstrap tasks ..."
echo "$BOOTSTRAP" > "$SYSROOT$FINIT_CONF"
say "Setting up bootstrap tasks ..."
echo "$BOOTSTRAP" >> "$SYSROOT$FINIT_CONF"
fi
if [ -n "$RCLOCAL" ]; then
say "Setting up /etc/rc.local ..."
echo "$RCLOCAL" > "$SYSROOT/etc/rc.local"
chmod +x "$SYSROOT/etc/rc.local"
say "Setting up /etc/rc.local ..."
echo "$RCLOCAL" > "$SYSROOT/etc/rc.local"
chmod +x "$SYSROOT/etc/rc.local"
fi
set -u

Expand Down
59 changes: 59 additions & 0 deletions test/run-task-tricks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/bin/sh
#
# Verifies that a run task can call initctl at bootstrap and runlevel 2,
# without blocking, performing serveral tasks:
#
# 1. Query running services
# 2. Stop/Start a running service
# 3. Restart a service
#

TEST_DIR=$(dirname "$0")
#DEBUG=1

# shellcheck disable=SC2034
BOOTSTRAP="run [S] /bin/ready.sh -- Ready steady go\n\
run [S] name:one initctl -- Query status\n\
service [S234] /sbin/service.sh -- Background service\n\
run [2] name:two initctl stop service.sh -- Stopping service\n\
run [3] name:three initctl start service.sh -- Starting service again\n\
run [4] name:four initctl restart service.sh -- Restart service"
# shellcheck disable=SC2034
RCLOCAL="echo \"$0 ==============\" &1>2"

# shellcheck source=/dev/null
. "$TEST_DIR/lib/setup.sh"

test_setup()
{
say "Test start $(date)"
}

test_teardown()
{
say "Test done $(date)"
}

say "$FINIT_CONF:"
run "cat $FINIT_CONF"
say "/etc/rc.local:"
run "cat /etc/rc.local"

say "Waiting for runlevel 2"
sleep 2
assert_status "service.sh" "stopped"

say "Changing to runlevel 3"
run "initctl runlevel 3"
sleep 2
assert_status "service.sh" "running"
run "initctl"
oldpid=$(texec initctl |awk '/service.sh/{print $1}')

say "Changing to runlevel 4"
run "initctl runlevel 4"
sleep 2
assert_status "service.sh" "running"
assert_pidiff "service.sh" "$oldpid"

run "initctl"

0 comments on commit 443700a

Please sign in to comment.